JP3845636B2 - 関数近似値の演算器 - Google Patents

関数近似値の演算器 Download PDF

Info

Publication number
JP3845636B2
JP3845636B2 JP2004013545A JP2004013545A JP3845636B2 JP 3845636 B2 JP3845636 B2 JP 3845636B2 JP 2004013545 A JP2004013545 A JP 2004013545A JP 2004013545 A JP2004013545 A JP 2004013545A JP 3845636 B2 JP3845636 B2 JP 3845636B2
Authority
JP
Japan
Prior art keywords
correction
value
circuit
bit string
initial value
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
JP2004013545A
Other languages
English (en)
Other versions
JP2005208845A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2004013545A priority Critical patent/JP3845636B2/ja
Priority to US10/924,981 priority patent/US7472149B2/en
Publication of JP2005208845A publication Critical patent/JP2005208845A/ja
Application granted granted Critical
Publication of JP3845636B2 publication Critical patent/JP3845636B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、ルックアップテーブル(LUT)を用いて関数の近似値を計算する関数近似値の演算器に関する。
従来のLUTを用いた関数の近似値を計算する演算器での計算の手法を説明する。まず、事前にLUTが用意される。オペランドを上位桁ビット列と下位桁ビット列に分ける。関数のオペランドの定義域を上位桁ビット列に関係付けられた複数の区分に分ける。区分内の基準値において初期値である直線で関数を近似する。上位桁ビット列のエントリにより初期値と直線の傾きを出力するLUTが用意できる。
演算器にオペランドが入力されると、入力されたオペランドの属する区分に対応する初期値と傾きがLUTから出力され、入力されたオペランドの属する区分を近似する直線が決定される。この直線とオペランドから関数近似値が計算される。
関数と直線の誤差は、区分の中央と両端で大きくなる傾向がある。誤差を小さくするためには、区分をより細かく分ければよい。しかし、区分を細かくすると区分の数が増え上位桁ビット列のビット数を増やす必要がある(例えば、特許文献1参照。)。このことにより、LUTの大きさは指数関数的に増大するため、演算器の回路規模も指数関数的に大きくなる問題がある。
特開2001−5802号公報(0013段落)
本発明は、上記事情に鑑みてなされたものであり、その目的とするところは、LUTの大きさを指数関数的に増大させることなく、関数と直線の誤差を小さくすることが可能な関数近似値の演算器を提供することにある。
上記問題点を解決するための本発明第1の特徴は、オペランドが上位桁ビット列と下位桁ビット列に分けられ関数のオペランドの定義域を上位桁ビット列に関係付けられた複数の区分に分け区分内の基準値において初期値である直線で関数を近似し上位桁ビット列のエントリにより初期値と直線の傾きの少なくとも1つの相対補正値初期値と傾きを出力するルックアップテーブルと、基準値に対する下位桁ビット列のオフセットを算出するオフセット算出回路と、下位桁ビット列の上位ビットに基づいて補正の要否を判定する補正要否判定回路と、補正が必要であれば相対補正値に基づいた絶対補正値を少なくとも1つの初期値と傾きに加算又は減算する補正回路と、傾きとオフセットの積を計算する乗算回路と、初期値と積の和を計算する加算回路を有する関数近似値の演算器にある。
本発明の第2の特徴は、オペランドが上位桁ビット列と下位桁ビット列に分けられ関数のオペランドの定義域を上位桁ビット列に関係付けられた複数の区分に分け区分内の基準値において初期値である直線で関数を近似し上位桁ビット列のエントリにより初期値の相対補正値初期値と直線の傾きを出力するルックアップテーブルと、基準値に対する下位桁ビット列のオフセットを算出するオフセット算出回路と、下位桁ビット列の上位ビットに基づいて補正の要否を判定する補正要否判定回路と、補正が必要であれば相対補正値に基づいた絶対補正値を加算又は減算した初期値を出力する補正回路と、傾きとオフセットの積を計算する乗算回路と、初期値と積の和を計算する加算回路を有する関数近似値の演算器にある。
本発明の第3の特徴は、オペランドが上位桁ビット列と下位桁ビット列に分けられ関数のオペランドの定義域を上位桁ビット列に関係付けられた複数の区分に分け区分内の基準値において初期値である直線で関数を近似し上位桁ビット列のエントリにより直線の傾きの補正値初期値と傾きを出力するルックアップテーブルと、基準値に対する下位桁ビット列のオフセットを算出するオフセット算出回路と、下位桁ビット列の上位ビットに基づいて補正の要否を判定する補正要否判定回路と、補正が必要であれば補正値を傾きに加算又は減算する補正回路と、傾きとオフセットの積を計算する乗算回路と、初期値と積の和を計算する加算回路を有する関数近似値の演算器にある。
本発明によれば、LUTの大きさを指数関数的に増大させることなく、関数と直線の誤差を小さくすることが可能な関数近似値の演算器を提供できる。
次に、図面を参照して、本発明の実施の形態について説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。また、図面は模式的なものであり、厚みと平面寸法との関係、各層の厚みの比率等は現実のものとは異なることに留意すべきである。
比較例の関数近似値の演算器8は、図1に示すように、LUTとオフセット算出回路9と乗算回路10と加算回路11を有している。LUTは、LUT1とLUT2を有している。LUTは、図2に示すように、デコーダ2、信号線3とメモリセルアレイ4を有している。
図3に示すように、ステップS1において、演算器8の外部のレジスタ5にオペランドXがnビットの2進数で与えられる。オペランドXは、mビットの上位桁ビット列Uとn−mビットの下位桁ビット列Dに分けられる。図4に示すように、関数y=f(x)のオペランドXの定義域を上位桁ビット列Uに関係付けられた複数の区分Cに分ける。mビットの上位桁ビット列Uによって、定義域は2個の区分C0乃至C2−1に分割することができる。区分C0乃至C2−1毎に直線で関数を近似する。以下、理解が容易なようにm=3の場合について説明する。図5に示すように、各区分C0乃至C7に対応する上位桁ビット列U0乃至U7毎に、オペランドXの下位桁ビット列Dが基準値DMであるときの直線の値を初期値b0乃至b7としてLUT1が保持する。同様に、各区分C0ないしC7に対応する上位桁ビット列U0乃至U7毎に、直線の傾きa0乃至a7をLUT2が保持する。
図3のステップS2で、LUT1は、上位桁ビット列Uを入力し初期値bを出力する。ステップS3で、LUT2は、上位桁ビット列Uを入力し傾きaを出力する。
ステップS4で、オフセット算出回路9が、オペランドXの下位桁ビット列Dの基準値DMからの差分であるオフセットΔXを計算する。すなわち、オフセットΔXとは、オペランドXと基準点との差のことである。
ステップS5で、乗算回路10が、オフセットΔXと傾きaの積aΔXを計算する。
ステップS6で、加算回路11が、積aΔXと初期値bの和である演算結果Yを計算し、レジスタ6に出力する。ステップS7で、レジスタ6に演算結果Yが設定される。
次に、比較例の実施サンプルを説明する。図5に示すように、上位桁ビット列U0乃至U7と、区分C0乃至C7は一対一に対応している。区分C0乃至C7の内部では、D0のように同一の下位桁ビット列Dが同じ順番に配置されている。このことから、上位桁ビット列Uは、オペランドXが属する区分C0乃至C7を表し、オペランドXは区分C3に属することがわかる。また、関数y=f(x)において、オペランドXが入力されると、精密解Y0が存在することがわかる。
下位桁ビット列Dは、オペランドXの属する区分C0乃至C7内での位置を表し、図6に示すように、演算結果Yは、オペランドXが属する区分C3のみを考慮すればよい。
基準値DMとしては各区分C0乃至C7内の点、たとえば各区分C0乃至C7の中点Mを選択する。
ステップS2で、LUT1は、オペランドXの上位桁ビット列U3を入力し初期値b3を出力する。
ステップS3で、LUT2は、上位桁ビット列U3を入力し、傾きa3を出力する。初期値b3と傾きa3が表す直線が直線L3である。
ステップS4で、オペランドXの下位桁ビット列Dの基準値DMからの差分であるオフセットΔXを計算する。
ステップS5で、オフセットΔXと傾きa3の積a3ΔXを計算する。
ステップS6で、積a3ΔXと初期値b3の和である演算結果Y(=a3ΔX+b3)を計算し、レジスタ6に出力する。
実施例1に係る演算器8は、図7に示すように、LUT0と、オフセット算出回路9と、乗算回路10と、加算回路11と、補正要否判定回路13と、補正回路23を有している。図8に示すように、LUT0は、デコーダ2、信号線3とメモリセルアレイ4を有している。LUT0は、上位桁ビット列Uを入力し、初期値b、傾きa、傾きaの補正値αを出力する。
LUT0は、上位桁ビット列Uを入力し初期値bを出力するLUT1、上位桁ビット列Uを入力し傾きaを出力するLUT2と、上位桁ビット列Uを入力し傾きaの補正値αを出力するLUT3を有しているとみなすことができる。図9のステップS2で、LUT1は、上位桁ビット列U0乃至U7を入力し、初期値b10乃至b17を出力する。ステップS3で、LUT2は、上位桁ビット列U0乃至U7を入力し、傾きa10乃至a17を出力する。ステップS11で、LUT3は、上位桁ビット列U0乃至U7を入力し、補正値α10乃至α17を出力する。区分C内においては、傾きaを補正する補正値αは、傾きaに比べ小さいと考えられる。このことにより、LUT0の大きさを指数関数的に増大させることなく、関数と直線の誤差を小さくできる。
補正要否判定回路13は、区分C0乃至C7の中を、左半分を補正しない範囲として、右半分を補正する範囲として分割する場合には、バッファ14を有する。なお、バッファ14は一例にすぎず、区分C0乃至C7の中を分割する補正しない範囲と補正する範囲に応じた論理回路を、補正要否判定回路13は有することができる。たとえば、バッファ14は、ステップS12で、オペランドXの下位桁ビット列Dの最上位ビットXn−mを入力し、補正信号Sを出力する。下位桁ビット列Dの最上位ビットXn−mが0の時、補正無しを意味する0が補正信号Sとして出力される。最上位ビットXn−mが1の時、補正有りを意味する1が補正信号Sとして出力される。
補正回路23は、補正信号Sを入力する。補正信号Sが補正有りを意味し補正が必要であれば、補正回路23は、傾きaに対して、補正値αを加算又は減算し、傾きaを補正する。補正回路23は、補正された傾きacを出力する。補正信号Sが補正無しを意味し補正が不要であれば、補正回路23は、傾きaを補正することなく出力する。補正回路23は、加減算器15と選択回路16を有する。ステップS13で、加減算器15は、傾きaに対して補正値αを加算又は減算し、補正された傾きacを出力する。ステップS14で、選択回路16は、補正が必要であれば、補正された傾きacを選択し出力する。選択回路16は、補正が不要であれば、傾きaを選択し出力する。
ステップS4で、オフセット算出回路9は、基準値DMに対する下位桁ビット列DのオフセットΔXを算出する。
ステップS5で、乗算回路10は、傾きa又は補正された傾きacを入力する。乗算回路10は、傾きa又は補正された傾きacとオフセットΔXの積aΔX又はacΔXを計算する。
ステップS6で、加算回路11は、初期値bと積aΔX又はacΔXの和を計算する。加算回路11は、演算結果Yとして、和aΔX+b又はacΔX+bを出力する。
次に、実施例1の実施サンプルを説明する。上位桁ビット列Uのビット数mが3ビットの場合について説明する。オペランドX1、X2はそれぞれある区分に存在する。オペランドX1は、補正を必要としないオペランドXであるとして説明する。オペランドX2は、補正を必要とするオペランドXであるとして説明する。図5と同様に、オペランドXの定義域は2個の区分C0乃至C7に分割することができる。上位桁ビット列U0乃至U7と、区分C0乃至C7は一対一に対応する。区分C0乃至C7の内部では、D0のように同一の下位桁ビット列Dが同じ順番に配置される。このことから、上位桁ビット列Uは、オペランドXが属する区分C0乃至C7を表し、オペランドX1とX2は区分C3に属することがわかる。また、関数y=f(x)において、オペランドX1とX2が入力されると、精密解Y01とY02が存在することがわかる。
下位桁ビット列D1とD2は、オペランドX1とX2の属する区分C0乃至C7内での位置を表し、図10に示すように、オペランドX1とX2が区分C3に属することがわかる。
基準値DMとしては各区分C0乃至C7内の点、たとえば各区分C0乃至C7の中点Mを選択する。なお、オペランドXの下位(n−m−1)ビット、もしくは、区分Cの幅の1/2とオペランドXの下位(n−m−1)ビットの差をオフセットΔXとしてもよい。
図9のステップS2で、LUT1は、オペランドX1とX2の上位桁ビット列U3(011)を入力し初期値b13を出力する。
ステップS3で、LUT2は、オペランドX1とX2の上位桁ビット列U3(011)を入力し傾きa13を出力する。初期値b13と傾きa13が表す直線が直線L3lである。
ステップS11で、LUT3は、オペランドX1とX2の上位桁ビット列U3(011)を入力し補正値α13を出力する。傾きa13を補正値α13で補正した傾きが補正した傾きacであり、補正した直線が直線L3rである。
ステップS12で、補正要否判定回路13は、オペランドX1とX2の下位桁ビット列D1とD2の最上位ビットXn−mを入力し、補正信号Sを出力する。図10に示すように、オペランドX1の下位桁ビット列D1の最上位ビットXn−mは0であるので、補正無しを意味する0が補正信号Sとして出力される。オペランドX2の下位桁ビット列D2の最上位ビットXn−mは1であるので、補正有りを意味する1が補正信号Sとして出力される。
ステップS13で、加減算器15は、傾きa13に対して補正値α13を加算又は減算し、補正された傾きac(=a13+α13)を出力する。
ステップS14で、選択回路16は、オペランドX1については補正が不要であるので、傾きa13を選択し出力する。選択回路16は、オペランドX2については補正が必要であるので、補正された傾きacを選択し出力する。
ステップS4で、オフセット算出回路9は、オペランドX1について、オペランドX1の下位桁ビット列D1の基準値DMからの差分であるオフセットΔX1を計算する。オフセット算出回路9は、オペランドX2について、オペランドX2の下位桁ビット列D2の基準値DMからの差分であるオフセットΔX2を計算する。
ステップS5で、乗算回路10は、オペランドX1について、オフセットΔX1と傾きa13の積a13ΔX1を計算する。乗算回路10は、オペランドX2について、オフセットΔX2と補正した傾きac(=a13+α13)の積(a13+α13)ΔX2を計算する。
ステップS6で、加算回路11が、オペランドX1について、積a13ΔX1と初期値b13の和である演算結果Y1(=a13ΔX1+b13)を計算し、レジスタ6に出力する。加算回路11が、オペランドX2について、積(a13+α13)ΔX2と初期値b13の和である演算結果Y2(=(a13+α13)ΔX2+b13)を計算し、レジスタ6に出力する。
実施例1では、オペランドX1とX2の下位桁ビット列D1とD2の上位ビットXn−mから補正の要否を判別し、補正が必要な場合には初期値b10乃至b17および傾きa10乃至a17に対し補正をかけることにより、大幅な回路の増加を伴わずに高精度の近似値を得ることができる。LUT0のエントリ数2個を増加させることなく簡単な回路の付加のみによって近似値の精度を上げることができる。逆に、近似値の精度が同じであれば、実施例1は従来の技術に対して回路面積を削減できる。
なお、初期値b13と傾きa13による直線は、直線L3lである。基準値DMに対応する中点Mで二分された区分C3の左側半分の範囲において、直線と関数f(x)の誤差が最小になるように、初期値b13と傾きa13は予め設定されている。要否判定回路13は、オペランドX1とX2の下位桁ビット列D1とD2の上位ビットXn−mが、基準値DMに対応する中点Mで二分された区分C3の右側半分の範囲に相当する時のみ補正が必要と判定する。補正値αは、初期値bを固定したまま傾きaを補正し、直線は、直線L3lから直線L3rに補正される。補正値αは、区分C3の右側半分の範囲において、直線L3rを表す補正された直線と関数f(x)の誤差が小さくなるように、補正値α13が予め設定されている。
すなわち、中点Mをはさむ左右のそれぞれの範囲について、誤差が小さくなる傾きa13とacを算出し、傾きa13をLUT2に保存する。傾きacと傾きa13の差を補正値αとしてLUT3に保存する。目的とする関数f(x)にもよるが、通常、隣接した範囲についての傾きaの差は小さいため、補正値αの桁数は傾きaの桁数に比べ小さくすることが出来る。補正値αのLUT3の占有面積は、傾きaのLUT2の占有面積に比べ小さくすることが出来る。
実施例2に係る演算器8は、図11に示すように、LUT0と、オフセット算出回路9と、乗算回路10と、加算回路11と、補正要否判定回路13と、補正回路23を有している。
LUT0は、LUT1、LUT2、LUT3とLUT4を有している。図12のステップS2で、LUT1は、上位桁ビット列U0乃至U7を入力し、初期値b20乃至b27を出力する。ステップS3で、LUT2は、上位桁ビット列U0乃至U7を入力し、傾きa20乃至a27を出力する。ステップS11で、LUT3は、上位桁ビット列U0乃至U7を入力し、補正値α20乃至α27を出力する。ステップS15で、LUT4は、上位桁ビット列U0乃至U7を入力し、補正値β20乃至β27を出力する。初期値bを補正する補正値βは、初期値bに比べ小さい。このことにより、LUT0の大きさを指数関数的に増大させることなく、関数と直線の誤差を小さくできる。
補正要否判定回路13は、区分C0乃至C7の中を、左半分を補正しない範囲として、右半分を補正する範囲として分割する場合には、バッファ14を有する。なお、バッファ14は一例にすぎず、区分C0乃至C7の中を分割する補正しない範囲と補正する範囲に応じた論理回路を、補正要否判定回路13は有することができる。たとえば、バッファ14は、ステップS12で、オペランドXの下位桁ビット列Dの最上位ビットXn−mを入力し、補正信号Sを出力する。補正要否判定回路13は、実施例1と同じように機能する。
補正回路23は、補正信号Sを入力する。補正信号Sが補正有りを意味し補正が必要であれば、補正回路23は、傾きaに補正値αを加算又は減算し、傾きaを補正する。補正回路23は補正された傾きacを出力する。補正信号Sが補正無しを意味し補正が不要であれば、補正回路23は、傾きaを補正することなく出力する。
補正信号Sが補正有りを意味し補正が必要であれば、補正回路23は、初期値bに補正値βを加算又は減算し、初期値bを補正する。補正回路23は補正された初期値bcを出力する。補正信号Sが補正無しを意味し補正が不要であれば、補正回路23は初期値bを補正することなく出力する。補正回路23は、加減算器15、17と選択回路16、18を有する。ステップS13で、加減算器15は、傾きaに補正値αを加算又は減算し、補正された傾きacを出力する。ステップS14で、選択回路16は、補正が必要であれば、補正された傾きacを選択し出力する。選択回路16は、補正が不要であれば、傾きaを選択し出力する。ステップS16で、加減算器17は、初期値bに対して補正値βを加算又は減算し、補正された初期値bcを出力する。ステップS17で、選択回路18は、補正が必要であれば、補正された初期値bcを選択し出力する。選択回路18は、補正が不要であれば、初期値bを選択し出力する。
ステップS4で、オフセット算出回路9は、基準値DMに対する下位桁ビット列DのオフセットΔXを算出する。
ステップS5で、乗算回路10は、傾きa又は補正された傾きacを入力する。乗算回路10は、傾きa又は補正された傾きacとオフセットΔXの積aΔX又はacΔXを計算する。
ステップS6で、加算回路11は、初期値b又は補正された初期値bcと積aΔX又はacΔXの和を計算する。加算回路11は、演算結果Yとして、和aΔX+b又はacΔX+bcを出力する。
次に、実施例2の実施サンプルを説明する。上位桁ビット列Uのビット数mが3ビットの場合について説明する。オペランドX1、X2はそれぞれある区分に存在する。オペランドX1は、補正を必要としないオペランドXであるとして説明する。オペランドX2は、補正を必要とするオペランドXであるとして説明する。図5と同様に、オペランドXの定義域は2個の区分C0乃至C7に分割することができる。上位桁ビット列U0乃至U7と、区分C0乃至C7は一対一に対応する。区分C0乃至C7の内部では、D0のように同一の下位桁ビット列Dが同じ順番に配置される。このことから、上位桁ビット列Uは、オペランドXが属する区分C0乃至C7を表し、図13に示すように、オペランドX1とX2は区分C3に属することがわかる。また、関数y=f(x)において、オペランドX1とX2が入力されると、精密解Y01とY02が存在することがわかる。
下位桁ビット列D1とD2は、オペランドX1とX2の属する区分C0乃至C7内での位置を表し、図13に示すように、オペランドX1とX2が区分C3に属することがわかる。
基準値DMとしては各区分C0乃至C7内の点、たとえば各区分C0乃至C7の中点Mを選択する。
図12のステップS2で、LUT1は、オペランドX1とX2の上位桁ビット列U3(011)を入力し、初期値b23を出力する。
ステップS3で、LUT2は、オペランドX1とX2の上位桁ビット列U3(011)を入力し、傾きa23を出力する。初期値b23と傾きa23が表す直線が直線L3lである。
ステップS11で、LUT3は、オペランドX1とX2の上位桁ビット列U3(011)を入力し、補正値α23を出力する。傾きa23を補正値α23で補正した傾きが、補正した傾きacである。
ステップS15で、LUT4は、オペランドX1とX2の上位桁ビット列U3(011)を入力し、補正値β23を出力する。初期値b23を補正値β23で補正した傾きが、補正した初期値bcである。補正した傾きacと補正した初期値bcによる補正した直線が直線L3rである。
ステップS12で、補正要否判定回路13は、オペランドX1とX2の下位桁ビット列D1とD2の最上位ビットXn−mを入力し、補正信号Sを出力する。図13に示すように、オペランドX1の下位桁ビット列D1の最上位ビットXn−mは0であるので、補正無しを意味する0が補正信号Sとして出力される。オペランドX2の下位桁ビット列D2の最上位ビットXn−mは1であるので、補正有りを意味する1が補正信号Sとして出力される。
ステップS13で、加減算器15は、傾きa23に補正値α23を加算又は減算し、補正された傾きac(=a23+α23)を出力する。
ステップS14で、選択回路16は、オペランドX1については補正が不要であるので、傾きa23を選択し出力する。選択回路16は、オペランドX2については補正が必要であるので、補正された傾きacを選択し出力する。
ステップs16で、加減算器17は、初期値b23に補正値β23を加算又は減算し、補正された初期値bc(=b23+β23)を出力する。
ステップS17で、選択回路18は、オペランドX1については補正が不要であるので、初期値b23を選択し出力する。選択回路18は、オペランドX2については補正が必要であるので、補正された初期値bcを選択し出力する。
ステップS4で、オフセット算出回路9は、オペランドX1について、オペランドX1の下位桁ビット列D1の基準値DMからの差分であるオフセットΔX1を計算する。オフセット算出回路9は、オペランドX2について、オペランドX2の下位桁ビット列D2の基準値DMからの差分であるオフセットΔX2を計算する。
ステップS5で、乗算回路10は、オペランドX1について、オフセットΔX1と傾きa23の積a23ΔX1を計算する。乗算回路10は、オペランドX2について、オフセットΔX2と補正した傾きac(=a23+α23)の積(a23+α23)ΔX2を計算する。
ステップS6で、加算回路11が、オペランドX1について、積a23ΔX1と初期値b23の和である演算結果Y1(=a23ΔX1+b23)を計算し、レジスタ6に出力する。加算回路11が、オペランドX2について、積(a23+α23)ΔX2と補正された初期値bc(=b23+β23)の和である演算結果Y2(=(a13+α13)ΔX2+(b23+β23))を計算し、レジスタ6に出力する。
実施例2では、オペランドX1とX2の下位桁ビット列D1とD2の上位ビットXn−mから補正の要否を判別し、補正が必要な場合には初期値b20乃至b27および傾きa20乃至a27に対し補正をかけることにより、大幅な回路の増加を伴わずに高精度の近似値を得ることができる。LUT0のエントリ数を増加させることなく簡単な回路の付加のみによって近似値の精度を上げることができる。逆に、近似値の精度が同じであれば、実施例2は従来の技術に対して回路面積を削減できる。
なお、初期値b23と傾きa23による直線は、直線L3lである。基準値DMに対応する中点Mで二分された区分C3の左側半分の範囲において、直線と関数f(x)の誤差が小さくなるように、初期値b23と傾きa23は予め設定されている。要否判定回路13は、オペランドX1とX2の下位桁ビット列D1とD2の上位ビットXn−mが、基準値DMに対応する中点Mで二分された区分C3の右側半分の範囲に相当する時のみ補正が必要と判定する。補正値α、βは、傾きaと初期値bを補正し、直線は直線L3lから直線L3rに補正される。区分C3の右側半分の範囲において、直線L3rを表す補正された直線と関数f(x)の誤差が小さくなるように、補正値α23、β23が予め設定されている。
すなわち、中点Mをはさむ左右のそれぞれの範囲について、誤差が最小となる傾きa23、acと初期値b23、bcを算出し、初期値b23をLUT1に保存し、傾きa23をLUT2に保存する。傾きacと傾きa23の差を補正値α23としてLUT3に保存し、初期値bcと初期値b23の差を補正値β23としてLUT4に保存する。隣接した範囲についての傾きaの差は小さいため、補正値αのLUT3は傾きaのLUT2に比べ小さくすることが出来る。同様に、隣接した範囲についての初期値bの差は小さいため、補正値βのLUT4は初期値bのLUT1に比べ小さくすることが出来る。
実施例3に係る演算器8は、図14に示すように、LUT0と、オフセット算出回路9と、乗算回路10と、加算回路11と、補正要否判定回路13と、補正回路23を有している。補正要否判定回路13は、加減判定回路12を有している。
LUT0は、LUT1、LUT2とLUT4を有している。図15のステップS2で、LUT1は、上位桁ビット列U0乃至U7を入力し、初期値b40乃至b47を出力する。ステップS3で、LUT2は、上位桁ビット列U0乃至U7を入力し、傾きa40乃至a47を出力する。ステップS15で、LUT4は、上位桁ビット列U0乃至U7を入力し、補正値β40乃至β47を出力する。
補正要否判定回路13は、区分C0乃至C7の中を8分割して、両端部と中央部を補正する範囲として、両端部と中央部の間の範囲を補正しない範囲として分割する場合には、排他的論理和の否定回路20を有する。なお、排他的論理和の否定回路20は一例にすぎず、区分C0乃至C7の中を分割する補正しない範囲と補正する範囲に応じた論理回路を、補正要否判定回路13は有することができる。たとえば、排他的論理和の否定回路20は、ステップS12で、オペランドXの下位桁ビット列Dの上2位ビットXn−m−1と上3位ビットXn−m−2を入力し、補正信号S1を出力する。(Xn−m−1、Xn−m−2)が(0、1)と(1、0)の時、補正無しを意味する0が補正信号S1として出力される。(Xn−m−1、Xn−m−2)が(0、0)と(1、1)の時、補正有りを意味する1が補正信号S1として出力される。
加減判定回路12は、区分C0乃至C7の中を8分割して、両端部を加算により補正する範囲として、中央部を減算により補正する範囲として分割する場合には、排他的論理和の否定回路19を有する。なお、排他的論理和の否定回路19は一例にすぎず、区分C0乃至C7の中を分割する加算により補正する範囲と減算により補正する範囲に応じた論理回路を、加減判定回路12は有することができる。たとえば、加減判定回路12は、ステップS18で、オペランドXの下位桁ビット列Dの最上位ビットXn−mと上2位ビットXn−m−1を入力し、加減信号S2を出力する。(Xn−m、Xn−m−1)が(0、1)と(1、0)の時、減算を意味する0が加減信号S2として出力される。(Xn−m、Xn−m−1)が(0、0)と(1、1)の時、加算を意味する1が加減信号S2として出力される。
補正回路23は、補正信号S1と加減信号S2を入力する。加減信号S2が加算を意味すれば、補正回路23は、初期値bに対して補正値βを加算し、初期値bを補正する。加減信号S2が減算を意味すれば、補正回路23は、初期値bに対して補正値βを減算し、初期値bを補正する。補正信号S1が補正有りを意味し補正が必要であれば、補正回路23は、補正された初期値bcを出力する。補正信号S1が補正無しを意味し補正が不要であれば、補正回路23は、初期値bを補正することなく出力する。補正回路23は、加減算器17と選択回路18を有する。ステップS16で、加減算器17は、加減信号S2に基づいて初期値bに対して補正値βを加算又は減算し、補正された初期値bcを出力する。ステップS17で、選択回路18は、補正が必要であれば、補正された初期値bcを選択し出力する。選択回路18は、補正が不要であれば、初期値bを選択し出力する。
ステップS4で、オフセット算出回路9は、基準値DMに対する下位桁ビット列DのオフセットΔXを算出する。
ステップS5で、乗算回路10は、傾きaを入力する。乗算回路10は、傾きaとオフセットΔXの積aΔXを計算する。
ステップS6で、加算回路11は、初期値b又は補正された初期値bcと積aΔXの和を計算する。加算回路11は、演算結果Yとして、和aΔX+b又はaΔX+bcを出力する。
次に、実施例3の実施サンプルを説明する。上位桁ビット列Uのビット数mが3ビットの場合について説明する。オペランドX3、X4、X5はそれぞれある区分に存在する。オペランドX3は、補正を必要としないオペランドXであるとして説明する。オペランドX4は、減算する補正を必要とするオペランドXであるとして説明する。オペランドX5は、加算する補正を必要とするオペランドXであるとして説明する。図5と同様に、オペランドXの定義域は2個の区分C0乃至C7に分割することができる。上位桁ビット列U0乃至U7と、区分C0乃至C7は一対一に対応する。区分C0乃至C7の内部では、D0のように同一の下位桁ビット列Dが同じ順番に配置される。このことから、上位桁ビット列Uは、オペランドXが属する区分C0乃至C7を表し、図16に示すように、オペランドX3とX4とX5は区分C3に属することがわかる。また、関数y=f(x)において、オペランドX3とX4とX5が入力されると、精密解Y03とY04とY05が存在することがわかる。
オペランドXの下位桁ビット列Dは、オペランドX3乃至X5の属する区分C0乃至C7内での位置を表す。さらに、図16に示すように、下位桁ビット列Dの上位3ビットXn−m、Xn−m−1、Xn−m−2に注目する。上位3ビットXn−m、Xn−m−1、Xn−m−2によって、区分C3をさらに2個すなわち8個の領域Z0乃至Z7に分割できる。上位3ビット(Xn−m、Xn−m−1、Xn−m−2)の(0、0、0)、(0、0、1)、(0、1、0)、(0、1、1)、(1、0、0)、(1、0、1)、(1、1、0)、(1、1、1)と、領域Z0乃至Z7は一対一に対応する。このことから、上位3ビット(Xn−m、Xn−m−1、Xn−m−2)は、オペランドXが属する区分Z0乃至Z7を表し、オペランドX3とX4とX5は区分Z1とZ3とZ7に属することがわかる。オペランドX3、X4、X5が区分C3に属することがわかる。基準値DMとしては各区分C0乃至C7内の点、たとえば各区分C0乃至C7の中点Mを選択する。
図15のステップS2で、LUT1は、オペランドX3乃至X5の上位桁ビット列U3(011)を入力し、初期値b43を出力する。
ステップS3で、LUT2は、オペランドX3乃至X5の上位桁ビット列U3(011)を入力し、傾きa43を出力する。初期値b43と傾きa43が表す直線が直線L3である。
ステップS15で、LUT4は、オペランドX3乃至X5の上位桁ビット列U3(011)を入力し、補正値β43を出力する。初期値b43を補正値β43で加減した初期値が、補正した初期値bcである。補正した初期値bcによる補正した直線が直線L3+とL3−である。
ステップS12で、補正要否判定回路13は、オペランドXの下位桁ビット列Dの上2位ビットXn−m−1と上3位ビットXn−m−2を入力し、補正信号S1を出力する。図16に示すように、上位3ビット(Xn−m、Xn−m−1、Xn−m−2)が(0、0、0)、(0、1、1)、(1、0、0)、(1、1、1)の時のみ、補正有りを意味する1が補正信号S1として出力される。オペランドXが領域Z0、Z3、Z4、Z7に属する場合のみ、補正有りを意味する1が補正信号S1として出力される。したがって、オペランドX3は領域Z1に属すので、補正無しを意味する0が補正信号S1として出力される。オペランドX4とX5は領域Z3とZ7に属すので、補正有りを意味する1が補正信号S1として出力される。
ステップS18で、加減判定回路12は、オペランドXの下位桁ビット列Dの最上位ビットXn−mと上2位ビットXn−m−1を入力し、加減信号S2を出力する。図16に示すように、上位3ビット(Xn−m、Xn−m−1、Xn−m−2)が(0、0、0)、(0、0、1)、(1、1、0)、(1、1、1)の時のみ、加算を意味する1が加減信号S2として出力される。オペランドXが領域Z0、Z1、Z6、Z7に属する場合のみ、加算を意味する1が加減信号S2として出力される。したがって、オペランドX3とX5は領域Z1とZ7に属すので、加算を意味する1が加減信号S2として出力される。オペランドX4は領域Z3に属すので、減算を意味する0が加減信号S2として出力される。
なお、領域Z0乃至Z7について、補正の有無と補正値の加減をまとめて示す。領域Z0とZ7では、補正が有り、補正値は加算される。領域Z3とZ4では、補正が有り、補正値は減算される。領域Z1、Z2、Z5とZ6では、補正が無い。補正無しの場合、補正値は最終的に加減されない。
ステップs16で、加減算器17は、加減信号S2に基づいて、初期値b43に対して補正値β43を加算又は減算し、補正された初期値bc(=b43+β43 or b43−β43)を出力する。オペランドX3とX5は領域Z1とZ7に属すので、補正された初期値bc(=b43+β43)を出力する。オペランドX4は領域Z3に属すので、補正された初期値bc(=b43−β43)を出力する。
ステップS17で、選択回路18は、オペランドX3は領域Z1に属すので、補正が無く、選択回路18は、初期値b43を選択し出力する。オペランドX4は領域Z3に属すので、補正が有り、選択回路18は、補正された初期値bc(=b43−β43)を出力する。オペランドX5は領域Z7に属すので、補正が有り、選択回路18は、補正された初期値bc(=b43+β43)を出力する。
ステップS4で、オフセット算出回路9は、オペランドX3乃至X5について、オペランドの下位桁ビット列Dの基準値DMからの差分であるオフセットΔX3乃至ΔX5を計算する。
ステップS5で、乗算回路10は、オペランドX3乃至X5について、オフセットΔX3乃至ΔX5と傾きa43の積a43ΔX3乃至a43ΔX5を計算する。
ステップS6で、加算回路11が、オペランドX3について、積a43ΔX3と初期値b43の和である演算結果Y3(=a43ΔX3+b43)を計算し、レジスタ6に出力する。加算回路11が、オペランドX4について、積a43ΔX4と補正された初期値bc(=b43−β43)の和である演算結果Y4(=a43ΔX4+b43−β43)を計算し、レジスタ6に出力する。加算回路11が、オペランドX5について、積a43ΔX5と補正された初期値bc(=b43+β43)の和である演算結果Y5(=a43ΔX5+b43+β43)を計算し、レジスタ6に出力する。
実施例4では、オペランドXの下位桁ビット列Dの上位ビットXn−m−1、Xn−m−2から補正の要否を判別し、下位桁ビット列Dの上位ビットXn−m、Xn−m−1から補正の際の補正値の加減を行い、補正が必要な場合には初期値b40乃至b47に対し補正値を加減し補正することにより、大幅な回路の増加を伴わずに高精度の近似値を得ることができる。LUT0のエントリ数2個を増加させることなく簡単な回路の付加のみによって近似値の精度を上げることができる。逆に、近似値の精度が同じであれば、実施例3は従来の技術に対して回路面積を削減できる。
なお、初期値b43と傾きa43による直線は、直線L3である。領域Z1、Z2、Z5とZ6の範囲において、直線L3と関数f(x)の誤差が小さくなるように、初期値b43と傾きa43は予め設定されている。領域Z0とZ7の範囲において、直線L3+と関数f(x)の誤差が小さくなるように、初期値bcは予め設定されている。領域Z3とZ4の範囲において、直線L3−と関数f(x)の誤差が小さくなるように、初期値bcは予め設定されている。設定された初期値bcから補正値β43が予め設定されている。隣接した領域Z0乃至Z7についての初期値bの差は小さいため、補正値βのLUT4は初期値bのLUT1に比べ小さくすることが出来る。
実施例4に係る演算器8は、図17に示すように、LUT0と、オフセット算出回路9と、乗算回路10と、加算回路11と、補正要否判定回路13と、補正回路23を有している。
LUT0は、LUT1、LUT2とLUT3を有している。LUT1は、nビットの入力オペランドXの上位mビットU(m<n)を入力し、上位mビットUに対応する初期値bを出力する。LUT2は、同じ上位mビットUに対応する傾きaを出力する。LUT3は、同じ上位mビットUを入力とし初期値bに対する補正量の相対値である補正シフト量eを出力する。初期値bと傾きaの直線では対象とする関数f(x)との誤差が区分Cの端点および中点において大きくなる傾向がある。誤差の大きいこのような範囲において誤差が小さくなるような傾きの値を、LUT2に格納されている傾きaとの差分が2のe乗となる値2から求める。べき数eは、正の数でも負の数でもかまわない。べき数eを補正シフト量としてLUT3に格納する。
補正要否判定回路13は、入力オペランドXの下位(n−m)ビットDの上位数ビットXn−mを入力し、補正の要否を判別する。上位数ビットXn−mが1ビットであれば、実施例1と2が参考になる。2ビット以上であれば実施例3が参考になる。
オフセット算出回路9は、上位mビットUで指定される定義域C内の代表値DMと入力オペランドXとのオフセットΔXを算出する。
補正回路は、インバータ22、選択回路16、シフタ21と加減算器15を有する。選択回路16は、補正要否判定回路13の出力に従って、オフセット算出回路9から出力されるオフセット値ΔX、オフセット値ΔXの反転と0(ゼロ)の3つの入力のうちから1つを選択し出力する。シフタ21は、LUT3の出力である補正シフト量eに従い、選択回路16の出力をシフトする。シフトは容易な乗算と除算であると考えられる。加減算器15は、初期値bに対してシフタ21の出力を加減しあるいはそのまま出力する。
乗算回路10は、傾きaとオフセット値ΔXの乗算を行い、積aΔXを出力する。
加算回路11は、補正回路23の加減算器15の出力である補正していない初期値bあるいは補正された初期値bc+、bc−と、積aΔXを加算する。
実施例4では、傾きaに補正値2を加えて傾きを補正する。これより、補正前の式1から補正後は式2のようになる。そして、式2は式3のように変形できる。
Y=aΔX+b ・・・(1)
Y=(a+2)ΔX+b ・・・(2)
Y=aΔX+(2ΔX+b) ・・・(3)
式3より、傾きaに補正値2を加える補正は、初期値bに補正値2ΔXを加える補正とみなせる。補正値2ΔXは、オフセット値ΔXと傾きaの補正値2の積である。さらに、傾きaが2進数で表されてあれば、積は、べき数eのe桁だけ傾きaの桁をシフトすることにより求めることができる。
実際の演算は下記のように行われる。まず、LUT101、LUT102、LUT103は、入力オペランドXの上位mビットUを入力し、それぞれ上位mビットUに対応する初期値b、傾きa、補正シフト量eを出力する。
並行して、入力オペランドXの下位(n−m)ビットDがオフセット算出回路9に入力され、中点MからのオフセットΔXを出力する。
また、同時に、補正要否判定回路13は、入力オペランドXの下位(n−m)ビットDの最上位ビットXm−nを入力する。下位(n−m)ビットDを観測することにより、補正の必要な領域か否かを判別し、判別結果に応じて補正信号を出力する。
選択回路16は、補正信号に従って、オフセット算出回路9のオフセットΔX、オフセットΔXのインバータ22による反転と0(ゼロ)のうちの一つを選択する。
シフタ21は、選択されたオフセットΔX、オフセットΔXの反転、あるいは、0(ゼロ)を、補正シフト量eだけシフトし出力する。このことにより、補正の絶対量が求まる。
加減算器15は、シフトしたオフセットΔX、オフセットΔXの反転、あるいは、0(ゼロ)を、初期値bに対して加(減)算し出力する。
乗算回路10は、加減算と並行して、傾きaとオフセットΔXを乗算し積を出力する。
加算回路11は、加減算器15の出力と乗算回路10の出力を加算する。このことにより、最終結果である関数の近似値を得ることができる。
実施例4によれば、LUT0のエントリ数を大きく増加させることなく、かつ、演算時間を増加させることなく近似値の精度を上げることができる。
比較例の演算器の構成図である。 比較例の演算器のLUT0の構成図である。 比較例の演算器の演算方法のフローチャートである。 入力オペランドと演算結果の関係を表すグラフ(その1)である。 入力オペランドと演算結果の関係を表すグラフ(その2)である。 比較例の演算器の演算方法の入力オペランドXと演算結果Yの関係を表すグラフである。 実施例1に係る演算器の構成図である。 実施例1に係る演算器のLUT0の構成図である。 実施例1に係る演算器の演算方法のフローチャートである。 実施例1の実施サンプルに係る演算器の演算方法の入力オペランドX1、X2と演算結果Y1、Y2の関係を表すグラフである。 実施例2に係る演算器の構成図である。 実施例2に係る演算器の演算方法のフローチャートである。 実施例2の実施サンプルに係る演算器の演算方法の入力オペランドX1、X2と演算結果Y1、Y2の関係を表すグラフである。 実施例3に係る演算器の構成図である。 実施例3に係る演算器の演算方法のフローチャートである。 実施例3の実施サンプルに係る演算器の演算方法の入力オペランドX3、X4、X5と演算結果Y3、Y4、Y5の関係を表すグラフである。 実施例4に係る演算器の構成図である。
符号の説明
2 デコーダ
3 信号線
4 メモリセルアレイ
5 レジスタ
6 レジスタ
8 演算器
9 オフセット算出回路
10 乗算回路
11 加算回路
12 加減判定回路
13 補正要否判定回路
14 バッファ
15 加減算器
16 選択回路
17 加減算器
18 選択回路
19 否定排他的論理和
20 否定排他的論理和
21 シフタ
22 インバータ
23 補正回路

