JP2001005675A - プログラム変換装置及びプロセッサ - Google Patents

プログラム変換装置及びプロセッサ

Info

Publication number
JP2001005675A
JP2001005675A JP11174708A JP17470899A JP2001005675A JP 2001005675 A JP2001005675 A JP 2001005675A JP 11174708 A JP11174708 A JP 11174708A JP 17470899 A JP17470899 A JP 17470899A JP 2001005675 A JP2001005675 A JP 2001005675A
Authority
JP
Japan
Prior art keywords
type
instruction
code
operand
machine language
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.)
Pending
Application number
JP11174708A
Other languages
English (en)
Inventor
Shuichi Takayama
秀一 高山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP11174708A priority Critical patent/JP2001005675A/ja
Priority to US09/595,130 priority patent/US6725450B1/en
Priority to EP00305148A priority patent/EP1065591A3/en
Publication of JP2001005675A publication Critical patent/JP2001005675A/ja
Pending 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/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/447Target code generation

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)【要約】 【課題】 ビット変化の少ない機械語命令列に変換する
プログラム変換装置及びビット変化の少ない機械語命令
列を実行するプロセッサを提供する。 【解決手段】 プログラム変換装置10は、第1種のオ
ペレーションコードを記憶する第1記憶部12と第1種
のオペレーションコードと同じ命令内容であって異なる
ビットパターンをもつ第2種のオペレーションコードを
記憶する第2記憶部13とを備え、変換部15が第1記
憶部12と第2記憶部13とから第1種オペレーション
コードと第2種オペレーションコードとのいずれかを選
択して用いることにより、プログラムを機械語命令列に
おける列方向のビット変化が少ない機械語命令列に変換
して機械語命令列記憶部14に格納する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラムを機械
語命令列に変換するプログラム変換装置、及びプログラ
ム変換装置により変換された機械語命令列を解読、実行
するプロセッサに関する。
【0002】
【従来の技術】プログラム変換装置は、高級言語やアセ
ンブリ言語等のプログラミング言語の命令と機械語命令
とを対応させた命令セットを有し、外部より上記プログ
ラミング言語で記述されたプログラムが入力されると、
命令セットを用いてプログラムを機械語命令列に変換す
る。
【0003】またプロセッサは、上記機械語命令列をR
OMに記憶し、ROMから命令レジスタへと機械語命令
単位で読み出して逐次解読し、解読結果に従ってALU
やレジスタ等の各構成要素を動作させる。
【0004】
【発明が解決しようとする課題】ところで上記プロセッ
サにおいては、ROMから命令レジスタへと機械語命令
が読み出される際に、各バスを通過するビット値が0か
ら1または1から0に変化する部分において電力を消費
する。よって機械語命令列における同一桁のビット変化
の量に比例してプロセッサにおける電力消費量は大きく
なる。ゆえに機械語命令列における同一桁のビット変化
の量は少ないほど電力消費量を削減することができるの
であるが、従来のプログラム変換装置により変換される
機械語命令列は、ビット変化の量が多く、そのため電力
消費量が大きいという問題があった。
【0005】上記問題に鑑みて、本発明はビット変化の
少ない機械語命令列に変換するプログラム変換装置及び
機械語命令列を実行するプロセッサを提供することを目
的とする。
【0006】
【課題を解決するための手段】上記問題を解決するた
め、本発明のプログラム変換装置は、第1種の命令と、
第1種の命令と同じ命令内容であって異なるビットパタ
ーンをもつ第2種の命令とを含む命令群を実行するプロ
セッサを対象として、プログラムを機械語命令列に変換
するプログラム変換装置であって、前後する命令間で同
一桁のビット変化を少なくするように、第1種の命令と
第2種の命令とを選択的に用いてプログラムを機械語命
令列に変換するよう構成される。
【0007】また、前記プログラム変換装置は、第1種
オペレーションコードを記憶する第1記憶手段と、第1
種オペレーションコードと同じ命令内容であって異なる
ビットパターンをもつ第2種オペレーションコードを記
憶する第2記憶手段と、第1種オペレーションコードと
第2種オペレーションコードとを選択的に用いることに
より、機械語命令列における同一桁のビット変化が少な
くなるようにプログラムの変換を行う変換手段とを備え
る。
【0008】前記変換手段は、前記プログラムに応じて
前記第1記憶手段及び第2記憶手段から第1種オペレー
ションコード及び第2種オペレーションコードを順次に
読み出す読み出し手段と、前記読み出し手段により読み
出された前記第1種オペレーションコード及び第2種オ
ペレーションコードのうちの1つを順次に選択する選択
手段とを備え、前記選択手段は、前記読出し手段により
読み出された第1種オペレーションコード及び第2種オ
ペレーションコードのうち、それらが読み出される直前
に選択されたオペレーションコードと前記第1種オペレ
ーションコード及び第2種オペレーションコードとの間
における同一桁のビット変化が少ない方のオペレーショ
ンコードを選択するよう構成される。
【0009】前記選択手段は、直前に選択したオペレー
ションコードを保持する保持手段と、前記読出し手段に
より読み出された第1種オペレーションコード及び第2
種オペレーションコードそれぞれと前記保持手段により
保持されるオペレーションコードとの間におけるハミン
グ距離をそれぞれ算出する算出手段と、前記算出手段に
よる2つの算出結果の値のうちどちらが小さいかを判定
する判定手段と、判定手段により小さいと判定された方
のオペレーションコードを選択する選択部とを備える。
【0010】また、前記変換手段は、前記プログラムに
応じて前記第1及び第2記憶手段から第1種及び第2種
のオペレーションコードを読み出す読み出し手段と、読
み出された第1種及び第2種のオペレーションコードを
択一的に組み合わせることにより前記プログラムに対応
するオペレーションコード列の候補を複数作成する作成
手段と、前記作成手段により作成された複数の候補のう
ち同一桁のビット変化が少ない候補を選択する選択手段
とを備える。
【0011】前記選択手段は、前記作成手段により作成
されたオペレーションコード列の候補毎にオペレーショ
ンコード間のハミング距離の合計を算出する算出手段
と、前記算出手段による合計結果の値のうちいずれが小
さいかを判定する判定手段とを備え、前記判定手段によ
り小さいと判定された候補を選択するよう構成される。
前記プログラム変換装置は、プログラムに基づいて機械
語命令列を構成する機械語命令に順次変換する変換手段
と、変換手段により変換された機械語命令のうち、ソー
スフィールドとデスティネーションフィールドとを有す
る2つの連続する機械語命令毎に、その一方に対してソ
ースフィールドの内容とデスティネーションフィールド
の内容とを交換する交換手段とを備える。
【0012】また、前記変換手段は、固定語長の機械語
命令を変換し、前記交換手段は、ソースフィールド及び
デスティネーションフィールドの少なくとも一方にレジ
スタ番号を指定する2つの連続する機械語命令を検出
し、検出された一方の機械語命令に対して前記交換を行
うよう構成される。前記プログラム変換装置は、第1種
オペランドコードを記憶する第1記憶手段と、第1種オ
ペランドコードと同じリソースを示し異なるビットパタ
ーンをもつ第2種オペランドコードを記憶する第2記憶
手段と、第1種オペランドコードと第2種オペランドコ
ードとを選択的に用いることにより、機械語命令列にお
ける同一桁のビット変化が少なくなるようにプログラム
の変換を行う変換手段とを備える。
【0013】前記変換手段は、前記プログラムに応じて
前記第1記憶手段及び第2記憶手段から第1種オペラン
ドコード及び第2種オペランドコードを順次に読み出す
読み出し手段と、前記読み出し手段により読み出された
前記第1種オペランドコード及び第2種オペランドコー
ドのうちの1つを順次に選択する選択手段とを備え、前
記選択手段は、前記読出し手段により読み出された第1
種オペランドコード及び第2種オペランドコードのう
ち、それらが読み出される直前に選択されたオペランド
コードと前記第1種オペランドコード及び第2種オペラ
ンドコードとの間における同一桁のビット変化が少ない
方のオペランドコードを選択するよう構成される。
【0014】本発明のプロセッサは、第1種の機械語命
令と、第1種の機械語命令と同じ語長であり同じ命令内
容であって異なるビットパターンをもつ第2種の機械語
命令とが混在するプログラムを記憶するメモリから機械
語命令を順次読み出す読み出し手段と、読み出された機
械語命令のうち第1種の機械語命令を解読する第1解読
手段と、読み出された機械語命令のうち第2種の機械語
命令を解読する第2解読手段と、第1命令解読手段及び
第2命令解読手段の解読結果に従って命令を実行する実
行手段とを備える。
【0015】前記第1種及び第2種の機械語命令は第1
種か第2種かを識別するための識別ビットを有し、前記
第1、第2解読手段は、読み出し手段により読み出され
た機械語命令の識別ビットにより第1種か第2種かを判
別して解読するよう構成される。また、前記第1種及び
第2種の機械語命令はプログラム中に交互に配置され、
前記第1、第2解読手段は、読み出し手段により読み出
された機械語命令のアドレスに基づいて第1種か第2種
かを判別して解読するよう構成される。
【0016】また、前記第1種及び第2種の機械語命令
は、互いに異なるオペレーションコードと、同一のオペ
ランドコードとからなり、前記第1及び第2解読手段
は、第1種、第2種の機械語命令のオペレーションコー
ドをそれぞれ解読する第1、第2オペレーション解読部
と、オペランドコードを共通に解読するオペランド解読
部とを備える。
【0017】
【発明の実施の形態】<第1実施形態> <プログラム変換装置>以下に第1実施形態におけるプ
ログラム変換装置について図面を用いて説明する。 <プログラム変換装置の構成>図1は、第1実施形態に
おけるプログラム変換装置のハードウェア構成を示す。
【0018】同図に示すようにプログラム変換装置10
は、CPU2、メモリ3、ハードディスク4、ディスプ
レイ5、キーボード6等を備える汎用のコンピュータ上
で、メモリ3に記憶されたソフトウェア、すなわち図2
に示す機能を実現するソフトウェアをCPU2が実行す
ることにより実現される。図2は、プログラム変換装置
10の構成を機能的に示した機能ブロック図である。
【0019】同図においてプログラム変換装置10は、
プログラム記憶部11、第1記憶部12、第2記憶部1
3、機械語命令列記憶部14、変換部15から構成さ
れ、外部より入力されるプログラムを、前後の機械語命
令間のハミング距離が短い機械語命令列に変換する。こ
こにおいてハミング距離とは、2つのビット・パターン
の同一桁を比較したときに値が異なっているビットの数
のことである。例えば、「10011」と「1010
1」との間のハミング距離は、各同一桁を比較すると左
から3ビット目と4ビット目が異なっているので、2で
ある。またここにおいてプログラムは、アセンブリ言語
で記述されているものとする。
【0020】プログラム記憶部11は、変換対象のプロ
グラムを記憶する。図3にプログラム記憶部11が記憶
するプログラムの一例を示す。同図に示すようにプログ
ラムは、アセンブリ言語による命令が記述されている。
1つの命令は、1つのオペレーションと2つのオペラン
ドから構成されるものと、オペレーションと飛び先を示
すラベルとから構成されるもの等がある。
【0021】ここでオペレーションは命令操作を示す。
同図においては「MOV」、「CMP」、「BEQ」等
がオペレーションである。オペランドは、命令操作の対
象となる数値やレジスタを示す。同図においてRn(n=
0,1,2,3,...)がオペランドであり、これらはレジスタ
を示す。1つの命令において、1番目のオペランドはソ
ース・オペランド、2番目のオペランドはデスティネー
ション・オペランドである。例えば、「MOV R1,
R2」においては、「MOV」がオペレーション、「R
1」がソース・オペランド、「R2」がデスティネーシ
ョン・オペランドである。この命令は、レジスタR1の
値をレジスタR2に転送するという操作を表わす。
【0022】ラベルは、次に実行すべき命令の飛び先ま
たは飛び先の命令の行先を示す。同図においては「L」
がラベルである。図4に図2のプログラム中の各命令に
ついて簡単に説明しておく。第1記憶部12は、オペレ
ーションと機械語のオペレーションコード(以下オペコ
ードという)とを対応させて記憶する。以下、機械語の
オペレーションコードをオペコードと省略する。
【0023】第2記憶部13は、第1記憶部12に記憶
されているものと同じオペレーションと第1記憶部12
に記憶されるオペコードとは異なるビットパターンのオ
ペコードとを対応させて記憶する。以下第1記憶部12
に記憶されるオペコードを第1種オペコード、第2記憶
部13に記憶されるオペコードを第2種オペコードと呼
んで区別する。第1種オペコード及び第2種オペコード
はともに12ビットであるものとする。
【0024】図5は、オペレーションと第1種オペコー
ドと第2種オペコードとの対応関係の具体例を示す。同
図において1列目31はオペレーションを示す。2列目
32は1列目31のオペレーションに対応する第1種オ
ペコードを示す。3列目33は1列目31のオペレーシ
ョンに対応する第2種オペコードを示す。同図からわか
るように同一のオペレーションを表わす第1種オペコー
ドと第2種オペコードとは互いに異なるビット・パター
ンである。第1記憶部12は、1列目31に示すオペレ
ーションと2列目32に示す第1種オペコードとを対応
させて記憶し、第2記憶部13は、1列目31に示すオ
ペレーションと3列目33に示す第2種オペコードとを
対応させて記憶する。
【0025】機械語命令列記憶部14は、変換部15に
より変換された機械語命令列を蓄積記憶する。図6は、
機械語命令列記憶部14が最終的に記憶する機械語命令
列の一例を示す図であり、図3に示したプログラムと対
応させて表記している。ただし同図においてプログラム
中のオペランドに対応する機械語命令列中のオペランド
コードの表記は、ビット・パターンによる表記を省略し
て、プログラム中のオペランドと同じ表記にしている。
実際にはオペランドコードは、例えば5ビットのビット
・パターンで表わされる。よって例えば「R0、R1」
は「R0」が「00000」、「R1」が「0001
0」と表わされる。
【0026】同図に示すようにアセンブリ言語の命令と
機械語命令とは一対一で対応している。また図6の機械
語命令列は、前後の機械語命令間のハミング距離が短く
なるように、第1種オペコード及び第2種オペコードが
択一的に用いられて構成されている。変換部15は、プ
ログラムの先頭から1命令ずつ命令を読み出して順次に
対応する機械語命令に変換し、機械語命令列記憶部14
に格納する。これによって機械語命令列記憶部14には
機械語命令が順次蓄積され、最終的にはプログラムに対
応する機械語命令列が蓄積される。
【0027】より具体的には変換部15は、オペレーシ
ョンからオペコードへの変換とオペランドからオペラン
ドコードへの変換を別々に行う。オペコードへの変換の
際、変換部15は、まず第1記憶部12と第2記憶部1
3とからオペレーションに対応する第1種オペコードと
第2種オペコードを読み出して、それらオペコードのう
ちから、前後のオペコード間のハミング距離が短くなる
方を選択する。 <変換部15の詳細構成>図7は、変換部15のより詳
細な構成を示すブロック図である。
【0028】同図において変換部15は、命令読み出し
部151、オペコード読み出し部152、選択部15
3、レジスタ変換部154より構成される。命令読み出
し部151は、プログラム記憶部11より1命令ずつ命
令を読み出し、読み出した命令をオペレーションとオペ
ランドとに分け、オペレーションをオペコード読み出し
部152に出力し、オペランドをレジスタ変換部154
に出力する。
【0029】例えばプログラム記憶部11が図3に示す
プログラムを記憶している場合、命令読み出し部151
はまず「MOV R1、R2」、次に「CMP R1、
R2」という具合に順次に命令を読み出す。読み出しと
並行して命令読み出し部151は、最初に読み出した
「MOV R0、R1」のオペレーション「MOV」を
オペコード読み出し部152に出力し、オペランド「R
0、R1」をレジスタ変換部154に出力する。また命
令読み出し部151は、その次に読み出した「CMP
R1、R2」も同様にして、オペレーション「CMP」
をオペコード読み出し部152に出力し、オペランド
「R1、R2」をレジスタ変換部154に出力する。
【0030】オペコード読み出し部152は、命令読み
出し部151よりオペレーションが出力されると、第1
記憶部12及び第2記憶部13から当該オペレーション
に対応する第1種オペコードと第2種オペコードとを読
み出す。オペコード読み出し部152は、読み出した第
1種オペコードと第2種オペコードとを選択部153に
出力する。例えば、オペコード読出し部152は、命令
読出し部151より「MOV」が出力されると、それに
対応する第1種及び第2種オペコードとして、第1記憶
部12より「111000000001」を読出し、第
2記憶部13より「101000000000」を読み
出し(図5参照)、それらを選択部153に出力する。
【0031】選択部153は、オペコード読み出し部1
52から第1種オペコードと第2種オペコードが出力さ
れると、それら2つのうち、1つ前に選択したオペコー
ド、つまり直前の命令のオペコードとのハミング距離が
短い方を選択して機械語命令列記憶部14に格納する。
ただし選択部153は、プログラムの先頭命令のオペレ
ーションに対応するオペコードについては常に第2種オ
ペコード(又は常に第1種オペコード)を選択するもの
とする。また選択部153は、第1種及び第2種オペコ
ードそれぞれと1つ前に選択したオペコードとのハミン
グ距離が両方とも同じである場合には、第2種オペコー
ド(又は第1種オペコード)を選択するものとする。
【0032】レジスタ変換部154は、命令読み出し部
151よりオペランド又はラベルが入力されると、レジ
スタ番号を示す2進数に、又はラベルに対応する2進数
に変換する。レジスタ変換部154は、機械語命令列記
憶部14に変換後の2進数のオペランドコード又はラベ
ルをオペコードと対応させて格納する。 <選択部153の詳細構成>図8は、選択部153のよ
り詳細な構成を示す。
【0033】選択部153は、候補保持部1531、前
オペコード保持部1532、算出部1533、判定部1
534、セレクタ1535を有する。候補保持部153
1は、オペコード2つ分を保持するバッファを有し、オ
ペコード読み出し部152から出力された第1種オペコ
ードと第2種オペコードとを保持する。候補保持部15
31は、オペコード読出し部152より新しく第1種オ
ペコード及び第2種オペコードが入力される度に、バッ
ファの内容を新しく入力された第1種オペコード及び第
2種オペコードに更新する。
【0034】前オペコード保持部1532は、オペコー
ド1つ分を保持するためのバッファを有し、候補保持部
1531よりセレクタ1535を介して入力される1つ
のオペコードを保持する。前オペコード保持部1532
が保持するオペコードは、候補保持部1531が保持す
る第1種及び第2種オペコードの命令の1つ前の命令の
オペコードである。前オペコード保持部1532は、新
しくオペコードが入力される度に、バッファの内容を新
しく入力されるオペコードに更新する。以下、前オペコ
ード保持部1532が保持しているオペコードを前オペ
コードということとする。
【0035】算出部1533は、候補保持部1531に
保持される第1種オペコードと前オペコードとのハミン
グ距離d1を算出し、また第2種オペコードと前オペコ
ードとのハミング距離d2を算出する。算出部1533
は、算出したハミング距離d1、d2を判定部1534
に出力する。判定部1534は、ハミング距離d1、d
2とを比較することによってどちらのハミング距離が短
いかを判定する。判定部1534は、判定結果をセレク
ト信号に変えてセレクタ1535に出力する。セレクト
信号は、ハミング距離d1がd2より短い場合0、ハミ
ング距離d2がd1より短い場合1である。なおハミン
グ距離d1とd2が等しい場合、セレクト信号は0(1
でもよい)とする。
【0036】セレクタ1535は、判定部1534のセ
レクト信号に従って、候補保持部1531に保持される
第1種オペコードと第2種オペコードのうちのいずれか
一方を選択して機械語命令記憶部14及び前オペコード
保持部1532に出力する。詳しくは、セレクタ153
5は、セレクト信号が0のとき第1種オペコードを選択
し、セレクト信号が1のとき第2種オペコードを選択す
る。
【0037】このようにして選択部153は、第1種オ
ペコードと第2種オペコードから各機械語命令間のオペ
コード部分のハミング距離を短くするオペコードを選択
して機械語命令列記憶部14に順次格納する。 <動作説明>以上のように構成されるプログラム変換装
置10について以下にその動作を説明する。
【0038】図9は、プログラム変換装置10の処理手
順を表わすフローチャートである。同図のフローチャー
トを用いて図6に示すプログラムから機械語命令列に変
換する場合の動作を説明する。命令読み出し部151
は、プログラム記憶部11からプログラムの先頭命令で
ある「MOV R1,R2」を読み出す(ステップ9
0)。そして命令読み出し部151は、オペレーション
「MOV」をオペコード読み出し部152に出力し、オ
ペランド「R0、R1」をレジスタ変換部154に出力
する。ここでレジスタ変換部154に出力されたオペラ
ンド「R0、R1」は、レジスタ変換部154によって
オペランドコードに変換される。レジスタ変換部154
の処理手順は、従来技術と同様で良いのでフローチャー
トによる説明を省略する。
【0039】オペコード読み出し部152及び選択部1
53は、オペレーション「MOV」を第2種オペコード
「101000000000」に変換する(ステップ9
1)。選択部153においては、セレクタ1535を介
して第2種オペコード「10100000000」が前
オペコード保持部1532と機械語命令列記憶部14と
に出力される(ステップ92)。この出力に続いて、レ
ジスタ変換部154は変換したオペランドコード又はラ
ベルを機械語命令列記憶部14に格納する。
【0040】命令読み出し部151は、プログラム記憶
部11より次の命令である「CMPR1,R2」を読み
出す(ステップ93)。そして命令読み出し部151
は、オペレーション「CMP」をオペコード読み出し部
152に出力し、オペランド「R1、R2」をレジスタ
変換部154に出力する。レジスタ変換部154に出力
されたオペランド「R1、R2」は、レジスタ変換部1
54によってオペランドコードに変換される。
【0041】オペコード読み出し部152は、第1記憶
部12及び第2記憶部13より「CMP」に対応する第
1種オペコード「101000000001」及び第2
種オペコード「111000000000」を読み出し
て選択部153に出力する(ステップ94)。これらの
第1種オペコード及び第2種オペコードは、選択部15
3の候補保持部1531に保持される。
【0042】選択部153において算出部1533は、
第1種オペコード「101000000001」(CM
P)と前オペコード保持部1532に記憶されるオペコ
ード「101000000000」(MOV)とからハ
ミング距離d1、第2種オペコード「11100000
0000」(CMP)とオペコード「10100000
0000」(MOV)とからハミング距離d2を算出す
る(ステップ95)。この場合、ハミング距離d1は1
であり、ハミング距離d2も1である。
【0043】続いて判定部1534は、ハミング距離d
1とd2との大小判定を行う(ステップ96)。判定の
結果、ハミング距離d1=d2なので、判定部1534
はセレクタ信号0をセレクタ1532に出力する。その
結果、セレクタ1535は、第1種オペコード「101
000000001」(CMP)を前オペコード保持部
1532と機械語命令列記憶部14とに出力する(ステ
ップ97)。
【0044】ステップ96及び98においては、d1=
d2及びd1<d2の場合は第1種オペコード、d1>
d2の場合は第2種オペコードというようにハミング距
離の短くなる方が選択されて前オペコード保持部153
2と機械語命令列記憶部14とに出力される。以上のよ
うにして変換部15においては、命令読み出し部151
が読み出す命令がなくなるまで、すなわち全ての命令の
変換が完了するまで命令を機械語命令に順次変換すると
いう処理が繰り返される(ステップ99)。
【0045】このようにプログラム変換装置10は、連
続する2つの機械語命令のオペコード間のハミング距離
が短くなるようにプログラムから機械語命令列に変換す
る。これにより機械語命令列は、機械語命令間における
ハミング距離が短くなる。この機械語命令列を実行する
プロセッサは、プログラムメモリから機械語命令を読み
出す際の命令バスの電流変化が少なくなるので、結果と
して消費電力を小さくできるという効果がある。 <第2実施形態> <プログラム変換装置>以下に本発明の第2実施形態に
おけるプログラム変換装置について説明する。
【0046】図11は、第2実施形態におけるプログラ
ム変換装置の構成を機能的に示した機能ブロック図であ
る。同図においてプログラム変換装置20は、プログラ
ム記憶部11、第1記憶部12、第2記憶部13、機械
語命令列記憶部14、変換部25から構成される。同図
のプログラム変換装置20は、変換部15の代わりに変
換部25を備える点が第1実施形態とは異なっている。
【0047】変換部25は、命令読出し部151、オペ
コード読出し部152、候補作成部253、選択部25
4、レジスタ変換部154から構成される。変換部25
は、図7の選択部153の代わりに候補作成部253と
選択部254とを備える点が第1実施形態とは異なって
いる。以下、異なる点を中心に説明する。候補作成部2
53は、オペコード読み出し部152より読み出されて
出力される第1種オペコード及び第2種オペコードを候
補作成部253の内部メモリに保持し、それらを択一的
に組み合わせることによりプログラムのオペレーション
列に対応するオペコード列の候補を複数作成する。
【0048】図12は、候補作成部253の内部メモリ
の記憶内容をプログラムのオペレーション列と対応させ
て表記している。列1203は、図3に示したプログラ
ムのオペレーション部分を示す。列1200は、オペレ
ーションの識別番号を示す。列1201は列1203の
オペレーションに対応する第1種オペコードを示し、列
1202は第2種オペコードを示す。候補作成部253
の内部メモリは、列1200、1201、1202に示
す識別番号と第1種オペコードと第2種オペコードと対
応させて記憶する。
【0049】候補作成部253は、内部メモリに記憶さ
れる第1種オペコード及び第2種オペコードを択一的に
組み合わせてオペコード列の候補を複数作成する。図1
3は、候補作成部253が第1種及び第2種オペコード
を組み合わせる場合の組合せ方の一例を示す。図13に
おいて列1300は、識別番号を示し、図12の識別番
号と対応している。列1301、2、3、...は、オペ
コード列の候補の組み合わせ論理を示す。同列において
「1」と「2」はそれぞれ第1種オペコードと第2種オ
ペコードとを示す。例えば列1031は、候補作成部2
53が列1301の候補1に示す組合せ論理によってオ
ペコード列の候補を全て第1種オペコードから構成する
ことを示す。また列1302は、候補作成部253が、
列1302の候補2に示す組合せ論理により、識別番号
1〜5は第1種オペコード、識別番号6は第2種オペコ
ードを用いてオペコード列の候補を構成することを示
す。
【0050】このようにして候補作成部253は、複数
のオペコード列の候補を作成する。ここで候補作成部2
53が作成する候補の数は、例えば最大20通りという
ように予めさだめておいてもよいし、全ての組合せの候
補を作成するようにしてもよい。選択部254は、候補
作成部253により作成されるオペコード列の候補のう
ち列方向のビット変化の数が少ない候補を選択して、そ
の候補を機械語命令列記憶部14に格納する。
【0051】図14は、選択部254の処理手順を示す
フローチャートである。選択部254は、候補1のオペ
コード列のハミング距離の合計d1を算出する(ステッ
プ1401)。以下この合計を総ハミング距離という。
選択部254は総ハミング距離d1をdとして記憶する
(ステップ1402)。次に選択部254は、候補2の
オペコード列の総ハミング距離d2を算出する(ステッ
プ1404)。選択部254は、総ハミング距離d2と
d1の大小を判定し、d2がd1よりも小さければd2
をdとして記憶する。またこのとき候補番号をNとして
記憶する。(ステップ1405、1406)。
【0052】このようにして選択部254は、複数の候
補についてオペコード列の総ハミング距離の算出と大小
判定とを行い、最終的には候補Nのオペコード列、つま
り総ハミング距離が最も短いオペコード列を機械語命令
列記憶部14に格納する(ステップ1408)。以上の
ようにしてプログラム変換装置20は、第1種オペコー
ド及び第2種オペコードを択一的に用いてプログラムに
対応するオペコード列の候補を複数作成し、それら候補
の中から同一桁のビット変化が最も少ない候補をプログ
ラムのオペレーション列に対応するオペコード列として
選択する。これにより機械語命令列も同一桁のビット変
化が少なくなるので、この機械語命令列を実行するプロ
セッサは、プログラムメモリから機械語命令を読み出す
際に命令バスの電流変化が少なくなり、消費電力を小さ
くできるという効果がある。 <第3実施形態> <プログラム変換装置>以下に第3実施形態におけるプ
ログラム変換装置について説明する。
【0053】本実施形態におけるプログラム変換装置
は、同じレジスタ番号を示し、互いに異なる2種類のオ
ペランドコードを選択的に用いることにより、機械語命
令列における同一桁のビット変化が少なくなるように構
成されている。図15は、第3実施形態におけるプログ
ラム変換装置の機能ブロック図である。
【0054】同図においてプログラム変換装置30は、
プログラム記憶部11、第1記憶部32、第2記憶部3
3、機械語命令列記憶部14、変換部35より構成され
る。また変換部35は、命令読出し部351、オペラン
ドコード読出し部352、選択部353、オペコード変
換部354から構成される。同図において第1実施形態
の構成要素と同じ符号のものについては同じであるので
説明を省略し、以下異なる構成要素について説明する。
【0055】第1記憶部32は、レジスタ番号とオペラ
ンドコードとを対応させて記憶する。以下ここに記憶さ
れるオペランドコードを第1種オペランドコードと呼ぶ
こととする。第2記憶部33は、レジスタ番号に対応
し、第1種オペランドコードとはビットパターンの異な
るオペランドコードを記憶する。以下このオペランドコ
ードを以下第2種オペランドコードと呼ぶ。
【0056】命令読出し部351は、プログラム記憶部
11より1命令ずつ命令を読出し読み出した命令のオペ
レーションをオペコード変換部354に出力し、オペラ
ンドをオペランドコード読出し部352に出力する。オ
ペランドコード読出し部352は、命令読出し部351
からオペランドが出力されると、第1記憶部32及び第
2記憶部33からオペランドに対応する第1種オペラン
ドコードと第2種オペランドコードを読み出す。オペラ
ンドコード読出し部352は読出した命令のオペレーシ
ョンをオペコード変換部354に出力し、オペランドを
オペランドコード読出し部352に出力する。
【0057】選択部353は、オペランドコード読出し
部352から第1種及び第2種オペランドコードが出力
されると、1つ前に選択したオペランドコードとのハミ
ング距離が短い方を選択して機械語命令列記憶部14に
出力する。オペランドコード読み出し部352と選択部
353とは、1命令につき2つ以上のオペランドが含ま
れている命令については、オペランドの個数分に対応し
て上記の処理を行う。
【0058】オペコード変換部354は、内部にオペレ
ーションとオペコードとを対応させたテーブルを有し、
そのテーブルを参照することによって、命令読出し部3
52より入力されるオペレーションを対応するオペコー
ドに変換して機械語命令列記憶部14に出力する。 <選択部353の詳細構成>図16は、選択部353の
より詳細な構成を示す。
【0059】同図において選択部353は、候補保持部
3531、前オペランドコード保持部3532、算出部
3533、判定部3534、セレクタ3535から構成
される。候補保持部3531は、オペランドコード読出
し部352より出力される第1種及び第2種オペランド
コードを保持する。
【0060】前オペランドコード保持部3532は、オ
ペランドコードを保持するためのバッファを1つ有し、
候補保持部3531よりセレクタ3535を介して入力
される1つのオペランドコードを保持する。前オペラン
ドコード保持部3532は、オペランドコードが入力さ
れる度にバッファの内容を新しいオペランドコードに更
新する。以下オペランドコード保持部3532が保持し
ているオペランドコードを前オペランドコードと呼ぶこ
ととする。
【0061】算出部3533は、候補保持部3531に
保持される第2種オペランドコードと前オペコードとの
ハミング距離d1を算出し、また第1種オペランドコー
ドと前オペコードとのハミング距離d2を算出する。算
出部3533は、算出したハミング距離d1、d2を判
定部3534に出力する。判定部3534は、算出部3
533よりハミング距離d1、d2が出力されると、ど
ちらのハミング距離が短いかを判定する。判定部353
4は、判定結果をセレクト信号に変換してセレクタ35
35に出力する。セレクト信号は、ハミング距離d1が
d2より短い場合0、ハミング距離d2がd1より短い
場合1である。なおハミング距離d1とd2が等しい場
合、セレクト信号は0(1でもよい)とする。
【0062】セレクタ3535は、判定部3534のセ
レクト信号にしたがって、候補保持部3531に保持さ
れる第1種オペランドコードと第2種オペランドコード
のうちハミング距離が短くなる方を機械語命令列記憶部
14に格納する。詳しくは、セレクタ3535は、セレ
クト信号が0のとき第1種オペランドコードを機械語命
令列記憶部14に格納し、セレクト信号が1のとき第2
種オペランドコードを機械語命令列記憶部14に格納す
る。
【0063】このようにして選択部353は、第2種オ
ペランドコードと第2種オペランドコードから機械語命
令列の各機械語命令間のハミング距離を短くするオペラ
ンドコードを選択して機械語命令列記憶部14に順次格
納する。以上のようにしてプログラム変換装置30は、
連続する2つの機械語命令のオペランドコード間のハミ
ング距離が短くなるようにプログラムから機械語命令に
変換する。これにより機械語命令列は、機械語命令間の
同一桁のビット変化が少なくなる。この機械語命令列を
実行するプロセッサは、プログラムメモ襟から機械語命
令列を読み出す際に命令バスの電流変化が少なくなり、
消費電力を小さくできるという効果がある。 <第4実施形態> <プログラム変換装置>図17は、第4実施形態におけ
るプログラム変換装置の構成を機能的に示す図である。
【0064】同図においてプログラム変換装置40は、
オペコード読み出し部152の代わりにオペコード読み
出し部191を備え、レジスタ変換部154と機械語命
令列記憶部14との間に交換部192を備える点が図7
のプログラム変換装置10とは異なっている。オペコー
ド読み出し部191は、オペコード読み出し部152の
機能に加えて、ソースオペランドとデスティネーション
オペランドとを有するアセンブリ命令のオペレーション
を検出して交換部192に通知する機能を有する。詳し
くはオペコード読み出し部191は、図19に示すよう
にソースオペランドとデスティネーションオペランドと
を有する命令のオペレーション群を予め記憶する。そし
てオペコード読み出し部191は、命令読み出し部15
1より出力されるオペレーションが前記オペレーション
群に合致する場合には、交換部192に検出信号を出力
する。
【0065】例えば図20のプログラムを例に説明する
と、このプログラムのオペレーションは、全てオペレー
ション群に合致するので、命令読み出し部151よりオ
ペレーションが出力される度に交換部192に検出信号
を出力する。交換部192は、オペコード読み出し部1
91より検出信号が入力される1回おきに、すなわち入
力2回につき1回毎に、そのときレジスタ変換部154
より入力される2つのオペランドコードについてソース
オペランドとデスティネーションオペランドの入れ替え
を行って機械語命令列記憶部14にオペコードと対応さ
せて格納する。
【0066】図20を例に説明すると交換部192は、
検出信号が入力されるとその検出信号の入力の1つおき
に、つまり2行目「CMP」、4行目「ADD」に対応
するオペランド「R1,R2」、「R3,R4」に対応
するオペランドコードについてソースオペランドととデ
スティネーションオペランドの入れ替えを行う。詳しく
は「R1,R2」、「R3,R4」がそれぞれ「000
01 00010」、「00011 00100」と表
わされる場合、入れ替えによってそれぞれ「00010
00001」、「00100 00011」となる。
【0067】交換部192は、入れ替えを行わない場合
にはレジスタ変換部154より入力されるオペランドコ
ードをそのまま機械語命令列記憶部14に格納する。図
21の列2201は、機械語命令列記憶部14に格納さ
れる機械語命令列のオペランドコード部分を示す。同図
の列2202は、入れ替えを行わなかった場合のオペラ
ンドコード部分を示す。列2201、2202のハミン
グ距離の合計は、それぞれ6、14であり、明らかに列
2201の方が列2202よりも同一桁のビット変化が
少ないことがわかる。
【0068】以上のようにしてプログラム変換装置40
は、オペコード列の同一桁のビット変化が少なくなるよ
うに構成されているだけでなく、オペランドの同一桁の
ビット変化が少なくなるようにオペランドの入れ替えを
行うようにも構成されている。よってこのプログラム変
換装置40によって変換された機械語命令列を実行する
プロセッサは、プログラムメモリからオペコードとオペ
ランドを読み出す際に命令バスの電流変化が少なくなる
ので、消費電力を小さくできるという効果がある。 <第5実施形態> <プロセッサ>次に、第1種オペコードと第2種オペコ
ードとが混在する機械語命令列を解読実行するプロセッ
サについて説明する。
【0069】図18は、本実施形態に係るプロセッサの
構成を示すブロック図である。同図においてプロセッサ
50は、ROM81、プログラムカウンタ(以下PCと
省略する)82、命令レジスタ83、第1解読部84、
第2解読部85、制御部86、ALU87、レジスタ8
8から構成される。またプロセッサ50は、命令バス8
9、バス90、バス91を有する。
【0070】ROM81は、機械語命令列を記憶する。
この機械語命令列は、第1種オペコードを含む機械語命
令と第2種オペコードを含む機械語命令とが混在する。
第1種オペコードと第2種オペコードとは同じ語長であ
る。PC82は、ROM81から次に読み出されるべき
機械語命令のアドレスを指す。
【0071】命令レジスタ83は、PC82が指すアド
レスの機械語命令がROM81より命令バス89を介し
て読み出されて格納される。第1解読部84は、命令レ
ジスタ83に格納されている機械語命令のオペコードが
第1種オペコードである場合その機械語命令を解読す
る。第2解読部85は、命令レジスタ83に格納されて
いる機械語命令のオペコードが第2種オペコードである
場合その機械語命令を解読する。
【0072】第1解読部84及び第2解読部85は、同
じオペレーションのオペコードに対して同じ解読結果を
出すものとする。制御部86は、第2解読部84および
第2解読部85の解読結果に従って命令を実行する。A
LU87は、制御部86からの制御の下に算術論理演算
を行う。
【0073】レジスタ88は、複数の32ビットレジス
タを有し、制御部86により使用される。図22は、図
10に示した機械語命令列のオペコードの部分と命令バ
ス89とビット変化の関係を示す。命令バス89は、3
2本のバスからなる。同図において機械語命令列のオペ
コードは、32本のバスのうち1番から12番のバスを
使用する。1番のバスにオペコードの上位ビットが対応
し、12番のバスにオペコードの下位ビットが対応す
る。1番から12番の各バス毎にビット・パターンの変
化を図示している。ビット・パターンのエッジの立って
いる部分、すなわちビット値が0から1又は1から0に
変化している部分が電力を消費する部分である。ROM
81から命令レジスタ83に機械語命令が読み出される
際にかかる消費電力は、各バスのビット変化の数に比例
するので、各バスのビット変化の数は少ないほど消費電
力が少なくなってよい。図22に示すオペコード列は、
第1種オペコード及び第2種オペコードが混在するオペ
コード列であり、ビット変化の数(ハミング距離合計)
は6と短く、従って消費電力も少ない。
【0074】一方、図23は、図22と同じプログラム
に対応する機械語命令列のオペコード列であるが、第2
種オペコードのみで構成されるオペコード列と命令バス
89とビット変化の関係を示す。同図に示すオペコード
列は第2種オペコードのみで構成されている。このオペ
コード列がROM81から命令バス89を介して命令レ
ジスタ83に読み出された場合、ハミング距離の合計は
13であるので、13に比例する消費電力がかかること
になり、図22のオペコード列の場合に比べて消費電力
が大きい。
【0075】以上のようにしてプロセッサ50は、第1
種オペコードの機械語命令と第2種オペコードの機械語
命令が混在する機械語命令列を解読実行することができ
るので、第1種及び第2種オペコードの混在するビット
変化の少ない機械語命令列を実行することによりROM
81から命令を読み出す際にバス89にかかる消費電力
を小さくすることができる。
【0076】本プロセッサ50がプログラム変換装置1
0又は20によって生成された機械語命令列を実行する
よう構成する場合、第1解読部84および第2解読部8
5が解読する第1種オペコードおよび第2種オペコード
をプログラム変換装置10又は20の第1種オペコード
及び第2種オペコードと同一のものにすればよい。 <第6実施形態> <プロセッサ>以下に互いに異なる2種類のオペランド
コードが混在する機械語命令列を解読、実行するプロセ
ッサ60について説明する。
【0077】プロセッサ60は、図18に示すプロセッ
サ50の構成の第1解読部84と第2解読部85の機能
を変更するだけでよい。すなわち第1解読部84は、命
令レジスタ83に格納されている機械語命令のオペコー
ドを解読し、またオペランドコードが第1種オペランド
コードである場合そのオペランドコードを解読する。
【0078】第2解読部85は、命令レジスタ83に格
納されている機械語命令のオペランドコードが第2種オ
ペランドコードである場合そのオペランドコードを解読
する。例えば、命令レジスタ83に格納されている機械
語命令がオペコードと2つのオペランドコードとから構
成され、2つのオペランドコードは1つが第1種オペラ
ンドコードで他の1つが第2種オペランドコードである
場合、第1解読部84は、オペコードと第1種オペラン
ドコードとを解読し、第2解読部85は第2種オペラン
ドコードを解読する。
【0079】以上のように構成することによりプロセッ
サ60は、第1種オペランドコードと第2種オペランド
コードとが混在する機械語命令列を解読実行することが
できるので、第1種オペランドコード及び第2種オペラ
ンドコードの混在するビット変化の少ない機械語命令列
を実行することによりROM81から命令を読み出す際
にバス89にかかる消費電力を小さくすることができ
る。
【0080】本プロセッサ60がプログラム変換装置3
0によって生成された機械語命令列を実行するように構
成する場合、第1解読部84及び第2解読部85が解読
する第1種オペランドコードおよび第2種オペランドコ
ードを第1機億部32及び第2記憶部33に記憶される
第1種オペランドコード及び第2種オペランドコードと
同一のものにすればよい。 <第7実施形態> <プロセッサ>以下に、ソースオペランドとデスティネ
ーションオペランドとが入れ替えられた機械語命令が混
在する機械語命令列を実行するプロセッサ70について
説明する。
【0081】プロセッサ70は、図18に示すプロセッ
サ50の構成の命令レジスタ83と第1解読部84及び
第2解読部85との間に交換部を備えればよい。交換部
は、命令レジスタ83に格納されている機械語命令がソ
ースオペランドとデスティネーションオペランドとの両
方を有するか否かを検出し、検出した場合は、その検出
の2回につき1回、ソースオペランドとデスティネーシ
ョンオペランドとを入れ替えて第1解読部84及び第2
解読部85に出力する。
【0082】以上のようにしてプロセッサ70は、ソー
スオペランドとデスティネーションオペランドとが交換
された機械語命令列を解読実行することができるので、
ビット変化が少なくなるようにソースオペランドとデス
ティネーションオペランドとが入れ替えられた機械語命
令が混在する機械語命令列を実行することによりROM
81から命令を読み出す際にバス89にかかる消費電力
を小さくすることができる。 <その他の実施形態>以上本発明にかかるプログラム変
換装置及びプロセッサについて実施形態に基づいて説明
したが本発明はこれらの実施形態に限らず、以下のよう
にしてもよい。 (プログラム変換装置) (1)プログラム変換装置10は、分岐命令とその命令
の飛び先を示すラベル付き命令との間(より詳しくはそ
れらのオペコード間)のハミング距離を短くするよう構
成してもよい。ここで分岐命令は、例えば「BEQ」や
「J」(ジャンプ)等である。
【0083】上記構成を実現するには、図7及び図8に
示したプログラム変換装置10の構成に若干の変更が必
要である。すなわちオペコード読み出し部152は、既
述の機能に加えて、命令読出し部151より出力される
オペレーションが分岐命令であるか否かを判定し、分岐
命令であると判定した場合に選択部153の前オペコー
ド保持部1532に判定信号S1を出力する。この判定
の具体的な構成は例えば、オペコード読み出し部152
は複数の分岐命令からなるオペレーション群を予め記憶
しており、命令読み出し部151より出力されるオペレ
ーションがオペレーション群の1つと合致する場合に判
定信号S1を出力するようにすればよい。
【0084】またオペコード読み出し部152は、分岐
命令に対応するラベル付き命令のオペレーションを検出
した場合に選択部153に信号S2を出力する。前オペ
コード保持部1532は、前オペコードを保持するバッ
ファの他に分岐命令のオペコードを保持するためのバッ
ファを有するように構成する。そして前オペコード保持
部1532は、判定信号S1が入力されるとそのときに
セレクタ1535を介して入力される分岐命令のオペコ
ードを保持する。
【0085】算出部1533は、d1及びd2の算出
し、さらに信号S2が入力されると、とのとき候補保持
部1531より入力される第1種オペコードと前オペコ
ード保持部1532に保持される分岐命令のオペコード
とのハミング距離db1を算出し、また第2種オペコー
ドと分岐命令のオペコードとのハミング距離db2を算
出する。算出部1533は、算出したハミング距離d
1、d2、db1、db2を判定部1534に出力す
る。
【0086】判定部1534は、算出部1533よりハ
ミング距離d1、d2、db1、db2が入力される
と、いずれのハミング距離が短いかを判定する。判定部
1534は、判定結果をセレクト信号に変えてセレクタ
1535に出力する。セレクト信号は、ハミング距離d
1が4つの入力のうち最も短い場合0、ハミング距離d
b1が最も短い場合0、ハミング距離d2が最も短い場
合1、ハミング距離db2が最も短い場合1である。
【0087】このように構成されたプログラム変換装置
10により変換された機械語命令列を図10に示す。な
お機械語オペランド部の表記はビット・パターンによる
表記を省略してプログラムのオペランド部と同じ表記に
している。同図の機械語命令列はオペレーション「BE
Q」から「SUB」に分岐した場合のハミング距離が2
と短くなっている。 (2)(1)において判定部1534による判定は、上
記に限る必要はない。例えば判定部1534は、算出部
1533よりハミング距離d1、d2、db1、db2
が入力されると、ハミング距離db1とdb2のいずれ
が短いかを判定し、ハミング距離d1とd2については
判定しないよう構成してもよい。このように構成すれば
機械語命令列中に含まれる分岐命令の分岐する確率が分
岐しない確率よりも高い場合に、機械語命令を実行する
プロセッサの消費電力をより効果的に削減することがで
きる。 (3)プログラム変換装置10において第1種オペコー
ド及び第2種オペコードのビット・パターンを以下のよ
うに割当て、それぞれ第1記憶部12及び第2記憶部1
3に記憶するよう構成してもよい。 (i)同じオペレーションを表わす第1種オペコードと
第2種オペコードとが互いに反転値になるようにビット
・パターンを割り当てる。例えば、「MOV」に対する
第1種オペコードが5ビット値「01011」のとき、
その反転値である「10100」を第2種オペコードに
割り当てる。その他のオペレーションの第1及び第2種
オペコードについても同様にする。このように割り当て
ることにより、一方のオペコードを選択した場合の前後
2命令のオペコードにおけるハミング距離が3であれ
ば、他方のオペコードを選択した場合にはハミング距離
は2(=5−3)となる。すなわちオペコードのビット
数がnとしたとき第1種オペコードを用いた場合のハミ
ング距離がdaであれば、第2種オペコードを第1種オペ
コードの代わりに用いた場合のハミング距離はdb=n
−daとなる。
【0088】プログラム変換装置10が、このように割
り当てられたオペコードを用いてL行からなる機械語命
令列を生成した場合、その機械語命令列のオペコード部
分のハミング距離の総和は[n/2]*L以下になること
が保証される。ここでnはオペコードのビット数、[n
/2]はn/2の整数部分を表わす。 (ii)プログラム中における出現頻度の高いオペレーシ
ョンのみ2種類のオペコードを割り当てるようにしても
よい。例えば「ADD」が他のオペレーションに比べて
出現頻度が高い場合、「ADD」に2種類のオペコード
を割り当てて、その他のオペレーションには1種類のオ
ペコードを割り当てる。この場合、図2の構成で説明す
ると、第1記憶部12は、全てのオペレーションに対応
する第1種オペコードを記憶し、第2記憶部13は出現
頻度の高いオペレーションについてのみ第1種オペコー
ドとは異なる第2種オペコードを記憶する。このように
構成することにより、出現頻度の低いオペレーションに
無駄に2種類のオペコードを割り当てる必要がなく、第
2記憶部13の容量を小さくすることができる。 (iii)プログラム中において対になって出現する頻度
の高い2命令のオペレーションに、それらの間のハミン
グ距離が最も短くなるような2種類のオペコードを割り
当てるようにしてもよい。例えば「CMP」と「BE
Q」とが対になって出現する頻度が高い場合にはそれら
のオペレーション間のハミング距離が1となるようにオ
ペコードを割り当てる。具体的な例としては、「CM
P」の第1種オペコードが「00111」、第2種オペ
コードが「11000」、「BEQ」の第1種オペコー
ドが「00011」、第2種オペコードが「1110
0」というように割り当てる。このように割り当てるこ
とによって、「CMP」と「BEQ」とが対になってプ
ログラム中に存在するような場合、プログラム変換装置
10は「CMP」に対応するオペコードとして第1種オ
ペコードと第2種オペコードとのいずれのオペコードを
選択した場合においてもその次の「BEQ」に対応する
オペコードは「CMP」のオペコードとのハミング距離
が1になるように選択することができる。 (4)プログラム変換装置20において、候補作成部2
53が複数の機械語命令列の候補を作成し、複数の候補
が作成された後に選択部254が複数の候補それぞれの
ハミング距離を計算してハミング距離が最も短い候補を
選択するよう構成されている。この構成の場合、候補作
成部253によって作成された候補全てを記憶しておく
必要があり、その分メモリが必要となる。
【0089】そこで候補作成部253と選択部254と
が、候補の作成、ハミング距離の算出、ハミング距離の
大小の判定をこの順番に並行して行うように構成し、候
補を記憶するために必要なメモリの容量を小さくしても
よい。このようにして候補作成部253によって候補が
1つ作成されるたびに、選択部254がそのハミング距
離を算出して、それまでに算出済みとなっている別の候
補のハミング距離との大小を比較する。そしてその候補
のハミング距離が別の候補よりも短い場合のみ、その候
補とハミング距離とをメモリに記憶させる。このように
構成すれば、メモリは全ての候補を記憶する必要がなく
なるので容量を小さくすることができる。またこの構成
によれば、メモリに作成された候補を全て記憶させる必
要がない。よって作成された候補を全て記憶しなければ
ならない構成の場合メモリ容量の上限によって記憶でき
る候補の数が制限されていたのに対し、メモリが記憶で
きる候補の数が制限されないので、より多くの候補につ
いてハミング距離の算出とハミング距離の大小の判定を
行うことができる。この結果、ハミング距離がより短い
候補を選択することができるようになる。 (5)プログラム変換装置10及び20において、選択
部153及び選択部は、変換部の各オペコードにそれが
第1種オペコードであるか第2種オペコードであるかを
示す識別ビットを付加するよう構成してもよい。 (6) なおプログラム変換装置10又は20に対して
プログラム変換装置30の構成要素を組み合わせること
により、オペコードとオペランドコードの両方のハミン
グ距離が短くなるようにしてもよい。
【0090】具体的には、第1実施形態と第3実施形態
の構成要素を組み合わせる場合であれば、図15のオペ
コード変換部354をオペコード読み出し部152、選
択部153、第1記憶部12、第2記憶部13から構成
すればよい。また第2実施形態と第3実施形態とを組み
合わせる場合であれば、図15のオペコード変換部35
4をオペコード読み出し部152、候補作成部253、
選択部254、第1記憶部12、第2記憶部13から構
成すればよい。 (7)プログラム変換装置20の構成に擬えて、プログ
ラム変換装置30もオペランドコード列の候補を複数作
成して、それら候補のなかから同一桁のビット変化が最
も少ない候補を選択するよう構成してもよい。その場
合、図15の選択部353の代わりにオペランドコード
列作成部と候補選択部とを備えるようにすればよい。オ
ペランドコード列作成部はプログラム変換装置20の候
補作成部253に対応し、候補選択部は選択部254に
対応する。これらの機能は以下のようになる。
【0091】オペランドコード列作成部は、オペランド
コード読み出し部352より順次読み出される第1及び
第2種オペランドコードを択一的に組み合わせることに
よりオペランドコード列の候補を複数作成する。候補選
択部は、オペランドコード列作成部により作成されるオ
ペランドコード列の候補のうち同一桁のビット変化の数
が少ない候補を選択して、その候補を機械語命令列記憶
部14に格納する。
【0092】このように構成することにより機械語命令
列のハミング距離の合計が短くなるので、この機械語命
令列を実行するプロセッサは、プログラムメモリから機
械語命令を読み出す際に命令バスの電流変化が少なくな
り、消費電力を小さくできるという効果がある。 (8)(7)においてオペランドコード列作成部と候補
選択部とが、オペランドコード列の候補の作成、ハミン
グ距離の算出、ハミング距離の大小の判定をこの順番に
並行して行うように構成することにより、候補を記憶す
るために必要なメモリの容量を小さくしてもよい。つま
りこれらの構成要素が、オペランドコード列の候補が1
つ作成する毎にそのハミング距離を算出し、それまでに
算出済みの別の候補のハミング距離との大小を比較し、
比較の結果短い方の候補のみをメモリに記憶するように
する。このように構成すれば、メモリは最大でも候補2
つ分の容量で足りるので候補を全て記憶する場合と比べ
てメモリの容量を小さくすることができる。 (9)プログラム変換装置30において、選択部353
は、変換後の各オペランドコードに識別ビットを付加す
るよう構成してもよい。ここで識別ビットは、対応する
オペランドコードが第1種オペランドコードであるか第
2種オペランドコードであるかを識別する値である。 (10)プログラム変換装置40において、交換部19
2は、検出信号の入力の2回毎にソースオペランドとデ
スティネーションオペランドとの入れ替えを行うよう構
成されるが、単に、レジスタ変換部154より入力され
るオペランドコードについて、入力の1つおきに、ソー
スオペランドとデスティネーションオペランドとの入れ
替えを行って機械語命令列記憶部14にオペコードと対
応させて格納するよう構成してもよい。この場合、検出
信号が不要になるので、オペコード読み出し部191に
よる検出信号の出力も不要になる。 (11)プログラム変換装置40において、機械語命令
がソースオペランドとデスティネーションオペランドと
が交換されているか否かを示すためのビットを有するよ
うにして、交換部191は、入れ替えを行った場合には
そのビットを1にして、入れ替えを行っていない場合に
はそのビットを0にするよう構成してもよい。 (12)プログラム変換装置40において、交換部19
2は、レジスタ変換部b154より入力される2つのオ
ペランドコードについて、1つおきの機械語命令毎であ
って、かつ、オペコード読み出し部191より検出信号
が入力されている場合についてソースオペランドとデス
ティネーションオペランドの入れ替えを行うようにして
もよい。 (プロセッサ) (13)プロセッサ50は、機械語命令のオペコードに
第1種オペコードであるか第2種オペコードであるかを
示す識別ビットを含む機械語命令列を実行するよう構成
してもよい。この場合プロセッサ50は、図18の構成
に加えて識別ビットからオペコードが第1種オペコード
であるか第2種オペコードであるかを識別する識別部を
有するよう構成する。識別部は命令レジスタ83に格納
されている機械語命令の識別ビットからそのオペコード
が第1種オペコードであるか第2種オペコードであるか
を識別し、その識別結果に応じて第1解読部84及び第
2解読部85のいずれかに機械語命令の解読を実行させ
る。 (14)プロセッサ50において、第1解読部84と第
2解読部85は、いずれか一方がオペランドコードの解
読を行うようにしてもよい。例えば第1解読部84は、
第1種オペコードを解読し、第2解読部85は、第2種
オペコードと各機械語命令毎のオペランドコードを解読
する。 (15)プロセッサ60は、オペランドコードが第1種
オペランドコードであるか第2種オペランドコードであ
るかを示す識別ビットを含む機械語命令を実行するよう
構成してもよい。この場合プロセッサ60は、さらに、
識別ビットからオペランドコードが第1種オペランドコ
ードであるか第2種オペランドコードであるかを識別す
る識別部を有するよう構成し、識別部は機械語命令の識
別ビットからそのオペランドコードがどちらの種類であ
るかを識別し、識別結果に応じて第1解読部84および
第2解読部85のいずれかに機械語命令を解読させる。 (16)機械語命令列において全ての機械語命令がソー
スオペランドとデスティネーションオペランドとを有
し、その機械語命令列の1つおきにソースオペランドと
デスティネーションオペランドとが入れ替えられている
場合において、プロセッサ70の第1解読部と第2解読
部は、機械語命令が格納されているROM81のアドレ
ス、すなわちPC82の示す値に応じて、その機械語命
令が入れ替えられているものであるか否かを判別し、第
1解読部および第2解読部のいずれかが解読を行うよう
構成してもよい。
【0093】
【発明の効果】本発明のプログラム変換装置は、第1種
の命令と、第1種の命令と同じ命令内容であって異なる
ビットパターンをもつ第2種の命令とを含む命令群を実
行するプロセッサを対象として、プログラムを機械語命
令列に変換するプログラム変換装置であって、前後する
命令間で同一桁のビット変化を少なくするように、第1
種の命令と第2種の命令とを選択的に用いてプログラム
を機械語命令列に変換するよう構成される。
【0094】この構成によれば本プログラム変換装置
は、第1種命令と第2種命令とを選択的に組み合わせる
ことによって、プログラムをハミング距離の短い機械語
命令列に変換する。機械語命令列のハミング距離が短け
れば、それを解読、実行するプロセッサの命令バスにお
ける電流変化を少なくすることができるという効果があ
る。
【0095】前記プログラム変換装置は、第1種オペレ
ーションコードを記憶する第1記憶手段と、第1種オペ
レーションコードと同じ命令内容であって異なるビット
パターンをもつ第2種オペレーションコードを記憶する
第2記憶手段と、第1種オペレーションコードと第2種
オペレーションコードとを選択的に用いることにより、
機械語命令列における同一桁のビット変化が少なくなる
ようにプログラムの変換を行う変換手段とを備える。
【0096】この構成によれば本プログラム変換装置
は、プログラムをオペレーションコード部分のハミング
距離の小さい機械語命令列に変換するので、上記と同
様、その機械語命令列を実行するプロセッサの命令バス
における電流変化を少なくすることができるという効果
がある。また前記変換手段は、前記プログラムに応じて
前記第1及び第2記憶手段から第1種及び第2種のオペ
レーションコードを読み出す読み出し手段と、読み出さ
れた第1種及び第2種のオペレーションコードを択一的
に組み合わせることにより前記プログラムに対応するオ
ペレーションコード列の候補を複数作成する作成手段
と、前記作成手段により作成された複数の候補のうち同
一桁のビット変化が少ない候補を選択する選択手段とを
備える。
【0097】この構成によれば、選択手段は、複数の候
補のうちからハミング距離の総和が小さい候補を選択す
ることができるので、作成手段がより多くの候補を作成
すれば、その分よりハミング距離の総和の小さい候補を
選択できる確率が高くなる。もし作成手段が全ての組み
合わせの候補を作成するとすれば、選択手段は、その中
からハミング距離の総和が最も小さい候補を選択するこ
とができる。
【0098】また前記プログラム変換装置は、プログラ
ムに基づいて機械語命令列を構成する機械語命令に順次
変換する変換手段と、変換手段により変換された機械語
命令のうち、ソースフィールドとデスティネーションフ
ィールドとを有する2つの連続する機械語命令毎に、そ
の一方に対してソースフィールドの内容とデスティネー
ションフィールドの内容とを交換する交換手段とを備え
る。
【0099】この構成によれば、例えば先の機械語命令
が「ADD R1,R2」(R1とR2の値を加算して
R2に格納する)、後の機械語命令が「ADD R2,
R3」(R2とR3の値を加算してR3に格納する)で
ある場合、交換手段は、後の機械語命令(先の機械語命
令でもよい)のR2とR3とを入れ替えて「ADDR
3、R2」にする。この交換によって先と後の機械語命
令においては、R2の部分が同じ値であるので、その部
分についてハミング距離が0にすることができる。
【0100】前記機械語命令は命令コード中に前記交換
がなされたか否かを示すビットを有し、前記交換手段
は、交換した機械語命令中の前記ビットの値を設定する
よう構成される。この構成によれば、変換結果の機械語
命令列は、前記ビットを参照することによって、各機械
語命令のソースフィールドとデスティネーションフィー
ルドとが交換されているか否かを識別することができ
る。
【0101】また前記プログラム変換装置は、第1種オ
ペランドコードを記憶する第1記憶手段と、第1種オペ
ランドコードと同じリソースを示し異なるビットパター
ンをもつ第2種オペランドコードを記憶する第2記憶手
段と、第1種オペランドコードと第2種オペランドコー
ドとを選択的に用いることにより、機械語命令列におけ
る同一桁のビット変化が少なくなるようにプログラムの
変換を行う変換手段とを備える。
【0102】この構成によれば本プログラム変換装置
は、プログラムをオペランドコード部分のハミング距離
の小さい機械語命令列に変換するので、その機械語命令
列を実行するプロセッサの命令バスにおける電流変化を
少なくすることができるという効果がある。また前記変
換手段は、前記プログラムに応じて前記第1記憶手段及
び第2記憶手段から第1種オペランドコード及び第2種
オペランドコードを順次に読み出す読み出し手段と、前
記読み出し手段により読み出された前記第1種オペラン
ドコード及び第2種オペランドコードのうちの1つを順
次に選択する選択手段とを備え、前記選択手段は、前記
読出し手段により読み出された第1種オペランドコード
及び第2種オペランドコードのうち、それらが読み出さ
れる直前に選択されたオペランドコードと前記第1種オ
ペランドコード及び第2種オペランドコードとの間にお
ける同一桁のビット変化が少ない方のオペランドコード
を選択するよう構成される。この構成によれば、本プロ
グラム変換装置は、プログラムを、連続する2つの機械
語命令のオペランドコード部分のハミング距離が小さい
機械語命令列に変換するので上記と同様の効果がある。
【0103】また前記変換手段は、前記プログラムに応
じて前記第1及び第2記憶手段から第1種及び第2種の
オペランドコードを読み出す読み出し手段と、読み出さ
れた第1種及び第2種のオペランドコードを択一的に組
み合わせることにより前記プログラムに対応するオペラ
ンドコード列の候補を複数作成する作成手段と、前記作
成手段により作成された複数の候補のうち同一桁のビッ
ト変化が少ない候補を選択する選択手段とを備える。
【0104】この構成によれば、本プログラム変換装置
は、選択手段が複数の候補の中からその候補のハミング
距離の総和が小さい候補を選択するので上記と同様の効
果がある。また作成手段が全ての組み合わせの候補を作
成するとすれば、選択手段は、ハミング距離の総和が最
も小さい候補を選択することができる。また前記変換手
段は、さらに、選択された命令が第1種と第2種のいず
れであるかを示す識別ビットを選択された命令に設定す
る設定手段を備えるので、変換結果の各機械語命令は、
前記識別ビットを参照することによって、選択された命
令が第1種と第2種のいずれであるかを識別することが
できる。
【0105】本発明のプロセッサは、第1種の機械語命
令と、第1種の機械語命令と同じ語長であり同じ命令内
容であって異なるビットパターンをもつ第2種の機械語
命令とが混在するプログラムを記憶するメモリから機械
語命令を順次読み出す読み出し手段と、読み出された機
械語命令のうち第1種の機械語命令を解読する第1解読
手段と、読み出された機械語命令のうち第2種の機械語
命令を解読する第2解読手段と、第1命令解読手段及び
第2命令解読手段の解読結果に従って命令を実行する実
行手段とを備える。
【0106】この構成によればプロセッサは、第1種と
第2種の機械語命令とが混在するプログラムを解読して
実行することができるので、第1種と第2種とを組み合わ
せてハミング距離が短くなるようにプログラムを構成す
れば、本プロセッサは、メモリからプログラムの機械語
命令を読み出す際に命令バスにかかる電流の変化が少な
くなり、消費電力を削減できるという効果がある。
【0107】また前記第1種及び第2種の機械語命令は
プログラム中に交互に配置され、前記第1、第2解読手
段は、読み出し手段により読み出された機械語命令のア
ドレスに基づいて第1種か第2種かを判別して解読する
よう構成される。この構成により、例えば32ビット
(4バイト)の機械語命令の場合、PCは4ずつインク
リメントされるので、第1及び第2解読手段は、PCが保
持するアドレスの3ビット目が1であるか0であるかに
応じて交互に解読を行うようにすることができる。
【0108】また前記第1種及び第2種の機械語命令
は、複数のオペランドの命令中の順序が互いに異なり、
前記第1及び第2オペランド解読部は、オペランドの順
序を入れ替える入れ替え部と、入れ替えたオペランドを
解読するオペランド解読器とから構成される。この構成
によれば、前記第1及び第2オペランド解読部は、ハミン
グ距離が短くなるようにオペランドの順序が入れ替えら
れた機械語命令を解読することができるので、メモリか
ら機械語命令が読み出される際の命令バスにおける電流
変化を小さくすることができ、消費電力を小さくするこ
とができるという効果がある。
【図面の簡単な説明】
【図1】第1実施形態におけるプログラム変換装置のハ
ードウェア構成を示す。
【図2】プログラム変換装置10の構成を機能的に示し
た機能ブロック図である。
【図3】プログラム記憶部11が記憶するプログラムの
一例を示す。
【図4】図2のプログラム中の各命令を説明する図であ
る。
【図5】オペレーションと第1種オペコードと第2種オ
ペコードとの対応関係の具体例を示す。
【図6】機械語命令列記憶部14が最終的に記憶する機
械語命令列を示す図である。
【図7】変換部15のより詳細な構成を示すブロック図
である。
【図8】選択部153のより詳細な構成を示す。
【図9】プログラム変換装置10の処理手順を表わすフ
ローチャートである。
【図10】プログラム変換装置10により変換された機
械語命令列を示す。
【図11】第2実施形態におけるプログラム変換装置の
構成を機能的に示した機能ブロック図である。
【図12】候補作成部253の内部メモリの記憶内容を
プログラムのオペレーション列と対応させて表記した図
である。
【図13】候補作成部253による第1種及び第2種オ
ペコードの組み合わせ方の一例を示す。
【図14】選択部254の処理手順を示すフローチャー
トである。
【図15】第3実施形態におけるプログラム変換装置の
機能ブロック図である。
【図16】選択部353のより詳細な構成を示す。
【図17】第4実施形態におけるプログラム変換装置の
構成を機能的に示す図である。
【図18】本実施形態に係るプロセッサの構成を示すブ
ロック図である。
【図19】オペコード読み出し部191が予め記憶する
オペレーション群を示す図である。
【図20】プログラムの例を示す図である。
【図21】機械語命令列記憶部14に格納される機械語
命令列の機械語オペランドのビット・パターン(列22
01)と入れ替えを行わなかった場合の機械語オペラン
ドのビット・パターン(列2202)を示す図である。
【図22】図10に示した機械語命令列のオペコードの
部分と命令バス89とビット変化の関係を示す。
【図23】図22と同じプログラムに対応し、第2種オ
ペコードを用いて構成される機械語命令列のオペコード
の部分と命令バス89とビット変化との関係を示す。
【符号の説明】
10 プログラム変換装置 11 プログラム記憶部 12 第1記憶部 13 第2記憶部 14 機械語命令列記憶部 15 変換部 151 命令読み出し部 152 オペコード読み出し部 153 選択部 154 レジスタ変換部 30 プロセッサ 81 ROM 82 プログラムカウンタ 83 命令レジスタ 84 第1解読部 85 第2解読部 86 制御部 87 ALU 88 レジスタ 89 命令バス

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 第1種の命令と、第1種の命令と同じ命
    令内容であって異なるビットパターンをもつ第2種の命
    令とを含む命令群を実行するプロセッサを対象として、
    プログラムを機械語命令列に変換するプログラム変換装
    置であって、 前後する命令間で同一桁のビット変化を少なくするよう
    に、第1種の命令と第2種の命令とを選択的に用いてプ
    ログラムを機械語命令列に変換することを特徴とするプ
    ログラム変換装置。
  2. 【請求項2】 前記プログラム変換装置は、 第1種オペレーションコードを記憶する第1記憶手段
    と、 第1種オペレーションコードと同じ命令内容であって異
    なるビットパターンをもつ第2種オペレーションコード
    を記憶する第2記憶手段と、 第1種オペレーションコードと第2種オペレーションコ
    ードとを選択的に用いることにより、機械語命令列にお
    ける同一桁のビット変化が少なくなるようにプログラム
    の変換を行う変換手段とを備えることを特徴とする請求
    項1記載のプログラム変換装置。
  3. 【請求項3】 前記変換手段は、 前記プログラムに応じて前記第1記憶手段及び第2記憶
    手段から第1種オペレーションコード及び第2種オペレ
    ーションコードを順次に読み出す読み出し手段と、 前記読み出し手段により読み出された前記第1種オペレ
    ーションコード及び第2種オペレーションコードのうち
    の1つを順次に選択する選択手段とを備え、 前記選択手段は、前記読出し手段により読み出された第
    1種オペレーションコード及び第2種オペレーションコ
    ードのうち、それらが読み出される直前に選択されたオ
    ペレーションコードと前記第1種オペレーションコード
    及び第2種オペレーションコードとの間における同一桁
    のビット変化が少ない方のオペレーションコードを選択
    することを特徴とする請求項2記載のプログラム変換装
    置。
  4. 【請求項4】 前記選択手段は、 直前に選択したオペレーションコードを保持する保持手
    段と、 前記読出し手段により読み出された第1種オペレーショ
    ンコード及び第2種オペレーションコードそれぞれと前
    記保持手段により保持されるオペレーションコードとの
    間におけるハミング距離をそれぞれ算出する算出手段
    と、 前記算出手段による2つの算出結果の値のうちどちらが
    小さいかを判定する判定手段と、 判定手段により小さいと判定された方のオペレーション
    コードを選択する選択部とを備えることを特徴とする請
    求項3記載のプログラム変換装置。
  5. 【請求項5】 前記変換手段は、 前記プログラムに応じて前記第1及び第2記憶手段から
    第1種及び第2種のオペレーションコードを読み出す読
    み出し手段と、 読み出された第1種及び第2種のオペレーションコード
    を択一的に組み合わせることにより前記プログラムに対
    応するオペレーションコード列の候補を複数作成する作
    成手段と、 前記作成手段により作成された複数の候補のうち同一桁
    のビット変化が少ない候補を選択する選択手段とを備え
    ることを特徴とする請求項2記載のプログラム変換装
    置。
  6. 【請求項6】 前記選択手段は、 前記作成手段により作成されたオペレーションコード列
    の候補毎にオペレーションコード間のハミング距離の合
    計を算出する算出手段と、 前記算出手段による合計結果の値のうちいずれが小さい
    かを判定する判定手段とを備え、 前記判定手段により小さいと判定された候補を選択する
    ことを特徴とする請求項5記載のプログラム変換装置。
  7. 【請求項7】 前記プログラム変換装置は、 プログラムに基づいて機械語命令列を構成する機械語命
    令に順次変換する変換手段と、 変換手段により変換された機械語命令のうち、ソースフ
    ィールドとデスティネーションフィールドとを有する2
    つの連続する機械語命令毎に、その一方に対してソース
    フィールドの内容とデスティネーションフィールドの内
    容とを交換する交換手段とを備えることを特徴とする請
    求項1記載のプログラム変換装置。
  8. 【請求項8】 前記変換手段は、固定語長の機械語命令
    を変換し、 前記交換手段は、ソースフィールド及びデスティネーシ
    ョンフィールドの少なくとも一方にレジスタ番号を指定
    する2つの連続する機械語命令を検出し、検出された一
    方の機械語命令に対して前記交換を行うことを特徴とす
    る請求項7記載のプログラム変換装置。
  9. 【請求項9】 前記機械語命令は命令コード中に前記交
    換がなされたか否かを示すビットを有し、 前記交換手段は、交換した機械語命令中の前記ビットの
    値を設定することを特徴とする請求項8記載のプログラ
    ム変換装置。
  10. 【請求項10】 前記交換手段は、変換手段により変換
    された1つおきの機械語命令のうち、ソースフィールド
    とデスティネーションフィールドの少なくとも一方にレ
    ジスタ番号を指定する機械語命令に対して前記交換を行
    うことを特徴とする請求項7記載のプログラム変換装
    置。
  11. 【請求項11】 前記プログラム変換装置は、 第1種オペランドコードを記憶する第1記憶手段と、 第1種オペランドコードと同じリソースを示し異なるビ
    ットパターンをもつ第2種オペランドコードを記憶する
    第2記憶手段と、 第1種オペランドコードと第2種オペランドコードとを
    選択的に用いることにより、機械語命令列における同一
    桁のビット変化が少なくなるようにプログラムの変換を
    行う変換手段とを備えることを特徴とする請求項1記載
    のプログラム変換装置。
  12. 【請求項12】 前記変換手段は、 前記プログラムに応じて前記第1記憶手段及び第2記憶
    手段から第1種オペランドコード及び第2種オペランド
    コードを順次に読み出す読み出し手段と、 前記読み出し手段により読み出された前記第1種オペラ
    ンドコード及び第2種オペランドコードのうちの1つを
    順次に選択する選択手段とを備え、 前記選択手段は、前記読出し手段により読み出された第
    1種オペランドコード及び第2種オペランドコードのう
    ち、それらが読み出される直前に選択されたオペランド
    コードと前記第1種オペランドコード及び第2種オペラ
    ンドコードとの間における同一桁のビット変化が少ない
    方のオペランドコードを選択することを特徴とする請求
    項11記載のプログラム変換装置。
  13. 【請求項13】 前記選択手段は、 直前に選択したオペランドコードを保持する保持手段
    と、 前記読出し手段により読み出された第1種オペランドコ
    ード及び第2種オペランドコードそれぞれと前記保持手
    段により保持されるオペランドコードとの間におけるハ
    ミング距離をそれぞれ算出する算出手段と、 前記算出手段による2つの算出結果の値のうちどちらが
    小さいかを判定する判定手段と、 判定手段により小さいと判定された方のオペランドコー
    ドを選択する選択部とを備えることを特徴とする請求項
    2記載のプログラム変換装置。
  14. 【請求項14】 前記変換手段は、 前記プログラムに応じて前記第1及び第2記憶手段から
    第1種及び第2種のオペランドコードを読み出す読み出
    し手段と、 読み出された第1種及び第2種のオペランドコードを択
    一的に組み合わせることにより前記プログラムに対応す
    るオペランドコード列の候補を複数作成する作成手段
    と、 前記作成手段により作成された複数の候補のうち同一桁
    のビット変化が少ない候補を選択する選択手段とを備え
    ることを特徴とする請求項11記載のプログラム変換装
    置。
  15. 【請求項15】 前記選択手段は、 前記作成手段により作成されたオペランドコード列の候
    補毎にオペランドコード間のハミング距離の合計を算出
    する算出手段と、 前記算出手段による合計結果の値のうちいずれが小さい
    かを判定する判定手段とを備え、 前記判定手段により小さいと判定された候補を選択する
    ことを特徴とする請求項14記載のプログラム変換装
    置。
  16. 【請求項16】 前記変換手段は、さらに、選択された
    命令が第1種と第2種のいずれであるかを示す識別ビッ
    トを選択された命令に設定する設定手段を備えることを
    特徴とする請求項2から6及び12から15に記載の何
    れかのプログラム変換装置。
  17. 【請求項17】 第1種の機械語命令と、第1種の機械
    語命令と同じ語長であり同じ命令内容であって異なるビ
    ットパターンをもつ第2種の機械語命令とが混在するプ
    ログラムを記憶するメモリから機械語命令を順次読み出
    す読み出し手段と、 読み出された機械語命令のうち第1種の機械語命令を解
    読する第1解読手段と、 読み出された機械語命令のうち第2種の機械語命令を解
    読する第2解読手段と、 第1命令解読手段及び第2命令解読手段の解読結果に従
    って命令を実行する実行手段とを備えることを特徴とす
    るプロセッサ。
  18. 【請求項18】 前記第1種及び第2種の機械語命令は
    第1種か第2種かを識別するための識別ビットを有し、 前記第1、第2解読手段は、読み出し手段により読み出
    された機械語命令の識別ビットにより第1種か第2種か
    を判別して解読することを特徴とする請求項17記載の
    プロセッサ。
  19. 【請求項19】 前記第1種及び第2種の機械語命令は
    プログラム中に交互に配置され、 前記第1、第2解読手段は、読み出し手段により読み出
    された機械語命令のアドレスに基づいて第1種か第2種
    かを判別して解読することを特徴とする請求項17記載
    のプロセッサ。
  20. 【請求項20】 前記第1種及び第2種の機械語命令
    は、互いに異なるオペレーションコードと、同一のオペ
    ランドコードとからなり、 前記第1及び第2解読手段は、 第1種、第2種の機械語命令のオペレーションコードを
    それぞれ解読する第1、第2オペレーション解読部と、 オペランドコードを共通に解読するオペランド解読部と
    を備えることを特徴とする請求項18又は19記載のプ
    ロセッサ。
  21. 【請求項21】 前記第1種及び第2種の機械語命令
    は、同一のオペレーションコードと、異なるオペランド
    コードとからなり、 前記第1及び第2解読手段は、 オペレーションコードを共通に解読するオペレーション
    解読部と、 第1種、第2種の機械語命令のオペランドコードをそれ
    ぞれ解読する第1、第2オペランド解読部とを備えるこ
    とを特徴とする請求項18又は19記載のプロセッサ。
  22. 【請求項22】 前記第1種及び第2種の機械語命令
    は、複数のオペランドの命令中の順序が互いに異なり、 前記第1及び第2オペランド解読部は、オペランドの順
    序を入れ替える入れ替え部と、入れ替えたオペランドを
    解読するオペランド解読器とから構成されることを特徴
    とする請求項21記載のプロセッサ。
  23. 【請求項23】 第1種の命令と、第1種の命令と同じ
    命令内容であって異なるビットパターンをもつ第2種の
    命令とを含む命令群を実行するプロセッサを対象とし
    て、プログラムを機械語命令列に変換する変換プログラ
    ムを記憶した記憶媒体であって、 第1種オペレーションコードを記憶する第1テーブル
    と、 第1種オペレーションコードと同じ命令内容であって異
    なるビットパターンをもつ第2種オペレーションコード
    を記憶する第2テーブルと、 第1種オペレーションコードと第2種オペレーションコ
    ードとを選択的に用いることにより、機械語命令列にお
    ける同一桁のビット変化が少なくなるようにプログラム
    の変換を行う変換プログラムとを記憶することを特徴と
    する記憶媒体。
