JP3505266B2 - プログラム実行装置 - Google Patents

プログラム実行装置

Info

Publication number
JP3505266B2
JP3505266B2 JP14851195A JP14851195A JP3505266B2 JP 3505266 B2 JP3505266 B2 JP 3505266B2 JP 14851195 A JP14851195 A JP 14851195A JP 14851195 A JP14851195 A JP 14851195A JP 3505266 B2 JP3505266 B2 JP 3505266B2
Authority
JP
Japan
Prior art keywords
data
immediate
decoding
bit
instruction
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.)
Expired - Fee Related
Application number
JP14851195A
Other languages
English (en)
Other versions
JPH096609A (ja
Inventor
松本  健志
康人 甲村
宏喜 三浦
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

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】
【課題を解決するための手段】本発明のプログラム実行
装置は、即値命令を含む命令を順次フェッチするフェッ
チ手段と、その命令を解読する解読手段と、解読された
命令を実行する演算実行手段を有するプログラム実行装
置において、前記解読手段はフェッチした即値命令が予
め指定された即値データを含むか否かを判定する判定手
段を含み、該装置は、前記即値データが予め指定された
即値データであるとき、この即値データを復号化前のビ
ット長よりも長いビット長に復号化して演算実行手段に
送り、前記即値データが予め指定された即値データでな
いとき、そのまま演算実行手段に送る復号化手段を含
み、該復号化手段は、前記予め指定された即値データの
数値をNとするとき、この数値が復号化後の2進数表現
におけるビット列の第(N+1)桁を示すものとみな
し、第(N+1)桁の要素数字のみが該ビット列におい
て他の桁の要素数字と異なるよう該ビット列を生成する
ことを特徴とする。
【0010】 請求項2に係る発明は、請求項1に記載
のプログラム実行装置において、前記即値命令が、自命
令に含まれる即値データに対する減算処理の要否を指定
するビットを含むとき、前記復号化手段は、このビット
を参照することより、減算処理が必要な場合に前記生成
されたビット列の示すデータから1を減じたデータに対
応する2進数表現のビット列を生成することを特徴とす
る。
【0011】 請求項3に係る発明は、請求項2に記載
のプログラム実行装置において、前記演算実行手段は、
前記展開された2進数表現のビット列の全ビットを反転
するnot演算手段を有することを特徴とする。
【0012】 請求項4に係る発明は、請求項1〜3の
うちいずれかに記載のプログラム実行装置において、前
記演算実行手段は、前記展開された2進数表現のビット
列の示すデータと、該即値命令によって指定される他方
のオペランドデータの間でデータの論理積をとるand
演算手段と、同じく論理和をとるor演算手段と、同じ
く排他的論理和をとるxor演算手段と、前記展開され
たビット列の各ビットを反転したデータと、該即値命令
によって指定される他方のオペランドデータの間でデー
タの論理積をとるmask演算手段と、を有することを
特徴とする。
【0013】 請求項5に係る発明は、請求項1に記載
のプログラム実行装置において、前記復号化手段は、復
号化前の各即値データと復号化後に得られるべき各即値
データとの対応関係を記憶する記憶手段と、記憶された
対応関係に従ってデータの変換を行う変換手段と、を含
むことを特徴とする。
【0014】
【0015】
【0016】
【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 000
0 0000 0000 0001 (= 1h) すなわち、Mの第(N+1)桁のみが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 演算実行部。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭61−103241(JP,A) 特開 平7−129398(JP,A) 特開 平5−216656(JP,A) 特開 昭61−201335(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/36

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 即値命令を含む命令を順次フェッチする
    フェッチ手段と、 その命令を解読する解読手段と、 解読された命令を実行する演算実行手段を有するプログ
    ラム実行装置において、 前記解読手段はフェッチした即値命令が予め指定された
    即値データを含むか否かを判定する判定手段を含み、 該装置は、前記即値データが予め指定された即値データ
    であるとき、この即値データを復号化前のビット長より
    も長いビット長に復号化して演算実行手段に送り、前記
    即値データが予め指定された即値データでないとき、そ
    のまま演算実行手段に送る復号化手段を含み、 該復号化手段は、前記予め指定された即値データの数値
    をNとするとき、この数値が復号化後の2進数表現にお
    けるビット列の第(N+1)桁を示すものとみなし、第
    (N+1)桁の要素数字のみが該ビット列において他の
    桁の要素数字と異なるよう該ビット列を生成することを
    特徴とするプログラム実行装置。
  2. 【請求項2】 請求項1に記載のプログラム実行装置に
    おいて、 前記即値命令が、自命令に含まれる即値データに対する
    減算処理の要否を指定するビットを含むとき、 前記復号化手段は、このビットを参照することより、減
    算処理が必要な場合に前記生成されたビット列の示すデ
    ータから1を減じたデータに対応する2進数表現のビッ
    ト列を生成することを特徴とするプログラム実行装置。
  3. 【請求項3】 請求項2に記載のプログラム実行装置に
    おいて、 前記演算実行手段は、前記展開された2進数表現のビッ
    ト列の全ビットを反転するnot演算手段を有すること
    を特徴とするプログラム実行装置。
  4. 【請求項4】 請求項1〜3のうちいずれかに記載のプ
    ログラム実行装置において、 前記演算実行手段は、 前記展開された2進数表現のビット列の示すデータと、
    該即値命令によって指定される他方のオペランドデータ
    の間でデータの論理積をとるand演算手段と、 同じく論理和をとるor演算手段と、 同じく排他的論理和をとるxor演算手段と、 前記展開されたビット列の各ビットを反転したデータ
    と、該即値命令によって指定される他方のオペランドデ
    ータの間でデータの論理積をとるmask演算手段と、 を有することを特徴とするプログラム実行装置。
  5. 【請求項5】 請求項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 JPH096609A (ja) 1997-01-10
JP3505266B2 true 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)

Families Citing this family (29)

* 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 김영환 디지털 신호 처리기의 명령어 처리 장치 및 그 방법
US7376814B1 (en) * 1999-09-07 2008-05-20 Nxp B.V. Method for forming variable length instructions in a processing system
US6732257B1 (en) * 2000-09-29 2004-05-04 Intel Corporation Reducing the length of lower level instructions by splitting and recombining an immediate
WO2004029796A2 (en) 2002-09-24 2004-04-08 Koninklijke Philips Electronics N.V. Apparatus, method ,and compiler enabling processing of load immediate instructions in a very long instruction word processor
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
US7676653B2 (en) * 2007-05-09 2010-03-09 Xmos Limited Compact instruction set encoding
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
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
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
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
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
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
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
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
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)
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
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
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US20140115304A1 (en) * 2012-10-18 2014-04-24 Synopsys, Inc. Compressed instruction code storage
WO2014163168A1 (ja) * 2013-03-30 2014-10-09 日本電気株式会社 アプリケーション特化仮想マシン生成システム、装置、方法およびプログラム
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
EP0255118B1 (en) * 1986-07-30 1999-06-09 Hitachi, Ltd. Pattern generator
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 コンパイル方式
AU1809599A (en) * 1997-12-11 1999-06-28 Digits Corp. Object code analysis and remediation system and method

