JPH0511982A - 関数表による関数高速計算方式 - Google Patents
関数表による関数高速計算方式Info
- Publication number
- JPH0511982A JPH0511982A JP18822691A JP18822691A JPH0511982A JP H0511982 A JPH0511982 A JP H0511982A JP 18822691 A JP18822691 A JP 18822691A JP 18822691 A JP18822691 A JP 18822691A JP H0511982 A JPH0511982 A JP H0511982A
- Authority
- JP
- Japan
- Prior art keywords
- function
- function table
- value
- calculation
- memory
- 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
- Executing Machine-Instructions (AREA)
Abstract
(57)【要約】
【目的】 メモリ上に用意した関数表から直接、関数値
を求めることができる関数表による関数高速計算方式を
提供する。 【構成】 メモリ上に関数表1を備え、この関数表を用
いて関数計算を高速化する。 【効果】 メモリ上の関数表にアクセスするだけで関数
値を得ることができるので、CPU時間が大幅に短縮さ
れるという効果がある。
を求めることができる関数表による関数高速計算方式を
提供する。 【構成】 メモリ上に関数表1を備え、この関数表を用
いて関数計算を高速化する。 【効果】 メモリ上の関数表にアクセスするだけで関数
値を得ることができるので、CPU時間が大幅に短縮さ
れるという効果がある。
Description
【0001】
【産業上の利用分野】本発明は計算機における関数の計
算方式の改良に関し、特に関数表による関数高速計算方
式に関する。
算方式の改良に関し、特に関数表による関数高速計算方
式に関する。
【0002】
【従来の技術】一般に、計算機における関数値を求める
関数計算のやり方には二通りある。従来、CPUの命令
としてサポートされていない関数の関数計算をする場合
は、加減乗除算などのCPUがサポートしている関数の
コードに展開することをコンパイラが行なっている。ま
た、CPUの命令としてサポートされている場合は、関
数計算を実行するためのハードウェアまたはファームウ
ェアを備えていて、ファームウェアによる場合は前記と
同様に、CPUがサポートしている加減乗除算などの関
数のコードに展開して上で計算している。
関数計算のやり方には二通りある。従来、CPUの命令
としてサポートされていない関数の関数計算をする場合
は、加減乗除算などのCPUがサポートしている関数の
コードに展開することをコンパイラが行なっている。ま
た、CPUの命令としてサポートされている場合は、関
数計算を実行するためのハードウェアまたはファームウ
ェアを備えていて、ファームウェアによる場合は前記と
同様に、CPUがサポートしている加減乗除算などの関
数のコードに展開して上で計算している。
【0003】
【発明が解決しようとする課題】しかし、上述した従来
の関数計算方式では、ハードウェアが無い場合は常に加
減乗除算に展開してから計算するために、計算時間が長
くなるという問題があった。特に、高い頻度で計算され
るような関数の場合はリソースを大量に消費するという
欠点があった。
の関数計算方式では、ハードウェアが無い場合は常に加
減乗除算に展開してから計算するために、計算時間が長
くなるという問題があった。特に、高い頻度で計算され
るような関数の場合はリソースを大量に消費するという
欠点があった。
【0004】本発明はこのような従来の問題を解決する
ものであり、関数計算を高速化することができる関数表
による関数高速計算方式を提供することを目的とする。
ものであり、関数計算を高速化することができる関数表
による関数高速計算方式を提供することを目的とする。
【0005】
【課題を解決するための手段】上記の目的を達成するた
めに、本発明においては、浮動小数点演算方式をもつ計
算機において、メモリ上に関数表を有し、この関数表を
用いて関数計算を高速化するものである。
めに、本発明においては、浮動小数点演算方式をもつ計
算機において、メモリ上に関数表を有し、この関数表を
用いて関数計算を高速化するものである。
【0006】
【作用】本発明はこのように構成されているので、加減
乗除算のインラインコードを生成することなく、メモリ
上の関数表から容易に値を得ることができる。
乗除算のインラインコードを生成することなく、メモリ
上の関数表から容易に値を得ることができる。
【0007】
【実施例】以下本発明の実施例を図面によって説明す
る。図1は本発明の一実施例における三角関数の関数表
の構成図である。同図において、1はメモリ上に設けら
れた関数値であり、1aはSIN関数の関数表、1bは
COS関数の関数表、1cはTAN関数の関数表であ
る。三角関数が周期関数であることを考慮し、SIN関
数の変数の範囲を−π/2からπ/2までとる。いま、
単精度の計算を実行することができるようにすると、関
数表のエントリの幅は0.0000001となり、関数
表の全エントリはπ*1015個となる。得られる関数値
を単精度にすると、1エントリは4バイト長浮動小数点
となるので、SIN関数の関数表1aの大きさは約11
7Mbyte である。COS関数の変数の範囲を0からπま
でとると、COS関数の関数表1bの大きさは同様に約
117Mbyte である。TAN関数の変数の範囲を−π/
2からπ/2までとると、TAN関数の関数表1cの大
きさは同様に約117Mbyte である。したがって、図1
の三つの関数表の合計メモリサイズは約360Mbyte で
ある。
る。図1は本発明の一実施例における三角関数の関数表
の構成図である。同図において、1はメモリ上に設けら
れた関数値であり、1aはSIN関数の関数表、1bは
COS関数の関数表、1cはTAN関数の関数表であ
る。三角関数が周期関数であることを考慮し、SIN関
数の変数の範囲を−π/2からπ/2までとる。いま、
単精度の計算を実行することができるようにすると、関
数表のエントリの幅は0.0000001となり、関数
表の全エントリはπ*1015個となる。得られる関数値
を単精度にすると、1エントリは4バイト長浮動小数点
となるので、SIN関数の関数表1aの大きさは約11
7Mbyte である。COS関数の変数の範囲を0からπま
でとると、COS関数の関数表1bの大きさは同様に約
117Mbyte である。TAN関数の変数の範囲を−π/
2からπ/2までとると、TAN関数の関数表1cの大
きさは同様に約117Mbyte である。したがって、図1
の三つの関数表の合計メモリサイズは約360Mbyte で
ある。
【0008】図2はCPUの関数命令の形式の一例を示
す説明図である。同図において、Fは命令コードフィー
ルドであり、これにより関数命令であることを示す。I
2は関数の種別および関数表の存在の有無を示すイミデ
ィエイトオペランドフィールドである。R1、R2はそ
れぞれ入力レジスタ指定フィールドおよび出力レジスタ
指定フィールドであり、R1に指定した入力レジスタに
浮動小数点値を入れて命令を実行すると、R2に指定し
た出力レジスタに関数表1から得られた関数値が4バイ
ト長の浮動小数点値として求められる。高級言語で書か
れたプログラムはコンパイラによってこのコードを出力
する。
す説明図である。同図において、Fは命令コードフィー
ルドであり、これにより関数命令であることを示す。I
2は関数の種別および関数表の存在の有無を示すイミデ
ィエイトオペランドフィールドである。R1、R2はそ
れぞれ入力レジスタ指定フィールドおよび出力レジスタ
指定フィールドであり、R1に指定した入力レジスタに
浮動小数点値を入れて命令を実行すると、R2に指定し
た出力レジスタに関数表1から得られた関数値が4バイ
ト長の浮動小数点値として求められる。高級言語で書か
れたプログラムはコンパイラによってこのコードを出力
する。
【0009】次に、上記実施例の動作について図3のフ
ローチャートを参照して説明する。CPUは命令コード
フィールドFを参照し、実行すべき命令が関数命令であ
るかどうかを判断し(ステップS1)、関数命令でない
場合は通常の命令の処理を行なう(ステップS2)。関
数命令である場合はイミディエイトオペランドフィール
ドI2を参照し、関数の種別と関数表1の存在の有無を
判断する(ステップS3)。関数表1が存在しない関数
の種別である場合はいままで通りの方法によって関数値
を計算する(ステップS2)。関数の種別が三角関数の
場合は関数表が存在するので、それぞれの関数に対応す
る関数表1a、1bまたは1cの先頭アドレスを求める
(ステップS4)。次に、入力レジスタ指定フィールド
R1に指定された入力レジスタの値から、図4のフロー
チャートに従って関数表1a、1bまたは1cのエント
リを求め(ステップS5)、そのエントリから関数表1
の値を出力レジスタ指定フィールドR2に指定された出
力レジスタにロードする(ステップS6)。次に、関数
型がSIN関数またはCOS関数の場合は、図5のフロ
ーチャートに従って、入力レジスタの値に応じて出力レ
ジスタの値の符号を変換して関数値を求める(ステップ
S7)。
ローチャートを参照して説明する。CPUは命令コード
フィールドFを参照し、実行すべき命令が関数命令であ
るかどうかを判断し(ステップS1)、関数命令でない
場合は通常の命令の処理を行なう(ステップS2)。関
数命令である場合はイミディエイトオペランドフィール
ドI2を参照し、関数の種別と関数表1の存在の有無を
判断する(ステップS3)。関数表1が存在しない関数
の種別である場合はいままで通りの方法によって関数値
を計算する(ステップS2)。関数の種別が三角関数の
場合は関数表が存在するので、それぞれの関数に対応す
る関数表1a、1bまたは1cの先頭アドレスを求める
(ステップS4)。次に、入力レジスタ指定フィールド
R1に指定された入力レジスタの値から、図4のフロー
チャートに従って関数表1a、1bまたは1cのエント
リを求め(ステップS5)、そのエントリから関数表1
の値を出力レジスタ指定フィールドR2に指定された出
力レジスタにロードする(ステップS6)。次に、関数
型がSIN関数またはCOS関数の場合は、図5のフロ
ーチャートに従って、入力レジスタの値に応じて出力レ
ジスタの値の符号を変換して関数値を求める(ステップ
S7)。
【0010】したがって、以上のような実施例の構成に
よれば、三角関数の関数表から直ちにSIN関数、CO
S関数またはTAN関数の関数値を得ることができる。
よれば、三角関数の関数表から直ちにSIN関数、CO
S関数またはTAN関数の関数値を得ることができる。
【0011】上述の実施例では、対象関数の種別を三角
関数としたが、任意の関数とすることができる。
関数としたが、任意の関数とすることができる。
【0012】
【発明の効果】以上説明したように、本発明では、メモ
リ上の関数表にアクセスするだけで関数値を得ることが
できて、加減乗除算に展開して関数値を計算する必要が
無いので、CPU時間が大幅に短縮されるという効果が
ある。特に大規模な数値計算をする場合に多大な効果を
発揮することができる。
リ上の関数表にアクセスするだけで関数値を得ることが
できて、加減乗除算に展開して関数値を計算する必要が
無いので、CPU時間が大幅に短縮されるという効果が
ある。特に大規模な数値計算をする場合に多大な効果を
発揮することができる。
【図1】本発明の一実施例における関数表のブロック構
成図、
成図、
【図2】CPUの関数命令の形式の一例を示す説明図、
【図3】関数表による関数高速計算方式手順を示すフロ
ーチャート、
ーチャート、
【図4】関数表のエントリアドレス取得手順を示すフロ
ーチャート、
ーチャート、
【図5】関数値の符号変換の手順を示すフローチャー
ト。
ト。
1 関数表 1a SIN関数の関数表 1b COS関数の関数表 1c TAN関数の関数表
Claims (1)
- 【特許請求の範囲】 【請求項1】 浮動小数点演算方式をもつ計算機におい
て、メモリ上に関数表を備え、この関数表を用いて関数
計算を高速化することを特徴とする関数表による関数高
速計算方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18822691A JPH0511982A (ja) | 1991-07-03 | 1991-07-03 | 関数表による関数高速計算方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP18822691A JPH0511982A (ja) | 1991-07-03 | 1991-07-03 | 関数表による関数高速計算方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0511982A true JPH0511982A (ja) | 1993-01-22 |
Family
ID=16219989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP18822691A Pending JPH0511982A (ja) | 1991-07-03 | 1991-07-03 | 関数表による関数高速計算方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0511982A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010024251A1 (ja) | 2008-08-26 | 2010-03-04 | オリンパス株式会社 | 糞便試料の調製方法、糞便試料調製用溶液、及び採便用キット |
-
1991
- 1991-07-03 JP JP18822691A patent/JPH0511982A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010024251A1 (ja) | 2008-08-26 | 2010-03-04 | オリンパス株式会社 | 糞便試料の調製方法、糞便試料調製用溶液、及び採便用キット |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4172287A (en) | General purpose data processing apparatus for processing vector instructions | |
KR910010301A (ko) | 명령 지정방법 및 실행장치 | |
KR950033857A (ko) | 유효 비트 이동자격을 갖춘 데이터 처리기 및 이 데이터 처리기의 피연산자간 비트를 효율적으로 이동하는 방법과 비트 이동 명령을 효율적으로 실행하는 방법 | |
KR920001323A (ko) | 브랜치를 제거하여 컴퓨터 성능을 개선하는 프로세서 동작방법 | |
JPH0228830A (ja) | 整数除算回路 | |
JPS6124729B2 (ja) | ||
US4677582A (en) | Operation processing apparatus | |
JPH0683582A (ja) | データ演算装置 | |
KR100285142B1 (ko) | 데이타 처리 시스템의 오프셋값 계산 회로 및 방법 | |
JPH0511982A (ja) | 関数表による関数高速計算方式 | |
US4870606A (en) | Trigonometric function preprocessing system | |
JP3570287B2 (ja) | マイクロコンピュータ | |
KR970705075A (ko) | x86 명령어 세트와 x86 세그먼트 어드레싱을 지원하기 위한 실행 장치 아키텍처(Execution Unit Architecture to Support x86 Instruction Set and x86 Segmented Addressing) | |
JP3310316B2 (ja) | 演算装置 | |
JPH04195629A (ja) | 演算フラグ生成装置 | |
JPS62249230A (ja) | 演算処理装置 | |
JPH0553759A (ja) | 固定小数点演算ユニツト | |
CN117908962A (zh) | 非线性计算方法、开源处理器、电子设备及存储介质 | |
JPS6373335A (ja) | 情報処理装置 | |
KR19990061571A (ko) | 디지털 신호 처리기의 연산장치 | |
JP3110072B2 (ja) | 事前正規化回路 | |
JP2714940B2 (ja) | 文章検索装置 | |
JPH04316127A (ja) | 情報処理装置 | |
JPS63147229A (ja) | マイクロプログラム制御装置 | |
KR960015210A (ko) | 수퍼스칼라 마이크로프로세서 정수 실행 유닛의 구조 |