JP11174708A 1999-06-21 1999-06-21 プログラム変換装置及びプロセッサ Pending JP2001005675A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP11174708A JP2001005675A (ja) 1999-06-21 1999-06-21 プログラム変換装置及びプロセッサ
US09/595,130 US6725450B1 (en) 1999-06-21 2000-06-16 Program conversion apparatus, processor, and record medium
EP00305148A EP1065591A3 (en) 1999-06-21 2000-06-19 Program conversion apparatus, processor and record medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11174708A JP2001005675A (ja) 1999-06-21 1999-06-21 プログラム変換装置及びプロセッサ

Publications (1)

Publication Number Publication Date
JP2001005675A true JP2001005675A (ja) 2001-01-12

Family

ID=15983276

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11174708A Pending JP2001005675A (ja) 1999-06-21 1999-06-21 プログラム変換装置及びプロセッサ

Country Status (3)

Country Link
US (1) US6725450B1 (ja)
EP (1) EP1065591A3 (ja)
JP (1) JP2001005675A (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2375695B (en) * 2001-05-19 2004-08-25 At & T Lab Cambridge Ltd Improved power efficency in microprocessors
GB2378269B (en) * 2001-07-28 2005-08-10 At & T Lab Cambridge Ltd Improved power efficiency in microprocessor systems
JP3578735B2 (ja) * 2001-08-02 2004-10-20 松下電器産業株式会社 情報処理装置及び情報処理方法
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
DE10202700A1 (de) * 2002-01-24 2003-08-07 Infineon Technologies Ag Vorrichtung und Verfahren zum Erzeugen eines Befehlscodes
JP3896087B2 (ja) * 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
US7978693B2 (en) * 2004-03-08 2011-07-12 Koninklijke Philips Electronics, N.V. Integrated circuit and method for packet switching control
US9201657B2 (en) * 2004-05-13 2015-12-01 Intel Corporation Lower power assembler
US7480809B2 (en) * 2004-10-15 2009-01-20 Genesis Microchip Inc. Reducing power consumption of a microprocessor
JP2013242700A (ja) 2012-05-21 2013-12-05 Internatl Business Mach Corp <Ibm> コード最適化方法、プログラム及びシステム
KR102332669B1 (ko) * 2015-04-27 2021-11-30 삼성전자 주식회사 전자 장치의 동적 언어를 처리하는 방법 및 이를 사용하는 전자 장치
CN109491659B (zh) * 2017-09-11 2022-06-21 龙芯中科技术股份有限公司 指令转换方法和装置
JP7163697B2 (ja) * 2018-09-28 2022-11-01 富士通株式会社 生成プログラム,情報処理装置及び生成方法
US11556317B2 (en) * 2020-05-22 2023-01-17 Fujitsu Limited Instruction translation support method and information processing apparatus

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4396976A (en) * 1972-09-11 1983-08-02 Hyatt Gilbert P System for interfacing a computer to a machine
JPS58189738A (ja) * 1982-04-30 1983-11-05 Hitachi Ltd デ−タ処理システム
US5210832A (en) * 1986-10-14 1993-05-11 Amdahl Corporation Multiple domain emulation system with separate domain facilities which tests for emulated instruction exceptions before completion of operand fetch cycle
JPH07120278B2 (ja) * 1988-07-04 1995-12-20 三菱電機株式会社 データ処理装置
JPH02165378A (ja) * 1988-12-20 1990-06-26 Csk Corp 機械翻訳システム
JPH04172533A (ja) * 1990-11-07 1992-06-19 Toshiba Corp 電子計算機
US5603012A (en) * 1992-06-30 1997-02-11 Discovision Associates Start code detector
DE69434967T2 (de) * 1993-05-27 2008-01-17 Matsushita Electric Industrial Co., Ltd., Kadoma Programmumsetzungseinheit und verbesserter Prozessor für Adressierung
JPH0828754B2 (ja) * 1993-06-30 1996-03-21 日本電気株式会社 フレーム同期方式
US6058473A (en) * 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US5579520A (en) * 1994-05-13 1996-11-26 Borland International, Inc. System and methods for optimizing compiled code according to code object participation in program activities
US5790874A (en) 1994-09-30 1998-08-04 Kabushiki Kaisha Toshiba Information processing apparatus for reducing power consumption by minimizing hamming distance between consecutive instruction
JP3392545B2 (ja) 1994-09-30 2003-03-31 株式会社東芝 命令列最適化装置
JP3335782B2 (ja) 1994-09-30 2002-10-21 株式会社東芝 情報処理装置
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
JP2931890B2 (ja) * 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
JP2738365B2 (ja) * 1995-10-18 1998-04-08 日本電気株式会社 マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ
JPH10124325A (ja) * 1996-10-25 1998-05-15 Toshiba Corp 変数の最適配置方法、変数の最適配置装置及び変数の最適配置プログラムを格納したコンピュータ読み取り可能な記録媒体
JPH10187437A (ja) 1996-12-19 1998-07-21 Matsushita Electric Ind Co Ltd 命令コードのビット割り付け装置および方法
US6215898B1 (en) * 1997-04-15 2001-04-10 Interval Research Corporation Data processing system and method
US6014513A (en) * 1997-12-23 2000-01-11 University Of Washington Discovering code and data in a binary executable program
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6490673B1 (en) * 1998-11-27 2002-12-03 Matsushita Electric Industrial Co., Ltd Processor, compiling apparatus, and compile program recorded on a recording medium
JP4026100B2 (ja) * 1998-11-30 2007-12-26 ソニー株式会社 情報処理装置および方法、並びに記録媒体
US6557080B1 (en) * 1999-01-25 2003-04-29 Wisconsin Alumni Research Foundation Cache with dynamic control of sub-block fetching
US6173442B1 (en) * 1999-02-05 2001-01-09 Sun Microsystems, Inc. Busy-wait-free synchronization
US6363523B1 (en) * 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions

Also Published As

Publication number Publication date
EP1065591A2 (en) 2001-01-03
US6725450B1 (en) 2004-04-20
EP1065591A3 (en) 2004-09-08

Similar Documents

Publication Publication Date Title
JP3683230B2 (ja) データ処理装置、命令セット切換方法、データ処理アーキテクチャおよびデータ処理装置作動方法
US6412066B2 (en) Microprocessor employing branch instruction to set compression mode
US5905893A (en) Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set
US7287152B2 (en) Conditional execution per lane
US7493474B1 (en) Methods and apparatus for transforming, loading, and executing super-set instructions
US5896519A (en) Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US5867681A (en) Microprocessor having register dependent immediate decompression
US5794010A (en) Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
JP2001005675A (ja) プログラム変換装置及びプロセッサ
US20010001874A1 (en) Data processor
US5884071A (en) Method and apparatus for decoding enhancement instructions using alias encodings
CN108292228B (zh) 用于基于通道的步进收集的***、设备和方法
US7861071B2 (en) Conditional branch instruction capable of testing a plurality of indicators in a predicate register
US6542989B2 (en) Single instruction having op code and stack control field
CN101542434A (zh) 指令操作码生成***
JPH1165839A (ja) プロセッサの命令制御機構
US7003651B2 (en) Program counter (PC) relative addressing mode with fast displacement
US5774694A (en) Method and apparatus for emulating status flag
CN115328390A (zh) 基于c51的指针变量读写操作方法、装置、设备及介质
US20040024992A1 (en) Decoding method for a multi-length-mode instruction set
US20060101240A1 (en) Digital signal processing circuit and digital signal processing method
US20040162965A1 (en) Information processing unit
CN109960486B (zh) 二进制数据处理方法及其装置、介质和***
JP2000112754A (ja) データ処理装置
JP3481479B2 (ja) 命令制御装置