Claims (5)

  1. オペランドが上位桁ビット列と下位桁ビット列に分けられ、関数の前記オペランドの定義域を前記上位桁ビット列に関係付けられた複数の区分に分け、前記区分内の基準値において初期値である直線で前記関数を近似し、前記上位桁ビット列のエントリにより前記初期値と前記直線の傾きの少なくとも1つの相対補正値、前記初期値と前記傾きを出力するルックアップテーブルと、
    前記基準値に対する前記下位桁ビット列のオフセットを算出するオフセット算出回路と、
    前記下位桁ビット列の上位ビットに基づいて補正の要否を判定する補正要否判定回路と、
    前記補正が必要であれば、前記相対補正値に基づいた絶対補正値を少なくとも1つの前記初期値と前記傾きに加算又は減算する補正回路と、
    前記傾きと前記オフセットの積を計算する乗算回路と、
    前記初期値と前記積の和を計算する加算回路を有することを特徴とする関数近似値の演算器。
  2. オペランドが上位桁ビット列と下位桁ビット列に分けられ、関数の前記オペランドの定義域を前記上位桁ビット列に関係付けられた複数の区分に分け、前記区分内の基準値において初期値である直線で前記関数を近似し、前記上位桁ビット列のエントリにより前記初期値の相対補正値、前記初期値と前記直線の傾きを出力するルックアップテーブルと、
    前記基準値に対する前記下位桁ビット列のオフセットを算出するオフセット算出回路と、
    前記下位桁ビット列の上位ビットに基づいて補正の要否を判定する補正要否判定回路と、
    前記補正が必要であれば前記相対補正値に基づいた絶対補正値を加算又は減算した前記初期値を出力する補正回路と、
    前記傾きと前記オフセットの積を計算する乗算回路と、
    前記初期値と前記積の和を計算する加算回路を有することを特徴とする関数近似値の演算器。
  3. 前記相対補正値と前記絶対補正値が等しいことを特徴とする請求項2に記載の関数近似値の演算器。
  4. 前記絶対補正値は、前記相対補正値をシフト量として前記オフセットを桁送りしていることを特徴とする請求項2に記載の関数近似値の演算器。
  5. オペランドが上位桁ビット列と下位桁ビット列に分けられ、関数の前記オペランドの定義域を前記上位桁ビット列に関係付けられた複数の区分に分け、前記区分内の基準値において初期値である直線で前記関数を近似し、前記上位桁ビット列のエントリにより前記直線の傾きの補正値、前記初期値と前記傾きを出力するルックアップテーブルと、
    前記基準値に対する前記下位桁ビット列のオフセットを算出するオフセット算出回路と、
    前記下位桁ビット列の上位ビットに基づいて補正の要否を判定する補正要否判定回路と、
    前記補正が必要であれば、前記補正値を前記傾きに加算又は減算する補正回路と、
    前記傾きと前記オフセットの積を計算する乗算回路と、
    前記初期値と前記積の和を計算する加算回路を有することを特徴とする関数近似値の演算器。