Also Published As

Publication number Publication date
US5745722A (en) 1998-04-28
US6301702B1 (en) 2001-10-09
JPH096609A (ja) 1997-01-10

Similar Documents

Publication Publication Date Title
JP3505266B2 (ja) プログラム実行装置
US20230342112A1 (en) Decimal floating-point round-for-reround instruction
US5390307A (en) Apparatus for a multi-data store or load instruction for transferring multiple contiguous storage locations in one transfer operation
EP0780760B1 (en) Data processing device with instruction set extension
JP3739403B2 (ja) プロセッサのカスタム動作のための方法及び装置
US5819117A (en) Method and system for facilitating byte ordering interfacing of a computer system
US5091853A (en) Chained addressing mode pipelined processor which merges separately decoded parts of a multiple operation instruction
JPH0470662B2 (ja)
US5542060A (en) Data processor including a decoding unit for decomposing a multifunctional data transfer instruction into a plurality of control codes
US6189086B1 (en) Data processing apparatus
JP2669158B2 (ja) データ処理装置
US5226129A (en) Program counter and indirect address calculation system which concurrently performs updating of a program counter and generation of an effective address
JP3556252B2 (ja) オフセット合計を計算するデータ処理システムとその方法
US5870596A (en) Data processor allowing multifunctional instruction execution
US7827451B2 (en) Method, system and program product for establishing decimal floating point operands for facilitating testing of decimal floating point instructions
JPH034936B2 (ja)
US5396610A (en) Register address specifying circuit for simultaneously accessing two registers
US5349681A (en) Bit searching circuit and data processor including the same
GB2410097A (en) Constant generation in floating point processing
US20010001154A1 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
US5519881A (en) Priority encoder for accessing multiple registers simultaneously and a data processing system which uses it
JP3570287B2 (ja) マイクロコンピュータ
EP0265972B1 (en) Control of the program counter used in a pipelined computer
TW200428226A (en) Address offset generation within a data processing system
JPH02278424A (ja) 正規化装置

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