JPH07325710A - 固定小数点演算のアセンブラを模擬した高級言語プログラムの作成方法および演算精度検討方法 - Google Patents
固定小数点演算のアセンブラを模擬した高級言語プログラムの作成方法および演算精度検討方法Info
- Publication number
- JPH07325710A JPH07325710A JP11811094A JP11811094A JPH07325710A JP H07325710 A JPH07325710 A JP H07325710A JP 11811094 A JP11811094 A JP 11811094A JP 11811094 A JP11811094 A JP 11811094A JP H07325710 A JPH07325710 A JP H07325710A
- Authority
- JP
- Japan
- Prior art keywords
- program
- level language
- assembler
- point
- floating
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
(57)【要約】
【目的】 固定小数点演算のアセンブラプログラムを模
擬した高級言語プログラム作成の困難さ、作成された高
級言語プログラムの可読性の悪さを改善し、その高級言
語プログラムを使用した演算精度検討を詳細、かつ自動
化可能なものとする。 【構成】 独自の変数が定義可能で、演算子および関数
の多重定義が可能な高級言語を使用することで固定小数
点演算のアセンブラでオペランドとなる変数の型や、通
常の算術演算子と同じ名前で定義された、アセンブラ演
算子を模擬する演算子を定義し、それらを使用して、固
定小数点演算のアセンブラを作成する。
擬した高級言語プログラム作成の困難さ、作成された高
級言語プログラムの可読性の悪さを改善し、その高級言
語プログラムを使用した演算精度検討を詳細、かつ自動
化可能なものとする。 【構成】 独自の変数が定義可能で、演算子および関数
の多重定義が可能な高級言語を使用することで固定小数
点演算のアセンブラでオペランドとなる変数の型や、通
常の算術演算子と同じ名前で定義された、アセンブラ演
算子を模擬する演算子を定義し、それらを使用して、固
定小数点演算のアセンブラを作成する。
Description
【0001】
【産業上の利用分野】本発明は、固定小数点演算のアセ
ンブラプログラムの設計方法に関する。
ンブラプログラムの設計方法に関する。
【0002】
【従来の技術】例えば、携帯電話に搭載される音声符号
・復号化プログラム等の設計において、固定小数点演算
のアセンブラがよく使用される。これは、高級言語や、
浮動小数点演算のアセンブラよりも実時間性、小型計量
化のための省電力化といった点において優れているから
である。そして、その設計は、実時間性を念頭に置き、
演算量を低減する様な方法で行なわれる。
・復号化プログラム等の設計において、固定小数点演算
のアセンブラがよく使用される。これは、高級言語や、
浮動小数点演算のアセンブラよりも実時間性、小型計量
化のための省電力化といった点において優れているから
である。そして、その設計は、実時間性を念頭に置き、
演算量を低減する様な方法で行なわれる。
【0003】ところが、固定小数点演算のアセンブラプ
ログラムにおいては、一般的には、演算量を低減する
と、演算精度が落ちてしまうという傾向がある。
ログラムにおいては、一般的には、演算量を低減する
と、演算精度が落ちてしまうという傾向がある。
【0004】そこで、演算量とうまくバランスをとる様
なアセンブラプログラムの演算精度の検討が必要になっ
てくるが、その様な検討を行なうには、可読性が悪く、
扱いにくいアセンブラそのものよりも、高級言語の方が
適している。
なアセンブラプログラムの演算精度の検討が必要になっ
てくるが、その様な検討を行なうには、可読性が悪く、
扱いにくいアセンブラそのものよりも、高級言語の方が
適している。
【0005】それ故、固定小数点演算のアセンブラプロ
グラムを高級言語で模擬する必要性が出てくる。
グラムを高級言語で模擬する必要性が出てくる。
【0006】ところで、固定小数点演算のアセンブラプ
ログラムを高級言語で模擬する場合、 ・その高級言語プログラムの作成が困難である、 ・作成されたプログラムの可読性が悪い、 ・そのプログラムを使用した演算精度検討は自動化が容
易でなく、効率が良くない、 といった問題点がある。
ログラムを高級言語で模擬する場合、 ・その高級言語プログラムの作成が困難である、 ・作成されたプログラムの可読性が悪い、 ・そのプログラムを使用した演算精度検討は自動化が容
易でなく、効率が良くない、 といった問題点がある。
【0007】音声符号・復号化方式の複雑なプログラム
を、固定小数点演算のアセンブラで設計するには、通
常、以下の様な過程をたどる。
を、固定小数点演算のアセンブラで設計するには、通
常、以下の様な過程をたどる。
【0008】1.浮動小数点演算を行なう高級言語を使
用してシミュレーションプログラムを作成し、浮動小数
点演算におけるアルゴリズムを確定する。
用してシミュレーションプログラムを作成し、浮動小数
点演算におけるアルゴリズムを確定する。
【0009】2.上記プログラムのアルゴリズムを変更
すること無しに、固定小数点演算のアセンブラプログラ
ムを模擬する高級言語によるプログラムに変換する。
すること無しに、固定小数点演算のアセンブラプログラ
ムを模擬する高級言語によるプログラムに変換する。
【0010】3.固定小数点演算のアセンブラプログラ
ムを模擬する高級言語プログラムを使用して、演算精度
検討を行い、固定小数点演算におけるアルゴリズムを確
定する。
ムを模擬する高級言語プログラムを使用して、演算精度
検討を行い、固定小数点演算におけるアルゴリズムを確
定する。
【0011】4.上記固定小数点演算を模擬した高級言
語プログラムをアセンブラプログラムに変換する。
語プログラムをアセンブラプログラムに変換する。
【0012】この様に段階を経て固定小数点演算のアセ
ンブラプログラムが作成されるのは、プログラムの可読
性の良さ、変更の容易さ等の点で、高級言語の方が、ア
センブラの様な低級言語よりアルゴリズムの検討には適
しているからである。
ンブラプログラムが作成されるのは、プログラムの可読
性の良さ、変更の容易さ等の点で、高級言語の方が、ア
センブラの様な低級言語よりアルゴリズムの検討には適
しているからである。
【0013】なお、以下では、「浮動小数点演算を行な
う高級言語より書かれたプログラム」を「高級言語浮動
小数点プログラム」、「固定小数点演算のアセンブラプ
ログラムを模擬した、高級言語によるプログラム」を
「高級言語固定小数点プログラム」と称する。
う高級言語より書かれたプログラム」を「高級言語浮動
小数点プログラム」、「固定小数点演算のアセンブラプ
ログラムを模擬した、高級言語によるプログラム」を
「高級言語固定小数点プログラム」と称する。
【0014】アセンブラで行なう固定小数点演算には、
通常の高級言語で行なっている浮動小数点演算には見ら
れない、以下の様な特徴がある。
通常の高級言語で行なっている浮動小数点演算には見ら
れない、以下の様な特徴がある。
【0015】1.オペランドとして使用されるメモリ、
レジスタにビット数の制限がある。そのため、定められ
た有効桁数を外れたビットの影響は保証されない。
レジスタにビット数の制限がある。そのため、定められ
た有効桁数を外れたビットの影響は保証されない。
【0016】2.アセンブラの演算子(オペレータ)の
種類により、演算の対象となるオペランドのビット範囲
が異なる。
種類により、演算の対象となるオペランドのビット範囲
が異なる。
【0017】上記の様な特徴があるため、「高級言語浮
動小数点プログラム」を「高級言語固定小数点プログラ
ム」に変換するには、以下の様な手順を踏む必要があ
る。
動小数点プログラム」を「高級言語固定小数点プログラ
ム」に変換するには、以下の様な手順を踏む必要があ
る。
【0018】1.各アセンブラ演算子の動きを模擬する
関数を用意する。
関数を用意する。
【0019】2.「高級言語浮動小数点プログラム」の
アルゴリズムを解析し、各浮動小数点プログラムの算術
演算をアセンブラの演算子に置き換える。
アルゴリズムを解析し、各浮動小数点プログラムの算術
演算をアセンブラの演算子に置き換える。
【0020】3.演算対象となるオペランドを引数とし
て、アセンブラ演算子を模擬している関数を呼ぶ。
て、アセンブラ演算子を模擬している関数を呼ぶ。
【0021】この様にして、浮動小数点演算の高級言語
の1つであるC言語で書かれた浮動小数点演算のプログ
ラム、および、固定小数点演算のアセンブラプログラム
を模擬したプログラムの例を図4,図5、および表1に
挙げる。
の1つであるC言語で書かれた浮動小数点演算のプログ
ラム、および、固定小数点演算のアセンブラプログラム
を模擬したプログラムの例を図4,図5、および表1に
挙げる。
【0022】
【表1】 一例として、図4の「高級言語浮動小数点プログラム」
を解析した結果、表1にある様に、浮動小数点演算の演
算子“*(乗算の演算子)”、“+(加算の演算
子)”、“−(減算の演算子)”は各々、アセンブラの
演算子の“MPY”、“ADD”、“SUB”に相当す
るものとする。これは、例えば、“MPY”というアセ
ンブラの演算子は、「2つのオペランド各々の一部のビ
ットデータを乗算し、他のオペランドに格納する」とい
う命令であり、本質的には乗算であるので、浮動小数点
演算の演算子“*”に相当するが、アセンブラ特有の演
算対象となるビットデータの制限があるので“*”と同
一ではないということである。
を解析した結果、表1にある様に、浮動小数点演算の演
算子“*(乗算の演算子)”、“+(加算の演算
子)”、“−(減算の演算子)”は各々、アセンブラの
演算子の“MPY”、“ADD”、“SUB”に相当す
るものとする。これは、例えば、“MPY”というアセ
ンブラの演算子は、「2つのオペランド各々の一部のビ
ットデータを乗算し、他のオペランドに格納する」とい
う命令であり、本質的には乗算であるので、浮動小数点
演算の演算子“*”に相当するが、アセンブラ特有の演
算対象となるビットデータの制限があるので“*”と同
一ではないということである。
【0023】この時、“MPY”、“ADD”、“SU
B”を模擬した高級言語による関数をそれぞれ“mpy
()”、“add()”、“sub()”とすると、図
4のプログラムは、図5の様な「高級言語固定小数点プ
ログラム」に変換される。
B”を模擬した高級言語による関数をそれぞれ“mpy
()”、“add()”、“sub()”とすると、図
4のプログラムは、図5の様な「高級言語固定小数点プ
ログラム」に変換される。
【0024】以上挙げた従来技術の具体的な事例として
は、“GSM full-rate speech transcoding”(ET
SI/PT12,GSM Recommendation 06.10 Janua
ry 1990 )の、pp.40〜62“4.2.FIXED
POINT IMPLEMET OF THE RP
E−LTP CODER”が挙げられる。
は、“GSM full-rate speech transcoding”(ET
SI/PT12,GSM Recommendation 06.10 Janua
ry 1990 )の、pp.40〜62“4.2.FIXED
POINT IMPLEMET OF THE RP
E−LTP CODER”が挙げられる。
【0025】更に、この様にして作成された「高級言語
固定小数点プログラム」を使用して演算精度の検討を行
い、固定小数点演算におけるアルゴリズムを確定する。
この検討方法としては、まず、倍精度演算を導入するこ
とにより、演算精度がどれくらい向上するか調べる。次
に、その結果と倍精度演算による演算量の増加を考慮し
て、倍精度演算を使用するに適切な箇所を探すという方
法がとられる。
固定小数点プログラム」を使用して演算精度の検討を行
い、固定小数点演算におけるアルゴリズムを確定する。
この検討方法としては、まず、倍精度演算を導入するこ
とにより、演算精度がどれくらい向上するか調べる。次
に、その結果と倍精度演算による演算量の増加を考慮し
て、倍精度演算を使用するに適切な箇所を探すという方
法がとられる。
【0026】倍精度演算を導入するには、倍精度演算用
の関数を定義し、倍精度導入箇所のプログラムを書き換
える必要がある。
の関数を定義し、倍精度導入箇所のプログラムを書き換
える必要がある。
【0027】なお、倍精度演算は、アセンブラで乗算、
除算等を行う際に使用されるものであり、通常の演算で
ある単精度演算に比べて2倍の精度であるが、演算量は
2倍以上かかるものである。
除算等を行う際に使用されるものであり、通常の演算で
ある単精度演算に比べて2倍の精度であるが、演算量は
2倍以上かかるものである。
【0028】
【発明が解決しようとする課題】従来の方法で「高級言
語固定小数点プログラム」を作成する場合、以下の様な
問題点が挙げられる。
語固定小数点プログラム」を作成する場合、以下の様な
問題点が挙げられる。
【0029】問題点1:「高級言語浮動小数点プログラ
ム」を「高級言語固定小数点プログラム」に変更するに
は、全面的な書き換えが必要である。
ム」を「高級言語固定小数点プログラム」に変更するに
は、全面的な書き換えが必要である。
【0030】問題点2:作成された「高級言語固定小数
点プログラム」は可読性が悪い。
点プログラム」は可読性が悪い。
【0031】「問題点1」により、 ・「高級言語固定小数点プログラム」作成には、多大な
時間、労力が必要である、 ・「高級言語浮動小数点プログラム」を、アルゴリズム
を変更せずに、「高級言語固定小数点プログラム」に書
き換える過程において、書き違い等によるバグが発生す
る可能性がある という問題が派生する。
時間、労力が必要である、 ・「高級言語浮動小数点プログラム」を、アルゴリズム
を変更せずに、「高級言語固定小数点プログラム」に書
き換える過程において、書き違い等によるバグが発生す
る可能性がある という問題が派生する。
【0032】「問題点2」からは、 ・プログラムの変更が容易でない ・可読性の悪さは、バグの原因にもなり、かつデバグを
困難にする という問題が生ずる。
困難にする という問題が生ずる。
【0033】また、「高級言語固定小数点プログラム」
における演算精度検討でも次の様な問題点が生ずる。 ・倍精度演算を導入するには、プログラムの変更が必要
なため、演算精度検討をする箇所毎に別のプログラムを
作成しなければならない。
における演算精度検討でも次の様な問題点が生ずる。 ・倍精度演算を導入するには、プログラムの変更が必要
なため、演算精度検討をする箇所毎に別のプログラムを
作成しなければならない。
【0034】このことは、演算精度検討を自動化させる
のに不向きであることを示す。 ・単精度演算でなければ、いきなり2倍の精度をもつ倍
精度演算を使用するため、細かい精度検討ができない。
のに不向きであることを示す。 ・単精度演算でなければ、いきなり2倍の精度をもつ倍
精度演算を使用するため、細かい精度検討ができない。
【0035】本発明の目的は、「高級言語浮動小数点プ
ログラム」を、アルゴリズムを変更せずに容易に「高級
言語固定小数点プログラム」に変換し、かつ「高級言語
固定小数点プログラム」の可読性を向上させる、固定小
数点のアセンブラを模擬した高級言語プログラムの作成
方法を提供することにある。
ログラム」を、アルゴリズムを変更せずに容易に「高級
言語固定小数点プログラム」に変換し、かつ「高級言語
固定小数点プログラム」の可読性を向上させる、固定小
数点のアセンブラを模擬した高級言語プログラムの作成
方法を提供することにある。
【0036】本発明の他の目的は、「高級言語固定小数
点プログラム」によって行われる演算精度検討を詳細
に、かつ自動化可能な形で行う演算精度検討方法を提供
することにある。
点プログラム」によって行われる演算精度検討を詳細
に、かつ自動化可能な形で行う演算精度検討方法を提供
することにある。
【0037】
【課題を解決するための手段】本発明の、固定小数点演
算のアセンブラを模擬した高級言語プログラムの作成方
法は、独自の変数型が定義可能で、かつ演算子および関
数の多重定義が可能な高級言語を使用して、浮動小数点
演算を行なう高級言語により書かれた高級言語浮動小数
点プログラムを作成し、アセンブラプログラムにおいて
オペランドとなる変数の型を模擬すべきアセンブラの特
性に合わせた形で定義し、固定小数点演算のアセンブラ
プログラムにおいて使用される演算子を、多重定義が可
能な高級言語の演算子として定義することにより、前記
高級言語浮動小数点プログラムを、アルゴリズムを変更
することなく固定小数点演算のアセンブラを模擬した高
級言語プログラムに変換する。
算のアセンブラを模擬した高級言語プログラムの作成方
法は、独自の変数型が定義可能で、かつ演算子および関
数の多重定義が可能な高級言語を使用して、浮動小数点
演算を行なう高級言語により書かれた高級言語浮動小数
点プログラムを作成し、アセンブラプログラムにおいて
オペランドとなる変数の型を模擬すべきアセンブラの特
性に合わせた形で定義し、固定小数点演算のアセンブラ
プログラムにおいて使用される演算子を、多重定義が可
能な高級言語の演算子として定義することにより、前記
高級言語浮動小数点プログラムを、アルゴリズムを変更
することなく固定小数点演算のアセンブラを模擬した高
級言語プログラムに変換する。
【0038】また、本発明の演算精度検討方法は、演算
対象となるオペランドの値を浮動小数点型で保持し、そ
の値の有効桁位置、有効桁数を表す桁位置変数、精度位
置変数を導入し、両変数の値を変更することにより、請
求項1により作成された高級言語プログラムの演算精度
を検討する。
対象となるオペランドの値を浮動小数点型で保持し、そ
の値の有効桁位置、有効桁数を表す桁位置変数、精度位
置変数を導入し、両変数の値を変更することにより、請
求項1により作成された高級言語プログラムの演算精度
を検討する。
【0039】
【作用】本発明は、アセンブラプログラムにおいてオペ
ランドとなる変数の型を、「多重定義可能高級言語」
の、「独自の変数型が定義可能」という特徴を生かし、
模擬すべきアセンブラの特性に合わせた形で定義し、固
定小数点プログラムにおいて使用される演算子を「多重
定義可能高級言語」の演算子として定義するので、「高
級言語浮動小数点プログラム」を、アルゴリズムを変更
せずに容易に「高級言語固定小数点プログラム」に変換
することができる。
ランドとなる変数の型を、「多重定義可能高級言語」
の、「独自の変数型が定義可能」という特徴を生かし、
模擬すべきアセンブラの特性に合わせた形で定義し、固
定小数点プログラムにおいて使用される演算子を「多重
定義可能高級言語」の演算子として定義するので、「高
級言語浮動小数点プログラム」を、アルゴリズムを変更
せずに容易に「高級言語固定小数点プログラム」に変換
することができる。
【0040】また、本発明では、プログラムの変更では
なく、「桁位置変数」、「精度位置変数」といった2つ
の変数の値の変更により演算精度の検討が可能であるた
め、1つのプログラムで、一度に複数の箇所の精度検討
が可能になるので、多種多様な精度検討を自動化するこ
とができる。
なく、「桁位置変数」、「精度位置変数」といった2つ
の変数の値の変更により演算精度の検討が可能であるた
め、1つのプログラムで、一度に複数の箇所の精度検討
が可能になるので、多種多様な精度検討を自動化するこ
とができる。
【0041】
【実施例】次に、本発明の実施例について図面を参照し
て説明する。
て説明する。
【0042】最初に、独自の変数型が定義可能で、かつ
演算子および関数の多重定義が可能な高級言語を使用し
て高級言語浮動小数点プログラムを作成し、浮動小数点
プログラムにおけるアルゴリズムを確定する。
演算子および関数の多重定義が可能な高級言語を使用し
て高級言語浮動小数点プログラムを作成し、浮動小数点
プログラムにおけるアルゴリズムを確定する。
【0043】なお、以下では「独自の変数型が定義可能
で、かつ演算子および関数の多重定義が可能な高級言
語」を「多重定義可能高級言語」と称する。
で、かつ演算子および関数の多重定義が可能な高級言
語」を「多重定義可能高級言語」と称する。
【0044】ここまでは、「多重定義可能高級言語」を
使用している点を除けば従来例と全く同じである。
使用している点を除けば従来例と全く同じである。
【0045】次に、「高級言語浮動小数点プログラム」
を、アルゴリズムを変更することなく固定小数点演算の
アセンブラプログラムを模擬したプログラムに変換する
が、ここからが、従来例とは異なる。
を、アルゴリズムを変更することなく固定小数点演算の
アセンブラプログラムを模擬したプログラムに変換する
が、ここからが、従来例とは異なる。
【0046】まず、アセンブラプログラムにおいてオペ
ランドとなる変数の型を、「多重定義可能高級言語」
の、「独自の変数型が定義可能」という特徴を生かし、
模擬すべきアセンブラの特性に合わせた形で定義する。
次に、固定小数点演算のアセンブラプログラムにおいて
使用される演算子を「多重定義可能高級言語」の演算子
として定義する。その際、単項および二項演算子とし
て、対応する高級言語浮動小数点プログラムの算術演算
子と同名の演算子で定義する。
ランドとなる変数の型を、「多重定義可能高級言語」
の、「独自の変数型が定義可能」という特徴を生かし、
模擬すべきアセンブラの特性に合わせた形で定義する。
次に、固定小数点演算のアセンブラプログラムにおいて
使用される演算子を「多重定義可能高級言語」の演算子
として定義する。その際、単項および二項演算子とし
て、対応する高級言語浮動小数点プログラムの算術演算
子と同名の演算子で定義する。
【0047】例えば、「多重定義可能高級言語」として
C++を使用し、図4にある様に、高級言語浮動小数点
プログラムにおける“*”に対応するアセンブラの演算
子“MPY”を模擬することを考える。
C++を使用し、図4にある様に、高級言語浮動小数点
プログラムにおける“*”に対応するアセンブラの演算
子“MPY”を模擬することを考える。
【0048】なお、高級言語C++とは、例えば、「C
STEPUPシリーズ2C++プログラミング」(門
内淳/赤堀一郎著、1989年2月15日初版発行、株
式会社日本ソフトバンク)に記載されているものを指
す。
STEPUPシリーズ2C++プログラミング」(門
内淳/赤堀一郎著、1989年2月15日初版発行、株
式会社日本ソフトバンク)に記載されているものを指
す。
【0049】この演算子“MPY”は、2つのオペラン
ド各々の一部のビットデータを乗算し、残りの1つのオ
ペランドに格納する命令であるとする。
ド各々の一部のビットデータを乗算し、残りの1つのオ
ペランドに格納する命令であるとする。
【0050】従来例では、表1にある様にMPYの動き
を模擬する関数、例えば“mpy()”を定義し、図5
の様にして模擬される。アセンブラ演算子“MPY”が
本質的には乗算であるので、高級言語浮動小数点プログ
ラムにおいては、当然通常の乗算算術演算子“*”で記
されている。したがって、通常の算術演算子“*”を使
用すれば、高級言語浮動小数点プログラムからの変換が
簡便であり、かつ可読性が良いが、オペランドに格納で
きるビット数に制限があるといった固定小数点演算特有
の制限や、オペランドの一部のビットデータを用いて乗
算を行うといったアセンブラ独自の制限のために、通常
の乗算演算子“*”が使用できず、別の関数として定義
せざるをえない。
を模擬する関数、例えば“mpy()”を定義し、図5
の様にして模擬される。アセンブラ演算子“MPY”が
本質的には乗算であるので、高級言語浮動小数点プログ
ラムにおいては、当然通常の乗算算術演算子“*”で記
されている。したがって、通常の算術演算子“*”を使
用すれば、高級言語浮動小数点プログラムからの変換が
簡便であり、かつ可読性が良いが、オペランドに格納で
きるビット数に制限があるといった固定小数点演算特有
の制限や、オペランドの一部のビットデータを用いて乗
算を行うといったアセンブラ独自の制限のために、通常
の乗算演算子“*”が使用できず、別の関数として定義
せざるをえない。
【0051】一方、本発明においては、図1にある様に
まず、オペランドを表す変数の型を定義する(図1では
“FIX”としている)。次に、“FIX”型の変数を
引数とし、“MPY”の動きを模擬した関数を、高級言
語浮動小数点プログラムで使用されていたのと同じ、乗
算を表す算術演算子“*”という名前の演算子で定義す
る。
まず、オペランドを表す変数の型を定義する(図1では
“FIX”としている)。次に、“FIX”型の変数を
引数とし、“MPY”の動きを模擬した関数を、高級言
語浮動小数点プログラムで使用されていたのと同じ、乗
算を表す算術演算子“*”という名前の演算子で定義す
る。
【0052】同様にして、表2にある様に、アセンブラ
演算子“ADD”、“SUB”、“PUT”を各々、対
応する浮動小数点算術演算子と同名の演算子“+”、
“−”、“=”で定義し、その動きを模擬することによ
り、図4の高級言語浮動小数点プログラムは、「多重定
義可能高級言語」の1つであるC++を使用することに
より、図5の様な高級言語固定小数点プログラムに変換
される。
演算子“ADD”、“SUB”、“PUT”を各々、対
応する浮動小数点算術演算子と同名の演算子“+”、
“−”、“=”で定義し、その動きを模擬することによ
り、図4の高級言語浮動小数点プログラムは、「多重定
義可能高級言語」の1つであるC++を使用することに
より、図5の様な高級言語固定小数点プログラムに変換
される。
【0053】
【表2】 なお、この例では、演算子の定義は全て1つのinclude
file(図1の“fix.h”に相当する)に入れられてい
る。
file(図1の“fix.h”に相当する)に入れられてい
る。
【0054】ここで、図4と図5を見比べると解るよう
に、高級言語浮動小数点プログラムから高級言語固定小
数点プログラムへの変換は、 ・変数の型の変更 ・変数の型や、アセンブラ演算子を模擬した演算子の定
義が格納されているファイルを読み込む という作業をすればよく、これは、図4から図1を作成
した手間が大きく軽減されている。
に、高級言語浮動小数点プログラムから高級言語固定小
数点プログラムへの変換は、 ・変数の型の変更 ・変数の型や、アセンブラ演算子を模擬した演算子の定
義が格納されているファイルを読み込む という作業をすればよく、これは、図4から図1を作成
した手間が大きく軽減されている。
【0055】また、可読性においても、図5より、本発
明の手法に基づく図1の方が良いことが解る。
明の手法に基づく図1の方が良いことが解る。
【0056】次に、「高級言語固定小数点プログラム」
の演算精度検討手法について述べる。
の演算精度検討手法について述べる。
【0057】オペランドとなる各変数に対して、次の3
つの変数を各々定義する。 ・オペランド変数値:浮動小数点型で表現されたオペラ
ンドとなる変数の値 ・桁位置変数:オペランド変数値の有効桁位置を表す変
数 ・精度位置変数:オペランド変数値の有効桁数を表す変
数 「桁位置変数」とは、図2にある様に浮動小数点型を有
している「オペランド変数値」の有効桁数は変更せず
に、有効桁の位置の変更を示す変数である。「精度位置
変数」とは、図3にある様に浮動小数点型で有している
「オペランド変数値」の有効桁の位置は変更せずに、有
効桁数の変更を示す変数である。
つの変数を各々定義する。 ・オペランド変数値:浮動小数点型で表現されたオペラ
ンドとなる変数の値 ・桁位置変数:オペランド変数値の有効桁位置を表す変
数 ・精度位置変数:オペランド変数値の有効桁数を表す変
数 「桁位置変数」とは、図2にある様に浮動小数点型を有
している「オペランド変数値」の有効桁数は変更せず
に、有効桁の位置の変更を示す変数である。「精度位置
変数」とは、図3にある様に浮動小数点型で有している
「オペランド変数値」の有効桁の位置は変更せずに、有
効桁数の変更を示す変数である。
【0058】従来例では単精度演算か、倍精度演算かの
二者択一でしか可能でなかった演算精度検討が、各オペ
ランド変数で、「桁位置変数」、「精度位置変数」を変
更することにより、より詳細に最適な有効桁の位置、有
効桁数を見つけだすことができる。
二者択一でしか可能でなかった演算精度検討が、各オペ
ランド変数で、「桁位置変数」、「精度位置変数」を変
更することにより、より詳細に最適な有効桁の位置、有
効桁数を見つけだすことができる。
【0059】さらに、従来例では、倍精度演算を導入す
るには、倍精度演算用の関数を定義し、倍精度導入箇所
のプログラムを書き換える必要があったため、1つのプ
ログラムで一度にまとめて複数の箇所の精度検討を行う
のは困難であったが、本発明の方法では、プログラムの
変更ではなく、「桁位置変数」、「精度位置変数」とい
った2つの変数の値の変更により、演算精度の検討が可
能であるため、1つのプログラムで、一度に複数の箇所
の精度検討が可能になるので、多種多様な精度検討を自
動化することができる。
るには、倍精度演算用の関数を定義し、倍精度導入箇所
のプログラムを書き換える必要があったため、1つのプ
ログラムで一度にまとめて複数の箇所の精度検討を行う
のは困難であったが、本発明の方法では、プログラムの
変更ではなく、「桁位置変数」、「精度位置変数」とい
った2つの変数の値の変更により、演算精度の検討が可
能であるため、1つのプログラムで、一度に複数の箇所
の精度検討が可能になるので、多種多様な精度検討を自
動化することができる。
【0060】なお、本演算精度検討方法は、「多重定義
可能高級言語」を使用することにより、「オペランド変
数値」、「桁位置変数」、「精度位置変数」の3つの変
数を有する1つの変数型として定義することもできる。
可能高級言語」を使用することにより、「オペランド変
数値」、「桁位置変数」、「精度位置変数」の3つの変
数を有する1つの変数型として定義することもできる。
【0061】
【発明の効果】以上説明したように、本発明は、下記の
ような効果がある。 (1)請求項1の発明は、固定小数点演算のアセンブラ
を模擬した高級言語によるプログラム作成において、高
級言語として、独自の変数の定義が可能で、かつ演算
子、関数の多重定義が可能な高級言語を使用することに
より、固定小数点演算のアセンブラプログラムを模擬し
た高級言語によるプログラムの作成が容易になる、プロ
グラムの可読性が向上する。 (2)請求項2の発明は、演算対象となるオペランドの
値を浮動小数点型で保持し、その値の有効桁位置、有効
桁数を定める変数を導入することにより、演算精度の検
討が、詳細、かつ自動化可能となる。
ような効果がある。 (1)請求項1の発明は、固定小数点演算のアセンブラ
を模擬した高級言語によるプログラム作成において、高
級言語として、独自の変数の定義が可能で、かつ演算
子、関数の多重定義が可能な高級言語を使用することに
より、固定小数点演算のアセンブラプログラムを模擬し
た高級言語によるプログラムの作成が容易になる、プロ
グラムの可読性が向上する。 (2)請求項2の発明は、演算対象となるオペランドの
値を浮動小数点型で保持し、その値の有効桁位置、有効
桁数を定める変数を導入することにより、演算精度の検
討が、詳細、かつ自動化可能となる。
【図1】固定小数点演算のアセンブラプログラムを模擬
した高級言語C++によるプログラム例を示す図であ
る。
した高級言語C++によるプログラム例を示す図であ
る。
【図2】桁位置変数を示す図である。
【図3】精度位置変数を示す図である。
【図4】浮動小数点演算による、高級言語Cを使用した
プログラム例を示す図である。
プログラム例を示す図である。
【図5】固定小数点演算のアセンブラプログラムを模擬
した、高級言語Cを使用したプログラムの一例を示す図
である。
した、高級言語Cを使用したプログラムの一例を示す図
である。
Claims (2)
- 【請求項1】 独自の変数型が定義可能で、かつ演算子
および関数の多重定義が可能な高級言語を使用して、浮
動小数点演算を行なう高級言語により書かれた高級言語
浮動小数点プログラムを作成し、 アセンブラプログラムにおいてオペランドとなる変数の
型を、模擬すべきアセンブラの特性に合わせた形で定義
し、固定小数点演算のアセンブラプログラムにおいて使
用される演算子を、多重定義が可能な高級言語の演算子
として定義することにより、前記高級言語浮動小数点プ
ログラムを、アルゴリズムを変更することなく固定小数
点演算のアセンブラを模擬した高級言語プログラムに変
換する、固定小数点演算のアセンブラを模擬した高級言
語プログラムの作成方法。 - 【請求項2】 演算対象となるオペランドの値を浮動小
数点型で保持し、その値の有効桁位置、有効桁数を表す
桁位置変数、精度位置変数を導入し、両変数の値を変更
することにより、請求項1により作成された高級言語プ
ログラムの演算精度を検討する演算精度検討方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11811094A JPH07325710A (ja) | 1994-05-31 | 1994-05-31 | 固定小数点演算のアセンブラを模擬した高級言語プログラムの作成方法および演算精度検討方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11811094A JPH07325710A (ja) | 1994-05-31 | 1994-05-31 | 固定小数点演算のアセンブラを模擬した高級言語プログラムの作成方法および演算精度検討方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH07325710A true JPH07325710A (ja) | 1995-12-12 |
Family
ID=14728277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11811094A Pending JPH07325710A (ja) | 1994-05-31 | 1994-05-31 | 固定小数点演算のアセンブラを模擬した高級言語プログラムの作成方法および演算精度検討方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH07325710A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003032157A1 (en) * | 2001-09-18 | 2003-04-17 | Asahi Kasei Kabushiki Kaisha | Compiler |
US7933941B2 (en) | 2006-07-31 | 2011-04-26 | Fujitsu Limited | Arithmetic program conversion apparatus, arithmetic program conversion program and arithmetic program conversion method |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04177461A (ja) * | 1990-11-07 | 1992-06-24 | Mitsubishi Electric Corp | 高速技術計算方法 |
JPH04225425A (ja) * | 1990-12-26 | 1992-08-14 | Mitsubishi Electric Corp | データ処理装置の実数演算方法 |
-
1994
- 1994-05-31 JP JP11811094A patent/JPH07325710A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04177461A (ja) * | 1990-11-07 | 1992-06-24 | Mitsubishi Electric Corp | 高速技術計算方法 |
JPH04225425A (ja) * | 1990-12-26 | 1992-08-14 | Mitsubishi Electric Corp | データ処理装置の実数演算方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003032157A1 (en) * | 2001-09-18 | 2003-04-17 | Asahi Kasei Kabushiki Kaisha | Compiler |
US7478363B2 (en) | 2001-09-18 | 2009-01-13 | Asahi Kasei Kabushiki Kaisha | Method for translating a given source program into an object program containing computing expressions |
US7933941B2 (en) | 2006-07-31 | 2011-04-26 | Fujitsu Limited | Arithmetic program conversion apparatus, arithmetic program conversion program and arithmetic program conversion method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6529922B1 (en) | Instruction set for controlling a processor to convert linear data to logarithmic data in a single instruction that define the exponent filed of the logarithmic value | |
JP4533682B2 (ja) | トレース解析装置およびトレース解析方法 | |
US20030171907A1 (en) | Methods and Apparatus for Optimizing Applications on Configurable Processors | |
US5913052A (en) | System and method for debugging digital signal processor software with an architectural view and general purpose computer employing the same | |
Kim et al. | A floating-point to fixed-point assembly program translator for the TMS 320C25 | |
JP2001101012A (ja) | プログラムコード変換方法 | |
CN111143038B (zh) | Risc-v架构微处理器内核信息模型建模及生成方法 | |
US7885792B2 (en) | Programming Environment | |
Hong et al. | An integrated environment for rapid prototyping of DSP Algorithms using matlab and Texas instruments’ TMS320C30 | |
US6256776B1 (en) | Digital signal processing code development with fixed point and floating point libraries | |
US7110934B2 (en) | Analysis of the performance of a portion of a data processing system | |
JPH07325710A (ja) | 固定小数点演算のアセンブラを模擬した高級言語プログラムの作成方法および演算精度検討方法 | |
CN114816532B (zh) | 一种提高risc-v二进制代码密度的寄存器分配方法 | |
JP4673040B2 (ja) | 仕様書データ生成方法及び装置 | |
EP3997593B1 (en) | A streaming compiler for automatic adjoint differentiation | |
US7003461B2 (en) | Method and apparatus for an adaptive codebook search in a speech processing system | |
Verner et al. | A model for software sizing | |
US20140173572A1 (en) | Constraint derivation in context following for use with object code insertion | |
Hwang et al. | Low power showdown: comparison of five DSP platforms implementing an LPC speech codec | |
Gordon | The formal definition of a synchronous hardware-description language in higher order logic | |
Leibson | Using performance metrics to select microprocessor cores for IC designs | |
Cammack et al. | Fixpt: a C++ method for development of fixed point digital signal processing algorithms | |
JP2001273174A (ja) | プログラムステップ数測定装置及び方法、ソフトウェア性能評価方法 | |
Hwang et al. | LOW POWER SHOWDOWN: COMPARISON OF FIVE DSP PLATFORMIS | |
Hwang et al. | Benchmarking DSP Architectures for Low Power Applications |