JP2004013545A 2004-01-21 2004-01-21 関数近似値の演算器 Expired - Fee Related JP3845636B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2004013545A JP3845636B2 (ja) 2004-01-21 2004-01-21 関数近似値の演算器
US10/924,981 US7472149B2 (en) 2004-01-21 2004-08-25 Arithmetic unit for approximating function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004013545A JP3845636B2 (ja) 2004-01-21 2004-01-21 関数近似値の演算器

Publications (2)

Publication Number Publication Date
JP2005208845A JP2005208845A (ja) 2005-08-04
JP3845636B2 true JP3845636B2 (ja) 2006-11-15

Family

ID=34747368

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004013545A Expired - Fee Related JP3845636B2 (ja) 2004-01-21 2004-01-21 関数近似値の演算器

Country Status (2)

Country Link
US (1) US7472149B2 (ja)
JP (1) JP3845636B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101471750B1 (ko) * 2012-03-30 2014-12-10 애플 인크. 급수 전개를 이용하는 초월 및 비선형 컴포넌트들

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4530166B2 (ja) * 2005-09-08 2010-08-25 セイコーエプソン株式会社 光学センサの補正値取得方法、記録装置
US8150902B2 (en) 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
US9747105B2 (en) 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
JP4915454B2 (ja) * 2010-02-24 2012-04-11 Nttエレクトロニクス株式会社 演算回路及び方法
WO2012098436A1 (en) * 2011-01-21 2012-07-26 Freescale Semiconductor, Inc. Device and method for computing a function value of a function
WO2013095463A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Math circuit for estimating a transcendental function
US20130185345A1 (en) * 2012-01-16 2013-07-18 Designart Networks Ltd Algebraic processor
MX345372B (es) 2012-11-07 2017-01-27 Koninklijke Philips Nv Dispositivo de computo que almacena tablas de consulta para calculo de una funcion.
WO2014091693A1 (ja) * 2012-12-13 2014-06-19 日本電気株式会社 信号生成装置、信号生成方法及び数値制御発振器
US20150019604A1 (en) * 2013-07-10 2015-01-15 Texas Instruments Deutschland Gmbh Function accelerator
KR102359265B1 (ko) 2015-09-18 2022-02-07 삼성전자주식회사 프로세싱 장치 및 프로세싱 장치에서 연산을 수행하는 방법
US10075168B2 (en) 2016-03-05 2018-09-11 XiaMen HaiCun IP Technology LLC Configurable computing array comprising three-dimensional writable memory
WO2017137015A2 (zh) 2016-02-13 2017-08-17 成都海存艾匹科技有限公司 含有三维存储阵列的处理器
US10312917B2 (en) 2016-03-05 2019-06-04 HangZhou HaiCun Information Technology Co., Ltd. Configurable computing array for implementing complex math functions
US9948306B2 (en) 2016-03-05 2018-04-17 HangZhou HaiCun Information Technology Co., Ltd. Configurable gate array based on three-dimensional printed memory
US10141939B2 (en) 2016-03-05 2018-11-27 Chengdu Haicun Ip Technology Llc Configurable computing array using two-sided integration
US11966715B2 (en) 2016-02-13 2024-04-23 HangZhou HaiCun Information Technology Co., Ltd. Three-dimensional processor for parallel computing
US11080229B2 (en) 2016-02-13 2021-08-03 HangZhou HaiCun Information Technology Co., Ltd. Processor for calculating mathematical functions in parallel
US9838021B2 (en) 2016-03-05 2017-12-05 HangZhou HaiCun Information Technology Co., Ltd. Configurable gate array based on three-dimensional writable memory
US10848158B2 (en) 2016-02-13 2020-11-24 HangZhou HaiCun Information Technology Co., Ltd. Configurable processor
US10075169B2 (en) 2016-03-05 2018-09-11 Chengdu Haicun Ip Technology Llc Configurable computing array based on three-dimensional vertical writable memory
US10700686B2 (en) 2016-03-05 2020-06-30 HangZhou HaiCun Information Technology Co., Ltd. Configurable computing array
US11527523B2 (en) 2018-12-10 2022-12-13 HangZhou HaiCun Information Technology Co., Ltd. Discrete three-dimensional processor
US10084453B2 (en) 2016-03-05 2018-09-25 Chengdu Haicun Ip Technology Llc Configurable computing array
US10230375B2 (en) 2016-03-05 2019-03-12 HangZhou HaiCun Information Technology Co., Ltd. Configurable gate array comprising three-dimensional printed memory
US10116312B2 (en) 2016-03-05 2018-10-30 HangZhou HaiCun Information Technology Co., Ltd. Configurable gate array based on three-dimensional writable memory
US10148271B2 (en) 2016-03-05 2018-12-04 HangZhou HaiCun Information Technology Co., Ltd. Configurable computing array die based on printed memory and two-sided integration
US10305486B2 (en) 2016-03-05 2019-05-28 HangZhou HaiCun Information Technology Co., Ltd. Configurable computing array package based on printed memory
US10445067B2 (en) 2016-05-06 2019-10-15 HangZhou HaiCun Information Technology Co., Ltd. Configurable processor with in-package look-up table
US10372359B2 (en) 2016-05-10 2019-08-06 Chengdu Haicun Ip Technology Llc Processor for realizing at least two categories of functions
US11296068B2 (en) 2018-12-10 2022-04-05 HangZhou HaiCun Information Technology Co., Ltd. Discrete three-dimensional processor
US11734550B2 (en) 2018-12-10 2023-08-22 HangZhou HaiCun Information Technology Co., Ltd. Discrete three-dimensional processor
GB2580138B (en) 2018-12-21 2021-01-13 Graphcore Ltd Function approximation
US10942889B2 (en) 2019-06-04 2021-03-09 Micron Technology, Inc. Bit string accumulation in memory array periphery
CN113924622B (zh) * 2019-06-04 2022-09-09 美光科技公司 存储器阵列外围中的位串累加
US11327923B2 (en) 2019-09-04 2022-05-10 SambaNova Systems, Inc. Sigmoid function in hardware and a reconfigurable data processor including same
US11327713B2 (en) * 2019-10-01 2022-05-10 SambaNova Systems, Inc. Computation units for functions based on lookup tables
US11327717B2 (en) * 2019-11-19 2022-05-10 SambaNova Systems, Inc. Look-up table with input offsetting
US11328038B2 (en) 2019-11-25 2022-05-10 SambaNova Systems, Inc. Computational units for batch normalization
US11836629B2 (en) 2020-01-15 2023-12-05 SambaNova Systems, Inc. Computationally efficient softmax loss gradient backpropagation
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
KR102529602B1 (ko) * 2021-07-19 2023-05-08 주식회사 사피온코리아 멀티레벨 룩업테이블을 이용한 함수근사 장치 및 방법
KR102670314B1 (ko) * 2021-07-30 2024-05-29 주식회사 사피온코리아 부동 소수점 표현에서 함수 근사를 연산하는 방법 및 장치

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4282578A (en) * 1980-03-17 1981-08-04 Burr-Brown Research Corporation System for linearizing non-linear transducer signals
US4482975A (en) * 1982-03-29 1984-11-13 Motorola, Inc. Function generator
US5224064A (en) * 1991-07-11 1993-06-29 Honeywell Inc. Transcendental function approximation apparatus and method
DE4238084A1 (en) * 1991-11-15 1993-05-19 Hewlett Packard Co Analogue measurement value converter for real=time transformation into engineering unit - uses high value binary number bits to address stored coefficients, and lower value bits to perform correction using coefficients
US6049343A (en) * 1997-01-20 2000-04-11 Hitachi, Ltd. Graphics processing unit and graphics processing system
US6256653B1 (en) * 1997-10-23 2001-07-03 Advanced Micro Devices, Inc. Multi-function bipartite look-up table
US6163791A (en) * 1998-02-02 2000-12-19 International Business Machines Corporation High accuracy estimates of elementary functions
US6549924B1 (en) * 1999-10-01 2003-04-15 Hewlett-Packard Company Function generating interpolation method and apparatus
US6952710B2 (en) * 2000-06-09 2005-10-04 Walter Eugene Pelton Apparatus, methods and computer program products for performing high speed division calculations
US6976043B2 (en) * 2001-07-30 2005-12-13 Ati Technologies Inc. Technique for approximating functions based on lagrange polynomials

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101471750B1 (ko) * 2012-03-30 2014-12-10 애플 인크. 급수 전개를 이용하는 초월 및 비선형 컴포넌트들
US9015217B2 (en) 2012-03-30 2015-04-21 Apple Inc. Transcendental and non-linear components using series expansion

Also Published As

Publication number Publication date
US7472149B2 (en) 2008-12-30
US20050160129A1 (en) 2005-07-21
JP2005208845A (ja) 2005-08-04

Similar Documents

Publication Publication Date Title
JP3845636B2 (ja) 関数近似値の演算器
US4823301A (en) Method and circuit for computing reciprocals
US7315163B2 (en) Arithmetic unit
JPH07182141A (ja) 演算装置及び演算方法
JP2003196079A (ja) 積和演算装置、及び積和演算方法
US7809784B2 (en) Apparatus and method for calculation of divisions and square roots
JP3551113B2 (ja) 除算器
KR100970852B1 (ko) 감마 보정을 수행하는 신호 처리 장치 및 신호 처리 방법
US7016930B2 (en) Apparatus and method for performing operations implemented by iterative execution of a recurrence equation
US11119731B2 (en) Apparatus and method for rounding
CN108153513B (zh) 前导零预测
JP6863907B2 (ja) 演算回路
US10353671B2 (en) Circuitry and method for performing division
JP2645422B2 (ja) 浮動小数点演算処理装置
JP2578482B2 (ja) 浮動小数点演算器
KR100309520B1 (ko) 라운드오프기능을갖는승산방법및승산회로
JP2003209715A (ja) データ変換方法、データ変換回路及びデータ変換プログラム
JP2803506B2 (ja) 除算器
JP3259489B2 (ja) 10進除算器
JPH08249161A (ja) 立方根演算装置
JP2004078886A (ja) 浮動小数点格納方法及び浮動小数点演算装置
JP3390599B2 (ja) 除算装置
JP2010033275A (ja) データ処理方法及びデータ処理プロセッサ
JPH0540609A (ja) 浮動小数点除算装置
JP2003303096A (ja) 除算回路

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060808

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060821

LAPS Cancellation because of no payment of annual fees