JPH096609A - プログラム実行装置およびプログラム変換方法 - Google Patents

プログラム実行装置およびプログラム変換方法

Info

Publication number
JPH096609A
JPH096609A JP7148511A JP14851195A JPH096609A JP H096609 A JPH096609 A JP H096609A JP 7148511 A JP7148511 A JP 7148511A JP 14851195 A JP14851195 A JP 14851195A JP H096609 A JPH096609 A JP H096609A
Authority
JP
Japan
Prior art keywords
data
program
immediate
instruction
immediate data
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
JP7148511A
Other languages
English (en)
Other versions
JP3505266B2 (ja
Inventor
Kenji Matsumoto
松本  健志
Yasuto Komura
康人 甲村
Hiroki Miura
宏喜 三浦
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.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric 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 Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP14851195A priority Critical patent/JP3505266B2/ja
Priority to US08/661,084 priority patent/US5745722A/en
Publication of JPH096609A publication Critical patent/JPH096609A/ja
Priority to US09/018,857 priority patent/US6301702B1/en
Application granted granted Critical
Publication of JP3505266B2 publication Critical patent/JP3505266B2/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions

Landscapes

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

Abstract

(57)【要約】 【目的】 プログラムサイズの縮小、処理速度の向上及
び命令コード種類の削減。 【構成】 命令コードは命令デコード部2で解読され
る。この際、即値データの符号化/非符号化も判定され
る。デコード後、オペコードは演算実行部5に送られ
る。命令コードが即値データを持つ場合、これは復号化
部3に送られ、所定の規則に従った復号化が行われる。
復号化されたデータは演算実行部5に送られる。符号化
によって即値データが短縮されるためプログラムサイズ
が小さくなり、フェッチの回数が減るため処理速度が上
がる。命令コード長も短くなるため、同じフォーマット
で指定できる命令の種類が増える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、即値データを含むプロ
グラムの実行装置およびその装置において実行可能な命
令を生成するプログラム変換方法に関する。
【0002】
【従来の技術】本明細書において「プログラム実行装
置」とは、マイクロプロセッサなど、実行可能なデータ
形式に変換されたプログラム(すなわちマシンコードで
表現された命令など)を実行してデータを処理する装置
をいう。マイクロプロセッサがその代表であるが、この
装置は必ずしも単一の素子である必要はない。
【0003】一方、「プログラム変換方法」とは、プロ
グラム実行装置において実行可能なデータ形式にプログ
ラムを変換する方法をいう。通常、高級言語のコンパイ
ラなどで実施される。以降、特に混乱のない限り、変換
前後のプログラムをともに「プログラム」と呼ぶ。
【0004】プログラム実行装置は、メモリに記憶され
たプログラムを読み込んで実行する。近年の電子製品の
高機能化に伴い、この装置が実行するプログラムのサイ
ズは急激に増大している。このため、中央処理装置(C
PU)よりもプログラムメモリのハードウェアコストの
方が遥かに大きくなる場合も多い。従って、プログラム
サイズの縮小は急務といえる。
【0005】とりわけ、プログラム実行装置に高い処理
能力を求める場合に、この問題は顕著となる。例えばマ
イクロプロセッサを考えた場合、当初の8ビット処理型
よりも、16または32ビット型が主流となりつつあ
る。多ビット化が進むほど基本命令のコードサイズが大
きくなり、プログラムサイズが増大する傾向が強い。
【0006】こうした課題に対処すべく、基本命令コー
ドサイズを基本処理データサイズよりも小さくとる方法
がある。例えば、16ビットマイクロプロセッサで基本
命令コードサイズを8ビットとする松下電器産業(株)
のMN10200や、32ビットマイクロプロセッサで
基本命令コードサイズを16ビットとする日本電気
(株)のV850などがこの例である。
【0007】
【発明が解決しようとする課題】上記の方法を採用して
も、即値命令については問題が残る。なぜなら、即値命
令は基本処理データサイズ以上の即値データを含むた
め、この命令を基本命令コードのサイズ内で表現するこ
とができないためである。前述のMN10200の場
合、8ビットの即値データを持つ即値命令を構成するた
めに、例えば16ビットの即値命令コードを必要とす
る。即値データが16ビットなら、さらに大きな即値命
令コードが必要である。このマイクロプロセッサが16
ビット型である以上、16ビットの即値データの処理は
頻発すると考えなければならない。こうした事情は、3
2ビットマイクロプロセッサV850でも同様である。
なお、ここで注意すべきは、即値データの存在のために
長い即値命令コードが必要となる事情は、上記2つのマ
イクロプロセッサの他、マイクロプロセッサ全般につい
て言えることである。
【0008】本発明はこうした課題に鑑みてなされたも
ので、その目的は、プログラム変換の際に即値データを
符号化して命令コードサイズおよびプログラムサイズの
縮小を図るプログラム変換方法、およびこうして符号化
された即値データを復号化してプログラムを実行するプ
ログラム実行装置の提供にある。
【0009】
【課題を解決するための手段】本発明のプログラム実行
装置は、即値命令を含む命令を順次フェッチするフェッ
チ手段と、その命令を解読する解読手段と、解読された
命令を実行する演算実行手段と持ち、前記解読手段は、
フェッチした即値命令が所定の規則に従って符号化され
た即値データを含むか否かを判定する判定手段を含み、
該装置は前記即値データが前記規則に従って符号化され
ているとき、この即値データを復号化する復号化手段を
含む。
【0010】前記復号化手段は、符号化された即値デー
タの数値に従い、該データを2進数表現の0または1の
要素数字からなるビット列に展開する手段を有する。
【0011】また、前記即値命令は、自命令に含まれる
即値データに対する減算処理の要否を指定するビットを
含む。
【0012】前記演算実行手段は、前記展開された2進
数表現のビット列の全ビットを反転するnot演算手段
を有する。
【0013】また、前記演算実行手段は、前記展開され
た2進数表現のビット列の示すデータと、該即値命令に
よって指定される他方のオペランドデータの間でデータ
の論理積をとるand演算手段と、同じく論理和をとる
or演算手段と、同じく排他的論理和をとるxor演算
手段と、前記展開されたビット列の各ビットを反転した
データと、該即値命令によって指定される他方のオペラ
ンドデータの間でデータの論理積をとるmask演算手
段とを含む。
【0014】さらに、前記復号化手段は、復号化前の各
即値データと復号化後に得られるべき各即値データとの
対応関係を記憶する記憶手段と、記憶された対応関係に
従ってデータの変換を行う変換手段とを含む。
【0015】一方、本発明のプログラム変換方法は、プ
ログラムに含まれる即値データのうち所定の即値データ
を符号化して変換する工程を含む。
【0016】またこの方法は、前記プログラムがデータ
のビット操作処理を含むとき、前記ビット操作の対象と
なる桁が第N桁であるとき、(N−1)を求めてこれを
符号化された即値データとする工程と、前記ビット操作
の内容を実現しうる基本演算命令を選定する工程と、前
記ビット操作処理を、前記(N−1)を即値データとし
て持つ前記基本演算命令に置換する工程と、しかる後に
変換を行う工程を含む。
【0017】
【作用】本発明のプログラム実行装置によれば、即値命
令を含む命令が順次フェッチされ、その命令が解読さ
れ、演算実行手段で実行される。解読の際、フェッチし
た即値命令が所定の規則に従って符号化された即値デー
タを含むならば、この即値データが復号化される。
【0018】また本発明では、フェッチした即値命令の
特定ビットから、前記即値データが符号化されているか
否かが判定される。
【0019】復号化の際には、符号化された即値データ
の数値に従い、該データが0または1の要素数字からな
る2進数表現のビット列に展開される。
【0020】このとき、前記数値をNとすれば、第(N
+1)桁の要素数字のみが2進数表現のビット列におい
て他の桁の要素数字と異なるよう該ビット列が生成され
る。
【0021】また、減算処理が必要な場合には、前記生
成された2進数表現のビット列の示すデータから1を減
じたデータに対応する2進数表現のビット列が生成され
る。
【0022】前記演算実行手段によれば、必要に応じて
前記展開された2進数表現のビット列の全ビットが反転
される。
【0023】同様に、前記演算実行手段により必要に応
じて、前記展開された2進数表現のビット列の示すデー
タと、該即値命令によって指定される他方のオペランド
データの間の論理積、論理和、排他的論理和、前記展開
された2進数表現のビット列の各ビットを反転したデー
タと、該即値命令によって指定される他方のオペランド
データの間の論理積がとられる。
【0024】前記復号化手段が復号化前の各即値データ
と復号化後に得られるべき各即値データとの対応関係を
記憶する記憶手段を有する場合にあっては、記憶された
対応関係に従ってデータの変換、すなわち復号化が行わ
れる。
【0025】一方、本発明のプログラム変換方法によれ
ば、プログラムに含まれる即値データのうち所定の即値
データが符号化され、変換される。
【0026】このとき、出現頻度の高い即値データ、予
め指定された即値データ、所定の数値的特徴を有する即
値データなどが符号化される。
【0027】また、前記プログラムがデータのビット操
作処理を含むとき、前記ビット操作の対象となる桁が第
N桁であるとすれば、(N−1)が符号化された即値デ
ータとみなされ、前記ビット操作の内容を実現しうる基
本演算命令が選定され、前記ビット操作処理が前記(N
−1)を即値データとして持つ前記基本演算命令に置換
され、しかる後に変換が行われる。
【0028】
【実施例】ここで本発明の好適な実施例を適宜図面を参
照しながら説明する。
【0029】実施例1.まずプログラム実行装置の実施
例を説明する。図1は本実施例のプログラム実行装置の
構成図で、その特徴は後述の復号化部3にある。この復
号化部3は、本装置が符号化された即値データ(以下、
単に「符号化データ」という)を読み込んだとき、これ
を復号化してもとのデータに戻す。なお、もともと符号
化されていない即値データ(すなわち復号化の不要なデ
ータ)を以下「非符号化データ」という。
【0030】図2は本装置における基本命令コードのフ
ォーマットを示す図である。本実施例ではプログラム実
行装置が32ビットマイクロプロセッサであり、基本命
令コードのサイズは16ビットであるとする。同図に示
す通り、命令コードは以下のフィールドから構成され
る。
【0031】(1)タイプ(3ビット) 即値命令であるか否か、即値命令の場合、付随する即値
データが符号化データ、非符号化データのいずれである
かなど、命令のタイプを識別する。3ビット中の1ビッ
トを使用し、符号化/非符号化データを区別するものと
する。
【0032】(2)opc(オペレーションコード)
(4ビット) and、sub、not等命令の種類を示す。ただし場
合によりopcは、上記「タイプ」と一体となり、7ビ
ットで構成されることもある。
【0033】(3)即値データ(5ビット) 即値データを記述する。符号化データなら、この5ビッ
トによってもとの即値データ(ただし、25 =32通り
に限られる)が完全に特定される。非符号化データの場
合、即値データを特定するために6ビット以上を要する
こともある。この場合、例外的に2ワード(32ビッ
ト)以上の命令となる。
【0034】(4)reg(4ビット) 使用するレジスタの番号(16通り)を示す。命令の中
には、図1に示すごとく、2つのソース(ソース1、
2)のレジスタと1つのデスティネーションのレジスタ
を使用するものもあるが、本発明に関連する命令では、
1つのデスティネーションレジスタ(またはソースであ
り、同時にデスティネーションであるレジスタ)を使用
するに留まる。すなわち、「復号化した即値データをレ
ジスタに置く」、「復号化したデータと当該レジスタと
の間で演算を行い、その結果をレジスタに戻す」などの
処理である。以降、レジスタ名をr0、r1等とする。
【0035】ここで、このフォーマットを参照しながら
図1の構成を説明する。
【0036】図1において、命令キャッシュメモリ7を
介して命令フェッチ部1に読み込まれた命令コードは命
令デコード部2で解読される。この際、命令コード中の
上記「タイプ」を見ることにより、即値データ(存在す
る場合に限る)が符号化/非符号化データのいずれであ
るかも判定される。
【0037】デコード後、「opc」で示されるオペレ
ーションが演算実行部5に送られる。「reg」が有効
なレジスタ番号を持つ場合は、この番号がレジスタファ
イル4に送られ、対応するレジスタに対するデータの読
み出し、書き込みが演算実行部5との間で行われる。
【0038】一方、命令コードが即値データを持つ場
合、これは復号化部3に送られる。これが符号化データ
の場合、復号化部3で後述の規則に従った復号化が行わ
れ、実際の演算処理に使用される即値データ(以下、
「復号化データ」という)が生成される。復号化データ
は演算実行部5に送られる。なお、もとのデータが非符
号化データのときは、復号化部3はそのデータをそのま
ま演算実行部5に送る。
【0039】演算実行部5は演算を行い、通常の場合、
演算結果、書き込みデータ、データアドレス等を出力す
る。書き込みデータは、データアクセス部6を介してデ
ータキャッシュメモリ8へ格納され、外部メモリインタ
ーフェース9を経由して適宜外部メモリへ転送される。
データキャッシュメモリ8から読み出された読み出しデ
ータは、データアクセス部6を介してレジスタファイル
4へ転送される。
【0040】ただし、本発明に関連する命令では、演算
結果または復号化データがデスティネーションレジスタ
に書き込まれるに留まり、外部メモリとのやり取りはな
い。
【0041】復号化の規則 ここで、復号化部3による復号化の規則の例を説明す
る。ただし当然ながら、復号化の規則は符号化の規則に
依存するため、必要な補足は実施例2で行う。
【0042】[規則1]符号化データNが復号化データ
Mの第(N+1)桁を示すとみなす 命令コードに含まれる即値データフィールドは5ビット
であるため、Nは0〜31の数値をとる。ここで、N
(10進数)とM(2進数)の対応を以下のように決め
る。
【0043】 N= 0 : M= 0000 0000 0000 0000 0000 0000 0000 0001 (= 1h) N= 1 : M= 0000 0000 0000 0000 0000 0000 0000 0010 (= 2h) N= 2 : M= 0000 0000 0000 0000 0000 0000 0000 0100 (= 4h) : N=31 : M= 1000 0000 0000 0000 0000 0000 0000 0000 (= 80000000h ) すなわち、Mの第N桁のみが1となるよう、Mの各桁の
数字(以下「要素数字」という)を32ビットの2進数
として復号化する。ここで、M=2N である。この復号
化は、復号化部3内のハードウエアで実現することがで
きる。このハードウエアは、特定のNに対して決められ
たMを出力する定数発生器として構成すればよい。こう
した変換に必要な時間は数ナノ秒程度であり、命令の実
行に必要なマシンサイクル数が増加しないよう回路を構
成することが可能である。
【0044】[規則2]規則1の処理の後、復号化デー
タMに減算を行う 即値データフィールドは5ビットであるが、例えばこの
最上位ビット(MSB)を減算実行の指示に使用する。
ここでは、MSB=1で減算を行うものとする。残る4
ビットにより、Nは0〜15の数値をとる。
【0045】(1)MSB=0のとき 減算をせず、NとMの対応を以下のように決める。桁数
を除き、規則1と同じ復号化となる。
【0046】 N= 0 : M= 0000 0000 0000 0001 (= 1h) N= 1 : M= 0000 0000 0000 0010 (= 2h) N= 2 : M= 0000 0000 0000 0100 (= 4h) : N=15 : M= 1000 0000 0000 0000 (= 8000h ) (2)MSB=1のとき MSB=0のときのMから1を減じる。従って、第(N
+1)桁以上の桁はすべて「0」、第N桁以下はすべて
「1」で埋め尽くされる。
【0047】 N= 0 : M= 0000 0000 0000 0000 (= 0h) N= 1 : M= 0000 0000 0000 0001 (= 1h) N= 2 : M= 0000 0000 0000 0011 (= 3h) : N=15 : M= 0111 1111 1111 1111 (= 7FFFh ) [規則3]符号化データNに対し、所望の復号化データ
Mを一対一に割り当てる この場合、プログラムにおける出現頻度が高い即値デー
タを符号化する。例えば、あるプログラムでM=123
4h、5678hという即値データが頻出する場合、ま
ず本発明のプログラム変換方法(例えば実施例2の方
法)により、これらをそれぞれ、符号化データN=0、
1と符号化する。プログラム実行装置は復号化部3内に
NとMの対応関係を記憶するテーブルを持つものとし、
与えられたNからもとのMを導出すればよい。
【0048】以上が復号化の規則例である。いずれの場
合でも、符号化側、復号化側で予め規則の取り決めが必
要である。かかる規則は両者の間で固定的に運用しても
よいが、例えばopcに規則を反映する方法や、本装置
のシステムレジスタに対する書き込みによって複数の候
補から選択可能とする方法なども考えられる。
【0049】なお、上記の如く復号化データについて
は、全ビットを反転させた上で使用することができれ
ば、本実施例の用途は広がる。そこで本実施例の演算実
行部5は、全ビットを反転するnot演算機能を持つと
する。このnot演算も1つの命令としてopcに割り
当てられるもので、例えば規則1によって復号化された
Mについてnot演算を行うと、以下の如く第N桁のみ
が0となるよう演算実行部5でビット反転が行われる。
【0050】 N= 0 : M= 1111 1111 1111 1111 1111 1111 1111 1110(= FFFFFFFEh ) N= 1 : M= 1111 1111 1111 1111 1111 1111 1111 1101(= FFFFFFFDh ) N= 2 : M= 1111 1111 1111 1111 1111 1111 1111 1011(= FFFFFFFBh ) : N=31 : M= 0111 1111 1111 1111 1111 1111 1111 1111(= 7FFFFFFFh ) 反転後のデータは演算結果としてデスティネーションレ
ジスタへ書き込まれる。
【0051】復号化による命令コードの短縮 つづいて、本実施例の利点を説明する。例えば、もとの
プログラム中に、 ld r0,0x80000000 (r0レジスタに 8000000
0h をロード) というステップがあったとする。このとき上記の規則1
を逆方向に適用することにより、まず実施例2などのプ
ログラム変換方法によって即値データ「80000000h 」が
「31(1Fh)」に符号化され、しかる後に命令コー
ドに変換される。もとの即値データの表現には32ビッ
ト(2ワード)を要するが、符号化データの表現はわず
か5ビットで可能なため、全体で3ワードの命令が1ワ
ードに短縮される。本実施例のプログラム実行装置は、
5ビットの即値データが符号化データであることを「タ
イプ」から判別し、規則1に従ってもとの32ビットデ
ータに復号化し、処理を行う。
【0052】このように、符号化・復号化を経ることに
より、命令コードサイズの短縮が可能となるのみなら
ず、命令フェッチの回数が減るため、処理性能も向上す
る。特に、ループ処理中の即値データを符号化すればこ
の効果は大きい。
【0053】本実施例によれば、命令コードのフォーマ
ット中、即値データフィールドのビット数によって符号
化の対象となる即値データの数が決まる。すなわち、5
ビットフィールドであれば、高々32通りの符号化が可
能となるに過ぎない。それにも拘らず、(1)プログラ
ムに含まれる即値データの相当数が2N など上記したい
ずれかの復号化データに一致し、(2)特にビット操作
処理については、上記の復号化データのいずれかを用い
ることで、ほとんどすべての場合をカバーできる、とい
う一般則から、コードサイズ、さらにはプログラム全体
のサイズ縮小に関して大きな効果が得られる。
【0054】さらに注意すべきは、この理由(2)か
ら、命令の種類自体を削減するという二次的な効果が得
られることである。すなわち従来の方法で、例えばr0
レジスタのビット6(7桁目)を検査(抽出)すると
き、 tst r0,7 などのビット操作処理固有の命令(以降「固有演算命
令」といい、マイクロプロセッサによっては、その他に
setなどがある)を要した。これは、固有演算命令を
より一般的なorなどの論理演算命令(以降「基本演算
命令」という)で実行する場合、例えば、 and r3,0x0040 (式1) のように長い即値データが必要となり、結果的に命令コ
ードサイズが長大化したためである。ここで式1の即値
データ「0040h」は、 M=40h=64=26 であるから、N=6と符号化される。図3は式1の命令
コードを示す図で、同図(a)は符号化のされない従来
の例、(b)は符号化がなされた本発明の場合で、従来
は全体で2ワード必要だった命令が1ワードで済む。即
値データが32ビットの場合も1ワードでよい。
【0055】すなわち、従来のように固有演算命令を設
ける必要性は乏しく、ビット操作処理をすべて基本演算
命令で実現できるため、命令の種類の削減が可能とな
る。種類の削減は命令フォーマット中opcに割り当て
るべきビット数の低減につながるため、余ったビットを
即値データフィールドに編入すること等により、さらに
コードサイズの縮小が可能となる。
【0056】この観点から、本実施例のプログラム実行
装置では、上記and命令をはじめ、or、xor、m
ask命令を基本演算命令として用意するものとする。
すなわち、本装置の演算実行部5は以下の演算を行うこ
とができる。
【0057】1.and演算 展開された2進数表現のビット列の示すデータと、その
即値命令によって指定される他方のオペランドデータの
間でデータの論理積をとる 2.or演算 同じく論理和をとる 3.xor演算 同じく排他的論理和をとる 4.mask演算 展開されたビット列の各ビットを反転したデータと、そ
の即値命令によって指定される他方のオペランドデータ
の間でデータの論理積をとる これら命令によって、データの任意ビットの抽出、セッ
ト、反転およびリセット等を容易に行うことができる。
本実施例の特徴は、これらの即値データを持った演算が
基本命令サイズ(1ワード)で実現できる点にある。
【0058】以上が実施例1の概要である。本実施例の
効果は基本処理データサイズが長いほど大きいことに注
意すべきである。なぜなら、例えば32ビットマイクロ
プロセッサを考えた場合、符号化データを示す即値デー
タフィールドはせいぜい5、6ビット程度で十分であ
り、これと基本処理データサイズの差が縮小効果として
現れるためである。
【0059】なお、本実施例では説明の便宜のためにo
pcを4ビット、即値データを5ビットとしたが、これ
は前者が3ビット、後者が6ビットなど、当然別の構成
であってもよい。特に、即値データを6ビットとすれ
ば、上記規則2の場合でも32ビットデータを生成する
ことができるため、32ビットマイクロプロセッサとし
ては6ビット構成とすることが望ましい。
【0060】実施例2.つづいて、本発明のプログラム
変換方法の実施例を説明する。
【0061】図4は実施例2のプログラム変換方法によ
る変換手順を示すフローチャートである。同図に示すよ
うに、本方法は以下の各工程を経てプログラムを変換す
る。変換前のプログラムは通常高級言語によって記述さ
れ、変換後のプログラムは通常マイクロプロセッサ等で
実行可能な機械語である。本実施例のプログラム変換方
法は主にコンパイラにおいて使用される。
【0062】(S1)即値命令の識別 入力されたプログラムを順次変換する際、変換の対象と
なる命令が即値命令であるかどうかを判定する。例え
ば、 and r0,0x80000000 というステップが即値命令と識別される。
【0063】(S2)即値データの識別 変換の対象が即値命令であるとき、その命令に含まれる
即値データを識別する。上記の例なら、「80000000h 」
がこれに当たる。
【0064】(S3)符号化の可否判定 即値データが符号化可能であるかどうかを判定する。こ
の際、即値データが、例えば実施例1の[復号化の規
則]で挙げた数値Mのいずれかに該当するとき、符号化
が可能とみなす。すなわち、 1.前述の規則1、規則2のような所定の数値的特徴を
有するもの 2.同規則3のように出現頻度の高いもの の符号化が可能である。「80000000h 」は規則1によっ
て符号化が可能と判定される。一方、出現頻度の判断
は、プログラム全体を予め検索する予備工程を設ける
か、プログラムの先頭から順に現れる即値データを、そ
の順に出現頻度が大きいとみなすことにより、可能であ
る。この他、 3.予めユーザー等から指定されたもの を符号化の対象としてもよい。指定はプログラム記述の
際、符号化を伴う明示的なコーディングを行う(例え
ば、即値データに特別の識別子を付加する)ことで可能
となる。
【0065】(S4)符号化 符号化が可能な即値データ(S3のYES)について符
号化を実施する。80000000h (=M)であれば、31
(=N)とすればよい。符号化が不可能なもの(S3の
NO)については、S5でそのまま変換する。
【0066】(S5)変換 プログラムを図2のフォーマットに逐語的に変換する。
このとき、即値データを持つ即値命令の場合、符号化デ
ータまたは非符号化データを即値データフィールドに格
納する。符号化データの場合、符号化の規則のうち、例
えば減算の有無は即値データフィールドに反映すればよ
い。ただし当然ながら、「タイプ」フィールドを使用し
てもよく、これは設計方針に依存する。
【0067】なお、ビット操作処理が存在する場合、こ
れは基本演算命令であるand等+符号化データで表現
されるため、S5ではこの命令をマシン語に変換すれば
よい。これは実施例1で説明した通りである。
【0068】
【発明の効果】本発明のプログラム実行装置は、符号化
され、短縮された即値データを取り扱うことができるた
め、プログラムサイズの縮小、処理性能の向上、命令コ
ードの種類の削減が可能となる。この結果、従来の課題
を解決するものである。
【0069】このとき、即値データの符号化の有無は即
値命令の特定ビットで判断できるので、実現は容易かつ
効率的である。
【0070】復号化の際は、符号化データの数値に従
い、そのデータを0または1からなる2進数表現のビッ
ト列に展開するため、サイズの大きなデータを復号化す
ることができる。
【0071】より具体的には、符号化データがNのと
き、第(N+1)桁の要素数字のみを他の桁と異なる数
字にして復号化すればよいため、実現に必要な回路等構
成の規模も小さい。
【0072】また、復号化データをデクリメントした
り、全ビットを反転したり、and等の演算のオペラン
ドとすることもでき、通常の演算やビット操作演算等の
便宜を図ることができる。
【0073】復号化の際の別の方法として、符号化デー
タ・復号化データ間の対応関係に従った変換を行う場合
も、回路構成は簡単であり、変換遅延も小さい。
【0074】一方、本発明のプログラム変換方法によれ
ば、即値データを符号化して変換することにより、プロ
グラムサイズの縮小、命令コード種類の削減が可能とな
る。従って、本発明のプログラム実行装置とともに、従
来の課題を解決することができる。
【0075】このとき、出現頻度の高い即値データ、予
め指定された即値データを符号化すれば、縮小率はさら
に高まる。所定の数値的特徴を持つ即値データを符号化
する場合は、符号化を容易かつ効率的に行うことができ
る。
【0076】特に、プログラムがデータのビット操作処
理を含むとき、その命令が通常の命令+符号化データの
形で表現できるため、命令コード種類の削減による命令
コードサイズの短縮、ひいてはプログラム全体のサイズ
の縮小が可能となる。
【図面の簡単な説明】
【図1】 実施例1のプログラム実行装置の構成図であ
る。
【図2】 実施例1のプログラム実行装置における基本
命令コードのフォーマットを示す図である。
【図3】 式1の命令コードを示す図で、同図(a)は
符号化のされない従来の例、(b)は符号化がなされた
今回の場合である。
【図4】 実施例2のプログラム変換方法による変換手
順を示すフローチャートである。
【符号の説明】
2 命令デコード部、3 復号化部、4 レジスタファ
イル、5 演算実行部。

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 即値命令を含む命令を順次フェッチする
    フェッチ手段と、その命令を解読する解読手段と、解読
    された命令を実行する演算実行手段を有するプログラム
    実行装置において、 前記解読手段は、フェッチした即値命令が所定の規則に
    従って符号化された即値データを含むか否かを判定する
    判定手段を含み、 該装置は、前記即値データが前記規則に従って符号化さ
    れているとき、この即値データを復号化する復号化手段
    を含むことを特徴とするプログラム実行装置。
  2. 【請求項2】 請求項1に記載のプログラム実行装置に
    おいて、 前記判定手段は、フェッチした即値命令の特定ビットを
    参照することより、前記即値データが符号化されている
    か否かを判定することを特徴とするプログラム実行装
    置。
  3. 【請求項3】 請求項1に記載のプログラム実行装置に
    おいて、 前記復号化手段は、符号化された即値データの数値に従
    い、該データを2進数表現の0または1の要素数字から
    なるビット列に展開して復号化することを特徴とするプ
    ログラム実行装置。
  4. 【請求項4】 請求項3に記載のプログラム実行装置に
    おいて、 前記復号化手段は、前記数値をNとするとき、この数値
    が復号化後の2進数表現におけるビット列の第(N+
    1)桁を示すものとみなし、第(N+1)桁の要素数字
    のみが該ビット列において他の桁の要素数字と異なるよ
    う該ビット列を生成することを特徴とするプログラム実
    行装置。
  5. 【請求項5】 請求項4に記載のプログラム実行装置に
    おいて、 前記即値命令が、自命令に含まれる即値データに対する
    減算処理の要否を指定するビットを含むとき、 前記復号化手段は、このビットを参照することより、減
    算処理が必要な場合に前記生成されたビット列の示すデ
    ータから1を減じたデータに対応する2進数表現のビッ
    ト列を生成することを特徴とするプログラム実行装置。
  6. 【請求項6】 請求項3に記載のプログラム実行装置に
    おいて、 前記演算実行手段は、前記展開された2進数表現のビッ
    ト列の全ビットを反転するnot演算手段を有すること
    を特徴とするプログラム実行装置。
  7. 【請求項7】 請求項3〜6に記載のプログラム実行装
    置において、 前記演算実行手段は、 前記展開された2進数表現のビット列の示すデータと、
    該即値命令によって指定される他方のオペランドデータ
    の間でデータの論理積をとるand演算手段と、 同じく論理和をとるor演算手段と、 同じく排他的論理和をとるxor演算手段と、 前記展開されたビット列の各ビットを反転したデータ
    と、該即値命令によって指定される他方のオペランドデ
    ータの間でデータの論理積をとるmask演算手段と、 を有することを特徴とするプログラム実行装置。
  8. 【請求項8】 請求項1に記載のプログラム実行装置に
    おいて、 前記復号化手段は、 復号化前の各即値データと復号化後に得られるべき各即
    値データとの対応関係を記憶する記憶手段と、 記憶された対応関係に従ってデータの変換を行う変換手
    段と、 を含むことを特徴とするプログラム実行装置。
  9. 【請求項9】 プログラム実行装置において実行可能な
    データ形式にプログラムを変換するプログラム変換方法
    において、 前記プログラムに含まれる即値データのうち所定の即値
    データを符号化して変換することを特徴とするプログラ
    ム変換方法。
  10. 【請求項10】 請求項9に記載のプログラム変換方法
    において、 前記プログラムにおける出現頻度の高い即値データを前
    記所定の即値データとして符号化することを特徴とする
    プログラム変換方法。
  11. 【請求項11】 請求項9に記載のプログラム変換方法
    において、 前記プログラムに含まれる即値データのうち、予め指定
    されたものを前記所定の即値データとして符号化するこ
    とを特徴とするプログラム変換方法。
  12. 【請求項12】 請求項9に記載のプログラム変換方法
    において、 前記プログラムに含まれる即値データのうち、所定の数
    値的特徴を有するものを前記所定の即値データとして符
    号化することを特徴とするプログラム変換方法。
  13. 【請求項13】 請求項12に記載のプログラム変換方
    法において、 前記所定の数値的特徴は、該即値データを2進数表現し
    たときに、任意の1桁の数字のみが他の桁の数字と異な
    ることであることを特徴とするプログラム変換方法。
  14. 【請求項14】 請求項12に記載のプログラム変換方
    法において、 前記所定の数値的特徴は、該即値データを2進数表現し
    たときに、任意の桁以上のすべての桁の数字が同一であ
    り、かつ、この数字が他のすべての桁の数字と異なるこ
    とであることを特徴とするプログラム変換方法。
  15. 【請求項15】 請求項9〜14のいずれかに記載のプ
    ログラム変換方法において、前記プログラムがデータの
    ビット操作処理を含むとき、 前記ビット操作の対象となる桁が第N桁であるとき、
    (N−1)を求めてこれを符号化された即値データとみ
    なし、 前記ビット操作の内容を実現しうる基本演算命令を選定
    し、 前記ビット操作処理を、前記(N−1)を即値データと
    して持つ前記基本演算命令に置換し、 しかる後に変換を行うことを特徴とするプログラム変換
    方法。
JP14851195A 1995-06-15 1995-06-15 プログラム実行装置 Expired - Fee Related JP3505266B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP14851195A JP3505266B2 (ja) 1995-06-15 1995-06-15 プログラム実行装置
US08/661,084 US5745722A (en) 1995-06-15 1996-06-10 Apparatus for decoding instruction immediate data to produce a string having a single bit different from other bit thereof
US09/018,857 US6301702B1 (en) 1995-06-15 1998-02-04 Program execution apparatus and program conversion method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14851195A JP3505266B2 (ja) 1995-06-15 1995-06-15 プログラム実行装置

Publications (2)

Publication Number Publication Date
JPH096609A true JPH096609A (ja) 1997-01-10
JP3505266B2 JP3505266B2 (ja) 2004-03-08

Family

ID=15454408

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14851195A Expired - Fee Related JP3505266B2 (ja) 1995-06-15 1995-06-15 プログラム実行装置

Country Status (2)

Country Link
US (2) US5745722A (ja)
JP (1) JP3505266B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003508863A (ja) * 1999-09-07 2003-03-04 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 可変命令長処理
JP2011048860A (ja) * 2003-12-09 2011-03-10 Arm Ltd Simd処理における定数の生成
WO2014163168A1 (ja) * 2013-03-30 2014-10-09 日本電気株式会社 アプリケーション特化仮想マシン生成システム、装置、方法およびプログラム

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3505266B2 (ja) * 1995-06-15 2004-03-08 三洋電機株式会社 プログラム実行装置
US6338132B1 (en) * 1998-12-30 2002-01-08 Intel Corporation System and method for storing immediate data
KR20010005011A (ko) * 1999-06-30 2001-01-15 김영환 디지털 신호 처리기의 명령어 처리 장치 및 그 방법
US6732257B1 (en) * 2000-09-29 2004-05-04 Intel Corporation Reducing the length of lower level instructions by splitting and recombining an immediate
JP2006500673A (ja) 2002-09-24 2006-01-05 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 処理装置、処理方法及びコンパイラ
US7676653B2 (en) * 2007-05-09 2010-03-09 Xmos Limited Compact instruction set encoding
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9128701B2 (en) * 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US20140115304A1 (en) * 2012-10-18 2014-04-24 Synopsys, Inc. Compressed instruction code storage
US11392384B2 (en) * 2020-09-04 2022-07-19 Alibaba Group Holding Limited Methods of breaking down coarse-grained tasks for fine-grained task re-scheduling
CN113703832A (zh) * 2021-09-10 2021-11-26 中国人民解放军国防科技大学 一种立即数转移指令的执行方法、装置及介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3752280T2 (de) * 1986-07-30 2000-02-03 Hitachi Ltd Mustergenerator
JPH01108638A (ja) * 1987-10-21 1989-04-25 Hitachi Ltd 並列化コンパイル方式
US5072372A (en) * 1989-03-03 1991-12-10 Sanders Associates Indirect literal expansion for computer instruction sets
US5274820A (en) * 1989-08-14 1993-12-28 International Business Machines Corporation Method and system for eliminating operation codes from intermediate prolog instructions
US5274821A (en) * 1989-08-14 1993-12-28 International Business Machines Corporation Communication between prolog and an external process
JPH03111971A (ja) * 1989-09-27 1991-05-13 Toshiba Corp ベクトル化診断方式
US5201056A (en) * 1990-05-02 1993-04-06 Motorola, Inc. RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output
US5659753A (en) * 1991-02-27 1997-08-19 Digital Equipment Corporation Interface for symbol table construction in a multilanguage optimizing compiler
US5317740A (en) * 1991-03-07 1994-05-31 Digital Equipment Corporation Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies
FR2678400B1 (fr) * 1991-06-27 1995-08-04 Texas Instruments France Processeur de protocole destine a l'execution d'un ensemble d'instructions en un nombre reduit d'operation.
JPH05197545A (ja) * 1991-12-10 1993-08-06 Mitsubishi Electric Corp マイクロコンピュータ
JPH0778742B2 (ja) * 1992-08-12 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピユータ・プログラム言語変換装置及びその方法
JPH07110800A (ja) * 1993-10-13 1995-04-25 Matsushita Electric Ind Co Ltd 最適化並列コンパイル装置及び最適化並列コンパイル方法
US5581717A (en) * 1994-03-01 1996-12-03 Intel Corporation Decoding circuit and method providing immediate data for a micro-operation issued from a decoder
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
JP3469941B2 (ja) * 1994-07-15 2003-11-25 三菱電機株式会社 プログラム実行制御装置および方法
US5768564A (en) * 1994-10-07 1998-06-16 Tandem Computers Incorporated Method and apparatus for translating source code from one high-level computer language to another
JP3505266B2 (ja) * 1995-06-15 2004-03-08 三洋電機株式会社 プログラム実行装置
JP3201716B2 (ja) * 1996-02-22 2001-08-27 シャープ株式会社 コンピュータ装置
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
JPH10228382A (ja) * 1997-02-14 1998-08-25 Nec Corp コンパイル方式
WO1999030229A1 (en) * 1997-12-11 1999-06-17 Digits Corp. Object code analysis and remediation system and method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003508863A (ja) * 1999-09-07 2003-03-04 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 可変命令長処理
JP2011048860A (ja) * 2003-12-09 2011-03-10 Arm Ltd Simd処理における定数の生成
WO2014163168A1 (ja) * 2013-03-30 2014-10-09 日本電気株式会社 アプリケーション特化仮想マシン生成システム、装置、方法およびプログラム
JPWO2014163168A1 (ja) * 2013-03-30 2017-02-16 日本電気株式会社 アプリケーション特化仮想マシン生成システム、装置、方法およびプログラム

Also Published As

Publication number Publication date
JP3505266B2 (ja) 2004-03-08
US6301702B1 (en) 2001-10-09
US5745722A (en) 1998-04-28

Similar Documents

Publication Publication Date Title
JP3505266B2 (ja) プログラム実行装置
EP0780760B1 (en) Data processing device with instruction set extension
US5390307A (en) Apparatus for a multi-data store or load instruction for transferring multiple contiguous storage locations in one transfer operation
US5896519A (en) Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US6412066B2 (en) Microprocessor employing branch instruction to set compression mode
US5091853A (en) Chained addressing mode pipelined processor which merges separately decoded parts of a multiple operation instruction
US5794010A (en) Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
EP0627681B1 (en) Apparatus and method for processing data with a plurality of flag groups
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
US5542060A (en) Data processor including a decoding unit for decomposing a multifunctional data transfer instruction into a plurality of control codes
JP2669158B2 (ja) データ処理装置
JPH1049369A (ja) データ処理装置
US5226129A (en) Program counter and indirect address calculation system which concurrently performs updating of a program counter and generation of an effective address
JP3488160B2 (ja) 命令セットの拡張を通じて、risc実行可能コードを圧縮する方法及びシステム
KR20060028403A (ko) 데이터 액세스 프로그램 명령 인코딩
US5870596A (en) Data processor allowing multifunctional instruction execution
US5390306A (en) Pipeline processing system and microprocessor using the system
JP3556252B2 (ja) オフセット合計を計算するデータ処理システムとその方法
JPH034936B2 (ja)
US7827451B2 (en) Method, system and program product for establishing decimal floating point operands for facilitating testing of decimal floating point instructions
US5396610A (en) Register address specifying circuit for simultaneously accessing two registers
US20010001154A1 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
GB2410097A (en) Constant generation in floating point processing
JP3570287B2 (ja) マイクロコンピュータ
US5519881A (en) Priority encoder for accessing multiple registers simultaneously and a data processing system which uses it

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20031202

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20031215

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

Free format text: PAYMENT UNTIL: 20081219

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20081219

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091219

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101219

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20101219

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees