JP4635087B2 - 拡張関数のための向上した浮動小数点演算部 - Google Patents

拡張関数のための向上した浮動小数点演算部 Download PDF

Info

Publication number
JP4635087B2
JP4635087B2 JP2008528261A JP2008528261A JP4635087B2 JP 4635087 B2 JP4635087 B2 JP 4635087B2 JP 2008528261 A JP2008528261 A JP 2008528261A JP 2008528261 A JP2008528261 A JP 2008528261A JP 4635087 B2 JP4635087 B2 JP 4635087B2
Authority
JP
Japan
Prior art keywords
mantissa
exponent
argument
generate
constant
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
JP2008528261A
Other languages
English (en)
Other versions
JP2009505309A (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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2009505309A publication Critical patent/JP2009505309A/ja
Application granted granted Critical
Publication of JP4635087B2 publication Critical patent/JP4635087B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F7/5443Sum of products
    • 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/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/535Indexing scheme relating to groups G06F7/535 - G06F7/5375
    • G06F2207/5355Using iterative approximation not using digit recurrence, e.g. Newton Raphson or Goldschmidt
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Description

本発明の実施形態は、マイクロプロセッサ分野に関しており、より具体的には、浮動小数点演算部に関する。
浮動小数点(FP)演算は、三次元(3−D)コンピュータグラフィック、画像処理、デジタル信号処理、天気予報、宇宙探索、地震処理、および数値解析などの多くの計算領域で益々普及してきている。コンピュータシステムにおけるFP計算力を高めるべく、特別に設計された浮動小数点演算部が開発されている。FP利用の多くには拡張関数の計算が関わる。拡張関数の例には、三角関数、指数・対数関数、平方根、逆数平方根、逆数(inverse)、除算、および、べき関数などがある。
FP拡張関数を計算する既存の技術は、幾らもの欠点を持つ。これら技術は、テーブルから得られる値の補間から、CORDIC(Coordinate Rotation Digital Computer)技術などの反復アルゴリズムまで、幅広い範囲に亘る。これら技術は専門的回路を持つ専門的なハードウェアを必要としうる。これらは典型的に高価であり、幅広い範囲の拡張関数に対応できるだけの柔軟性がない。
本発明の実施形態は、本発明の実施形態の例示に利用される以下の記載と関連する図面とを参照することで最大限に理解されるであろう。図面は以下を示す。
本発明の一実施形態を実施可能な処理システムを示す図である。
本発明の一実施形態を実施可能なグラフィックシステムを示す図である。
本発明の一実施形態によるFP部(FPU)を示す図である。
本発明の一実施形態による二乗・乗加算(square multiply-add)(MAD)部を示す図である。
本発明の一実施形態によるFP二乗器を示す図である。
本発明の一実施形態によるFP MAD部を示す図である。
本発明の一実施形態によるFP計算を行うプロセスを示すフローチャートである。
本発明の一実施形態による二乗プロセスを示すフローチャートである。
本発明の一実施形態による乗加算演算を行うプロセスを示すフローチャートである。
本発明の一実施形態は、浮動小数点演算を行う技術である。浮動小数点(FP)二乗器は第一の引き数を二乗して中間の引き数を生成する。第一の引き数および中間の引き数は、第一の/中間の仮数/指数である。FP乗加算(MAD)部は、乗加算演算を中間の引き数、第二の引き数、および第三の引き数に行い、結果仮数および結果指数を有す結果を生成する。第二の引き数および第三の引き数は、それぞれ第二の/第三の仮数/指数である。
以下の記載において、幾多の具体的詳細を述べる。しかし、本発明の実施形態はこれら具体的詳細なしに実施されうることは理解されたい。他の場合においては、公知の回路、構造、技術は示さないで本開示の理解を曖昧にしないようにしている。
本発明の一実施形態は、通常フローチャート、フロー図、構造図、あるいはブロック図として描かれるプロセスとして記載することができる。フローチャートは操作を逐次プロセスとして記載しているが、多くの操作は並列的にあるいは同時に行うことができる。さらに、操作順序は配列し直してもよい。プロセスは、その操作が完成したときに終了される。一つのプロセスは方法、プログラム、手順、製造・製作方法に対応していてよい。
本発明の一実施形態は、FP拡張関数を効率的に計算する技術である。FP拡張関数は少なくとも、三角関数、および繰り返し(reciprocation)、平方根、平方根の繰り返しなどの代数関数を含む。拡張関数計算は、Y=AxB+C形式の式を計算する基本的な乗加算(MAD)命令を利用する多項式近似法に基づく。代数関数計算は、ニュートン−ラプソン反復法を利用して行ってよい。
典型的な多項式近似法は、範囲減少段階、近似段階、および復元段階という三段階に分けられうる。範囲減少段階では、引き数を減少範囲に存在する値に変換する。近似段階では、範囲が減少した引き数の関数の多項式近似を行う。復元段階では、最終結果を所定の定数(単数あるいは複数)で構成して、原範囲を復元する。典型的に、範囲減少段階および復元段階は単純であり、効率的に実施することができる。これらは、単純なマスキング、比較、あるいは低次多項式計算を含みうる。近似段階は、多項式がかなり高次元でありうるので(例えば20を超える)、最も時間がかかる。
近似段階において、Horner法を利用して乗加算式を因数分解し(factor out)、乗算数を減らすことがある。例えば、四次元多項式y=ax+bx+cx+dx+eは、以下のように評価できる。
y=(((ax+b)x+c)x+d)x+e ・・・(1)
上記の式の評価には、基本的に4個のMAD命令のみが必要となる。
A=ax+b ・・・(2a)
B=Ax+c ・・・(2b)
C=Bx+d ・・・(2c)
D=Cx+e=y ・・・(2d)
概して、n次元多項式は以下の通りである。
f(x)=a+an−1+...+an−k+ak+1 ・・・(3)
多項式の評価は、各演算が新たな係数a(i=0,...,k)を含むn個のMAD演算を行うことで効率的に実行することができる。
多項式の累乗の項が2ずつ増分するようになっているとき、多項式の評価はY=AxB+Cの代わりにY=AxB+Cという基本演算を利用することで効率的に行われる場合がある。この演算は、二乗・乗加算演算、あるいはSMADと称される。SMADが基本計算部として実装されている場合、SMADを利用するこのような多項式の評価は、MADを利用する際よりも効率的に行いうる。例えば、以下の多項式を例としてあげる。
f(x)=ax+bx+cx+dx+e ・・・(4)
上記の多項式は依然8個のMAD演算が必要である。上記の式は以下のように書き換えられる。
f(x)=(((ax+b)x+c)x+d)x+e ・・・(5)
上記の式は、以下のように評価する際に4個のSMAD命令のみを必要とする。
A=ax+b ・・・(6a)
B=Ax+c ・・・(6b)
C=Bx+d ・・・(6c)
D=Cx+e=f(y) ・・・(6e)
一般的に言って、向上したMAD、あるいはSMAD命令は、MAD命令に比して二倍の計算効率を可能とする。多くの拡張関数は、2ずつ増分する累乗の項を持つ多項式により近似しうる。そのような種類の拡張関数の一つに三角関数がある。例えば、サイン関数は以下のように近似されうる。
サイン(x)=x−a+a−a ・・・(7)
コサイン関数は以下のように近似されうる。
コサイン(x)=1−b+b−b ・・・(8)
SMADはさらに、逆数(1/x)、平方根、逆数平方根(reciprocal square root)などの代数関数をニュートン−ラプソン法を利用して計算する際に計算効率を発揮する。ニュートン−ラプソン法は、初期値、低精度値、および推測値をとる反復近似法である。反復毎に精度は二倍になり、現在の反復で得られる結果が次の反復の初期推測値として用いられる。実際的な領域節約措置としては、初期推測値表を極小さくしておいて、ニュートン−ラプソン技法による追加的な反復用領域のための蓄えを相殺することが望ましい。逆数近似に利用される共通式は以下の通りである。
=xi−1(2−axi−1) ・・・(9)
MAD部を利用すると、上記の式の各反復は二つの命令をとる。
第一のMAD:z=2−a*xi−1 ・・・(10a)
第二のMAD:xi=z*xi−1+0 ・・・(10b)
しかし、向上したMADあるいはSMAD演算では、単一の命令で各ニュートン−ラプソン反復を評価することができる。これは、式(9)を以下のように並べ替えることで行われてよい。
xi=2xi−1−ax i−1 ・・・(7)
上記の式においては、2×xという乗算がxの指数の単純な反復により達成されうる。ニュートン−ラプソンプロセスの各反復により初期推測値の精度が二倍になる。各反復を計算するのに必要な命令数をMAD部の半分に減らすことで、同じ推測表を維持しつつスループット全体を二倍にすることができる、あるいは同じスループットを維持しつつ初期推測表のサイズを半減させることができる。
図1Aは、本発明の一実施形態を実施可能な処理システムを示す図である。システム10は、プロセッサ部15、浮動小数点演算部(FPU)20、メモリ制御器ハブ(MCH)25、メインメモリ30、入出力制御ハブ(IOH)40、インターコネクト45、大容量記憶デバイス50、および入出力(I/O)デバイス47〜47を含む。
プロセッサ部15は、ハイパスレッディング(hyper threading)、セキュリティ、ネットワーク、デジタルメディア技術を利用するプロセッサ、シングルコアプロセッサ、マルチコアプロセッサ、埋め込みプロセッサ、携帯プロセッサ、マイクロ制御器、デジタル信号プロセッサ、スーパスケーラコンピュータ、ベクトルプロセッサ、単一命令多重データ処理(SIMD)コンピュータ、複雑命令セットコンピュータ(CISC)、縮小命令セットコンピュータ(RISC)、超長命令語(VLIW)、あるいは混合アーキテクチャなどの任意の種類のアーキテクチャの中央処理装置を表す。
FPU20は、ベクトル処理について浮動小数点演算を行う双対プロセッサである。これは、プロセッサ部15に対して直接インタフェースをもつこともあり、プロセッサ部15との間で、メモリスペースなどのシステム資源を共有することもある。プロセッサ部15およびFPU20はベクトルデータおよびFP命令を含む命令およびデータを交換してよい。FPU20はさらに、プロセッサ部15のアドレススペースを占有する入出力(I/O)プロセッサとして見ることもできる。それはさらに、プロセッサ部15に直接インタフェースされるのでなく、MCH25にインタフェースされてもよい。それは、向上したMAD部を利用して拡張関数を計算する際にFPパイプラインを持つ高度に拡張可能なアーキテクチャを利用する。特に、FPU20は、三角関数あるいは代数関数(例えば、逆数、平方根、逆数平方根)、あるいは2ずつ増分する累乗を持つ多項式を含む項により、あるいはニュートン−ラプソン法により近似しうる任意の関数を効率的に計算するのに利用されてよい。
MCH25は、メインメモリ30およびICH40などのメモリおよび入出力デバイスに対して制御および構成を提供する。MCH25は、グラフィック、メディア、隔離実行モード、ホストから周辺へのバスインタフェース(host-to-peripheral bus interface)、メモリ制御、電源管理、などの多数の機能を統合したチップセットに統合することもできる。MCH25あるいはMCH25のメモリ制御機能はプロセッサ部15に統合することもできる。幾らかの実施形態においては、メモリ制御器は、プロセッサ部15の内部、外部にあるに関わらず、プロセッサ部15の全てのコアあるいはプロセッサのために作動してよい。その他の実施形態においては、それはプロセッサ部15の異なるコアあるいはプロセッサについて別個に作動する異なる部分を含むこともできる。
メインメモリ30はシステムコードおよびデータを記憶する。メインメモリ30は典型的にダイナミックRAM(DRAM)、エスラム(SRAM)、あるいは、リフレッシュされる必要のないものを含む任意の他の種類のメモリとともに実装される。メインメモリ30はプロセッサ部15に対して、あるいはプロセッサ部15およびFPU20の両方に対してアクセスすることができてよい。
ICH40は、入出力機能のサポートを意図した幾らかの機能を持つ。ICH40はさらに、MCH25と共にあるいはMCH25とは別個にチップセットに統合され、入出力機能を行ってよい。ICH40は、周辺構成要素相互接続(PCI)バスインタフェース、プロセッサインタフェース、割込み制御器、直接メモリアクセス(DMA)制御器、電源管理ロジック、タイマ、システム管理バス(SMBus)、ユニバーサルシリアルバス(USB)インタフェース、大容量記憶インタフェース、低ピンカウント(LPC)インタフェースなどの幾らかものインタフェースおよび入出力機能を含んでよい。
インターコネクト45は、周辺デバイスに対してインタフェースを提供する。インターコネクト45はポイントツーポイントであっても、多数のデバイスに接続されていてもよい。明確化の目的から、全てのインターコネクトは示していない。インターコネクト45は周辺構成要素インターコネクト(PCI)、PCIエクスプレス、ユニバーサルシリアルバス(USB)、および直接メディアインタフェース(DMI)などの任意のインターコネクトあるいはバスを含んでよいと考えられる。
大容量記憶デバイス50は、コード、プログラム、ファイル、データ、およびアプリケーションなどのアーカイブ情報を記憶する。大容量記憶デバイス50は、コンパクトディスク(CD)、読出し専用記憶素子(ROM)52、デジタルビデオ/バーサタイルディスク(DVD)53、フロッピードライブ54、およびハードドライブ56、および任意のほかの磁気性あるいは光学性の記憶デバイスを含んでよい。大容量記憶デバイス50は機械アクセス可能な媒体を読み取るメカニズムを提供する。入出力デバイス47〜47は、入出力機能を遂行する任意の入出力デバイスを含んでよい。入出力デバイス47〜47の例には、入力デバイス(例えば、キーボード、マウス、トラックボール、ポインティングデバイス)の制御器、メディアカード(音声、ビデオ、グラフィック)、ネットワークカード、および任意のほかの周辺制御器が含まれる。
図1Bは、本発明の一実施形態を実施可能なグラフィックシステム60を示す図である。グラフィックシステム60は、グラフィック制御器65、浮動小数点演算部(FPU)70、メモリ制御器75、メモリ80、ピクセルプロセッサ85、表示プロセッサ90、デジタル/アナログ変換器(DAC)95、および表示モニタを含む。
グラフィック制御器65は、ファストラインドローイング(fast line drawing)、二次元(2−D)および三次元(3−D)グラフィックレンダリング機能、シェーディング、エイリアス除去、ポリゴンレンダリング、透過効果(transparency effect)、色空間変換、アルファブレンディング、彩度キーイング(chroma keying)などのグラフィック操作を行うグラフィック機能を持つ任意のプロセッサである。FPU70は基本的に図1Aに示したFPU20に類似しており、グラフィックデータに浮動小数点演算を行う。特に、それは上述のように三角関数あるいは代数関数を効率的に計算する。それは、FP命令およびFPベクトル入力あるいはスカラ入力をグラフィック制御器65から受け取り、FP結果をグラフィック制御器65へ戻してよい。メモリ制御器75は、図1AのMCH25に類似したメモリ制御機能を行う。メモリ80は、グラフィック制御器65およびFPU70が処理した命令およびグラフィックデータの記憶目的で、SRAMあるいはDRAMメモリデバイスを含む。
ピクセルプロセッサ85は、幾何学計算(geometry calculation)、アフィン変換、モデルビュープロジェクション(model view projections)、3‐Dクリッピングなどの、特定の複雑なグラフィック機能を行うことのできる専門的なグラフィックエンジンである。ピクセルプロセッサ85はさらに、メモリ制御器75にインタフェースされて、メモリ80および/またはグラフィック制御器65にアクセスする。表示プロセッサ90はグラフィックデータの表示を処理し、パレットテーブル索引、同期、バックライト制御器、ビデオ処理などの、表示に関する機能を行う。DAC95はデジタル表示デジタルデータをアナログビデオ信号に変換して、表示モニタ97へ送る。表示モニタ97は、視聴目的で画面にグラフィック情報を表示する任意の表示モニタである。表示モニタは陰極線管(CRT)モニタ、テレビ(TV)セット、液晶ディスプレイ(LCD)、フラットパネル、あるいはデジタルCRTであってよい。
図2は、本発明の一実施形態による、図1Aおよび1Bに示すFPU20/70を示す図である。FPU20/70はシーケンサ210、FPパイプライン220、および出力回路230を含む。
制御器210は、入力ベクトルに作用する命令の発行を制御する。入力ベクトルは、プロセッサ部15(図1A)あるいはグラフィック制御器65(図1B)などの外部ユニットあるいはプロセッサにより提供されてよい。制御器210は幾らもの入力ベクトルおよび命令を記憶するのに入力キューを含んでよい。その深さは、スループットおよび処理要件に応じて任意の適切な深さであってよい。それは、先入れ先出し(FIFO)あるいは任意のほかの記憶アーキテクチャにより実施されてよい。各入力ベクトルはN個のスカラ構成要素を含むことができる。各スカラ構成要素はFP数であってよい。制御器回路210は入力キューから取得した入力ベクトルをディスパッチして、FPパイプライン220のステータスに応じて入力ベクトルに関する命令を発行する。
FPパイプライン220は拡張FP関数を計算する。それは、制御器210についてステータスを生成し、出力回路230についてFP結果を生成する。拡張FP関数は、多項式近似法により近似されうる三角関数(タンジェント、サイン、コサイン、逆タンジェント、逆サイン、逆コサイン)、あるいはニュートン−ラプソン技法により近似されうる代数関数などの超越関数のうちの任意のものであってよい。FPパイプラインはN SMAD部240〜240(Nは1を含む任意の正の整数)、係数記憶部250、および状態パイプライン260を含む。N SMAD部240〜240は連続して(in series)接続されている。最後のSMAD部の出力はFP結果を提供し、第一のSMAD部の入力にフィードバック経路245を介して接続される。このようにすることで、N SMAD部240〜240が一連の二乗・乗加算演算を計算することができるようになる。係数記憶部250はニュートン−ラプソン技法の初期推測値を含む、任意の近似用係数を記憶する。状態パイプライン260は丸めモード、例外処理、およびFPパイプラインのステータスを制御する。ステータスは、命令がフィードバック経路245を再循環しているか否かを示す。このステータスは、命令発行制御を目的として制御器210および出力回路230により利用される。状態パイプライン260は、フィードバック経路245に対応するフィードバック経路265を有す。そのラテンシーはN SMAD部240〜240のラテンシーに整合する。
出力回路230はFP結果を出力ベクトルに書き込む、あるいはアセンブルする。それは、入力ベクトルのスカラ構成要素の計算結果に対応しうるFP結果を取得して、出力バッファの適切なスカラ位置に書き込む。全てのスカラ結果が出力バッファに書き込まれたら、完全な出力ベクトルが、プロセッサ部15あるいはグラフィック制御器65などの外部ユニットあるいはプロセッサにより読み出される。
図3は、本発明の一実施形態による、図2に示す二乗・乗加算(SMAD)部240を示す図である。SMAD部240はFP二乗器310およびFP MAD部320を含む。FP MAD部320の特定のアーキテクチャはアプリケーションおよびシステム要件に依存する。以下の記載は例示目的のみである。
FP乗加算は、FP数が仮数および指数で表されるので、固定小数点乗加算とは異なる。基本的に、FP数に対して行われる演算は通常、仮数部および指数部に対して行われる演算を別々に含む。FP加算は典型的に、指数減算、仮数を指数差分に等しい量シフトすること、仮数の加算減算、結果のシフト(減算に対して)を行い正規形のままにすること、および結果の丸め処理からなる。FP乗算は典型的に、仮数乗算、指数加算、および正規化および丸め処理からなる。オーバーフローおよびアンダーフローの検知も必要に応じて含まれてよい。
FP二乗器310は、第一の引き数、FP数Aを受け取り、二乗演算を行い、中間の引き数Aを生成する。第一の引き数Aおよび中間の引き数AはFP数である。第一の引き数Aは第一の仮数Aおよび第一の指数Aを有す。同様に、中間の引き数Aは中間の仮数A および中間の指数A を有す。
FP乗加算(MAD)部320は、中間の引き数A、第二の引き数B、および第三の引き数Cを受け取り、中間の引き数A、第二の引き数B、および第三の引き数Cに対して乗加算演算を行い、FP結果を生成する。FP結果は、結果仮数および結果指数を有す。第二の引き数Bは、第二の仮数Bおよび第二の指数Bを有す。同様に、第三の引き数Cは、第二の仮数Cおよび第二の指数Cを有す。FP結果Yは故にY=AxB+Cとして計算される。
図4は本発明の一実施形態によるFP二乗器310を示す図である。FP二乗器310は乗算器410、選択器420、加算器430、および選択器440を含む。
乗算器410は、第一の仮数を、第一の仮数および第一の定数のうちから選択された仮数被乗数で乗算して、中間の仮数A を生成する。選択器420は、第一の仮数Aおよび第一の定数から仮数被乗数を提供する。一実施形態においてはこの第一の定数は一(1)である。
加算器は、第一の指数に、第一の指数Aおよび第二の定数のうちから選択された指数加数を加算して、中間の指数A を生成する。選択器440は、第一の指数Aおよび第二の定数から指数加数を提供する。一実施形態においては、第二の定数はゼロ(0)である。
第一の定数および第二の定数はFP数1.0および0をそれぞれ表す。選択器420および選択器440がこれら二つの定数を選択するよう設定されている場合、FP二乗器310は基本的にAと1とのFP乗算を行い、これにより生じる第一の引き数Aにおいて仮数および指数には変化がない。これは、SMADが二乗されることなしにMADとして機能するようプログラムあるいは構成されうるように行われる。
図5は、本発明の一実施形態による、図3に示すFP MAD部320を示す図である。FP MAD部320は、乗算器510、加算器520、調節器530、加算器570、丸めおよび正規化回路580、および結果指数調節器590を含む。
乗算器510は中間の仮数A を第二の仮数Bで乗算して、仮数積を生成する。この仮数積は調節器530へ行き、そこで加算器570にかけられる前に調節される。加算器520は中間の指数A を第二の指数Bで加算して、指数和を生成する。
調節器530は指数和を利用して仮数積および第三の仮数を調節する。それは、調節回路540、二つのシフタ550、560、および二つの選択器565、545を含む。調節回路540は基本的に指数同士を比較して差異を測定し、仮数をシフトさせるシフト量を生成する。それは、指数和と、第三の指数C、増分された第三の指数C+1、および第三の定数のうちから選択器545が選択するものとを利用することで、仮数シフトコードおよび調節された指数和を生成する。増分された第三の指数C+1は、加算器あるいは増分器を利用して、第三の指数Cから生成されてよい。シフタ550は、仮数積を仮数シフトコードを利用してシフトして、加算器570へ行くべき調節された仮数積を生成する。シフタ560は、選択器565が選択する、第三の仮数Cおよび第四の定数のうちの一方を仮数シフトコードを利用してシフトして、調節された第三の仮数を生成する。調節された第三の仮数は加算器570に行く。一実施形態においては、第三の定数および第四の定数はゼロである。
加算器570は、調節された仮数積および調節された第三の仮数を加算して、仮数和を生成する。丸めおよび正規化回路580は仮数和を丸めおよび正規化して、結果仮数Yを生成する。それはさらに、丸めおよび正規化コードを提供して結果指数を調節する。結果指数調節器590は、調節された指数和および丸めおよび正規化コードを利用して結果指数Yを生成する。
図6は、本発明の一実施形態によるFP計算を行うプロセス600を示すフローチャートである。
STARTすると、プロセス600は第一の引き数を取得する(ブロック610)。そして、プロセス600は多項式の係数を第二の引き数および第三の引き数として生成する(ブロック620)。
次に、プロセス600は第一の引き数を二乗して、中間の引き数を生成する(ブロック630)。第一の引き数および中間の引き数は、第一の仮数/指数および中間の仮数/指数をそれぞれ有す。そして、プロセス600は、中間の引き数、第二の引き数、および第三の引き数に対して乗加算演算を行い、結果を生成する(ブロック640)。この結果は結果仮数および結果指数を有す。第二の引き数および第三の引き数は第二の仮数/指数および第三の仮数/指数をそれぞれ有す。プロセス600は反復が必要か否かを判断する。必要であれば、プロセス600はブロック620へ戻り、係数生成を続ける。さもなくば、プロセス600は終了する。
図7は、本発明の一実施形態による二乗プロセス630を示すフローチャートである。
STARTすると、プロセス630は第一の仮数を、第一の仮数および第一の定数のうちから選択された仮数被乗数で乗算して、中間の仮数を生成する(ブロック710)。次に、プロセス630は第一の指数に、第一の指数および第二の定数のうちから選択された指数加数を加算して、中間の指数を生成して(ブロック720)、その後終了する。
図8は、本発明の一実施形態による乗加算演算を行うプロセス640を示すフローチャートである。
STARTすると、プロセス640は中間仮数を第二の仮数で乗算して、仮数積を生成する(ブロック810)。次に、プロセス640は仮数積および第三の仮数を調節する(ブロック820)。その後、プロセス640は中間の指数に第二の指数を加算して、指数和を生成する(ブロック830)。次に、プロセス640は、調節された仮数積と第三の仮数とを加算して、仮数和を生成する(ブロック840)。
そして、プロセス640は仮数和を丸めおよび正規化して結果仮数を生成し、丸めおよび正規化コードを提供する(ブロック850)。次に、プロセス640は、調節された指数和と、丸めおよび正規化コードとを利用して、結果指数を生成して(ブロック860)、その後終了する。
以下に、本発明の一実施形態による仮数積を調節するプロセスを示す
STARTすると、プロセスは、指数和と、第三の指数、増分された第三の指数、および第三の定数のうちの一つとを利用して、仮数シフトコードおよび調節された指数和を生成する。そして、プロセスは、仮数シフトコードを利用して仮数積をシフトして、調節された仮数積を生成する。次に、プロセスは、仮数シフトコードを利用して第三の仮数および第四の定数のうちの一方をシフトして、調節された第三の仮数を生成して、その後終了する。
本発明を幾らかの実施形態により記載してきたが、当業者にとっては本発明が記載された実施形態に限定されず、付随の請求項の精神および範囲内において変更および変形を加えて実施されうることが理解されよう。故に開示は限定としてでなく例示として見なされるべきである。

Claims (20)

  1. 一の入力である第一の引き数を二乗して中間の引き数を生成するFP二乗器と、
    前記FP二乗器に連結され、前記中間の引き数、第二の引き数、および第三の引き数に乗加算演算を行い、結果仮数と結果指数とを有す結果を生成するFPMAD部と、
    を含み、
    前記第一の引き数および前記中間の引き数は、第一の仮数/第一の指数および中間の仮数/中間の指数を有し、
    前記第二の引き数および前記第三の引き数はそれぞれ、第二の仮数/第二の指数および第三の仮数/第三の指数を有
    前記第一の引き数、前記中間の引き数、前記第二の引き数、前記第三の引き数及び前記結果は、浮動小数点数である、
    装置。
  2. 前記FP二乗器は、
    前記第一の仮数を、前記第一の仮数および第一の定数のうちから選択された仮数被乗数で乗算し、前記中間の仮数を生成する第一の乗算器と、
    前記第一の指数に、前記第一の指数および第二の定数のうちから選択された指数加数を加算し、前記中間の指数を生成する、第一の加算と、
    を含む請求項1に記載の装置。
  3. 前記FPMAD部は、
    前記中間の仮数を前記第二の仮数で乗算して仮数積を生成する第二の乗算器と、
    前記第二の乗算器に連結されて、前記仮数積および前記第三の仮数を調節する調節器と、
    前記第一の加算器に連結されて、前記中間の指数に前記第二の指数を加算して指数和を生成する第二の加算器と、
    前記調節器に連結されて、前記調節された仮数積と第三の仮数とを加算して仮数和を生成する第三の加算器と、
    を含む請求項2に記載の装置。
  4. 前記調節器は、
    前記指数和と、前記第三の指数、増分された第三の指数、および第三の定数のうちの一つとを利用して、仮数シフトコードおよび調節された指数和を生成する調節回路と、
    前記仮数シフトコードを利用して前記仮数積をシフトして、前記調節された仮数積を生成する第一のシフタと、
    前記第三の仮数および第四の定数のうちの一方を、前記仮数シフトコードを利用してシフトして、前記調節された第三の仮数を生成する第二のシフタと、
    を含む請求項3に記載の装置。
  5. 前記第三の加算器に連結され、前記仮数和を丸めおよび正規化して前記結果仮数を生成するとともに、丸めおよび正規化コードを提供する、丸めおよび正規化回路と、
    前記調節回路に連結され、前記調節された指数和および前記丸めおよび正規化コードを利用して前記結果指数を生成する、結果指数調節器と、
    をさらに含む請求項4に記載の装置。
  6. 前記第一の定数、前記第二の定数、前記第三の定数、および前記第四の定数はそれぞれ、単一(unity)、ゼロ、ゼロ、ゼロである、請求項4に記載の装置。
  7. 前記第一の引き数、前記第二の引き数、および前記第三の引き数は、拡張関数の多項式近似法およびニュートン−ラプソン反復法のうちの一方で利用される、請求項1から6のいずれか1項に記載の装置。
  8. 一の入力である第一の引き数を二乗して中間の引き数を生成することと、
    前記中間の引き数、第二の引き数、および第三の引き数に乗加算演算を行い、結果仮数と結果指数とを有す結果を生成することと、を含み、
    前記第一の引き数および前記中間の引き数は、第一の仮数/第一の指数および中間の仮数/中間の指数を有し、
    前記第二の引き数および前記第三の引き数はそれぞれ、第二の仮数/第二の指数および第三の仮数/第三の指数を有し、
    前記第一の引き数、前記中間の引き数、前記第二の引き数、前記第三の引き数及び前記結果は、浮動小数点数である、
    方法。
  9. 前記二乗することは、
    前記第一の仮数を、前記第一の仮数および第一の定数のうちから選択された仮数被乗数で乗算し、前記中間の仮数を生成することと、
    前記第一の指数に、前記第一の指数および第二の定数のうちから選択された指数加数を加算し、前記中間の指数を生成することと、
    を含む請求項8に記載の方法。
  10. 前記乗加算演算を行うことは、
    前記中間の仮数を前記第二の仮数で乗算して仮数積を生成することと、
    前記仮数積および前記第三の仮数を調節することと、
    前記中間の指数に前記第二の指数を加算して指数和を生成することと、
    前記調節された仮数積と第三の仮数とを加算して仮数和を生成することと、
    を含む請求項9に記載の方法。
  11. 前記調節することは、
    前記指数和と、前記第三の指数、増分された第三の指数、および第三の定数のうちの一つとを利用して、仮数シフトコードおよび調節された指数和を生成することと、
    前記仮数シフトコードを利用して前記仮数積をシフトして、前記調節された仮数積を生成することと、
    前記第三の仮数および第四の定数のうちの一方を、前記仮数シフトコードを利用してシフトして、前記調節された第三の仮数を生成することと、
    を含む請求項10に記載の方法。
  12. 前記仮数和を丸めおよび正規化して前記結果仮数を生成するとともに、丸めおよび正規化コードを提供することと、
    前記調節された指数和および前記丸めおよび正規化コードを利用して前記結果指数を生成することと、
    をさらに含む請求項11に記載の方法。
  13. 前記第一の定数、前記第二の定数、前記第三の定数、および前記第四の定数はそれぞれ、単一(unity)、ゼロ、ゼロ、ゼロである、請求項11に記載の方法。
  14. 前記第一の引き数、前記第二の引き数、および前記第三の引き数は、拡張関数の多項式近似法およびニュートン−ラプソン反復法のうちの一方で利用される、請求項8から13のいずれか1項に記載の方法。
  15. 制御器と、
    FPパイプラインと、
    出力回路と、を備え
    前記FPパイプラインは、
    連続して(in series)接続される複数のSMAD部を含み、
    単一のSMAD部は、
    一の入力である第一の引き数を二乗して中間の引き数を生成するFP二乗器と、
    前記FP二乗器に連結され、前記中間の引き数、第二の引き数、および第三の引き数に乗加算演算を行い、結果仮数と結果指数とを有す結果を生成するFPMAD部と、を含み、
    前記第一の引き数および前記中間の引き数は、第一の仮数/第一の指数および中間の仮数/中間の指数を有し、
    前記第二の引き数および前記第三の引き数はそれぞれ、第二の仮数/第二の指数および第三の仮数/第三の指数を有し、
    前記第一の引き数、前記中間の引き数、前記第二の引き数、前記第三の引き数及び前記結果は、浮動小数点数である、
    FPU
  16. 前記FP二乗器は、
    前記第一の仮数を、前記第一の仮数および第一の定数のうちから選択された仮数被乗数で乗算し、前記中間の仮数を生成する第一の乗算器と、
    前記第一の指数に、前記第一の指数および第二の定数のうちから選択された指数加数を加算し、前記中間の指数を生成する、第一の加算と、
    を含む請求項15に記載のFPU
  17. 前記FPMAD部は、
    前記中間の仮数を前記第二の仮数で乗算して仮数積を生成する第二の乗算器と、
    前記第二の乗算器に連結されて、前記仮数積および前記第三の仮数を調節する調節器と、
    前記第一の加算器に連結されて、前記中間の指数に前記第二の指数を加算して指数和を生成する第二の加算器と、
    前記調節器に連結されて、前記調節された仮数積と第三の仮数とを加算して仮数和を生成する第三の加算器と、
    を含む請求項16に記載のFPU
  18. 前記調節器は、
    前記指数和と、前記第三の指数、増分された第三の指数、および第三の定数のうちの一つとを利用して、仮数シフトコードおよび調節された指数和を生成する調節回路と、
    前記仮数シフトコードを利用して前記仮数積をシフトして、前記調節された仮数積を生成する第一のシフタと、
    前記第三の仮数および第四の定数のうちの一方を、前記仮数シフトコードを利用してシフトして、前記調節された第三の仮数を生成する第二のシフタと、
    を含む請求項17に記載のFPU
  19. 前記第三の加算器に連結され、前記仮数和を丸めおよび正規化して前記結果仮数を生成するとともに、丸めおよび正規化コードを提供する、丸めおよび正規化回路と、
    前記調節回路に連結され、前記調節された指数和および前記丸めおよび正規化コードを利用して前記結果指数を生成する、結果指数調節器と、
    をさらに含む請求項18に記載のFPU
  20. 前記第一の定数、前記第二の定数、前記第三の定数、および前記第四の定数はそれぞれ、単一(unity)、ゼロ、ゼロ、ゼロである、請求項18に記載のFPU
JP2008528261A 2005-09-28 2006-09-26 拡張関数のための向上した浮動小数点演算部 Expired - Fee Related JP4635087B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/236,984 US7676535B2 (en) 2005-09-28 2005-09-28 Enhanced floating-point unit for extended functions
PCT/US2006/037809 WO2007038667A1 (en) 2005-09-28 2006-09-26 Enhanced floating-point unit for extended functions

Publications (2)

Publication Number Publication Date
JP2009505309A JP2009505309A (ja) 2009-02-05
JP4635087B2 true JP4635087B2 (ja) 2011-02-16

Family

ID=37728336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008528261A Expired - Fee Related JP4635087B2 (ja) 2005-09-28 2006-09-26 拡張関数のための向上した浮動小数点演算部

Country Status (4)

Country Link
US (1) US7676535B2 (ja)
JP (1) JP4635087B2 (ja)
CN (1) CN1983161B (ja)
WO (1) WO2007038667A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429384B2 (en) * 2006-07-11 2013-04-23 Harman International Industries, Incorporated Interleaved hardware multithreading processor architecture
US8074053B2 (en) * 2006-07-11 2011-12-06 Harman International Industries, Incorporated Dynamic instruction and data updating architecture
US8346831B1 (en) * 2006-07-25 2013-01-01 Vivante Corporation Systems and methods for computing mathematical functions
CN102043609B (zh) * 2010-12-14 2013-11-20 东莞市泰斗微电子科技有限公司 一种浮点协处理器及相应的配置、控制方法
US9104479B2 (en) 2011-12-07 2015-08-11 Arm Limited Apparatus and method for rounding a floating-point value to an integral floating-point value
TWI537819B (zh) * 2012-05-17 2016-06-11 國立交通大學 運算模組、裝置及系統
US9043378B2 (en) * 2012-10-01 2015-05-26 Freescale Semiconductor, Inc. Multiply and accumulate feedback
US9207941B2 (en) * 2013-03-15 2015-12-08 Intel Corporation Systems, apparatuses, and methods for reducing the number of short integer multiplications
US20140372493A1 (en) * 2013-06-14 2014-12-18 Texas Instruments Incorporated System and method for accelerating evaluation of functions
CN103677742B (zh) * 2013-12-13 2016-08-17 广西科技大学 多浮点操作数加/减运算控制器
CN104714773B (zh) * 2015-03-04 2018-04-20 中国航天科技集团公司第九研究院第七七一研究所 用于旋转角计算的基于plb总线的嵌入式ip软核及旋转角计算方法
US10303439B2 (en) 2016-04-26 2019-05-28 International Business Machines Corporation Logarithm and power (exponentiation) computations using modern computer architectures
US20180081634A1 (en) * 2016-09-22 2018-03-22 Qualcomm Incorporated Piecewise polynomial evaluation instruction
US10572253B2 (en) * 2017-05-02 2020-02-25 Signalchip Innovations Private Limited System and method for reducing non-linearity in mixed signal processing using complex polynomial vector processor
CN112615852A (zh) * 2020-12-16 2021-04-06 百度在线网络技术(北京)有限公司 数据的处理方法、相关装置及计算机程序产品
CN117270811B (zh) * 2023-11-21 2024-02-02 上海为旌科技有限公司 非线性算子近似计算方法、装置、神经网络处理器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0317738A (ja) * 1989-06-15 1991-01-25 Nec Corp 演算処理装置
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
JP2972326B2 (ja) * 1990-11-28 1999-11-08 日本電気株式会社 平方根計算装置
JP3453618B2 (ja) * 1991-10-11 2003-10-06 ヒュンダイ、エレクトロニクス、インダストリーズ、カムパニー、リミテッド 根の多項近似式を利用した割り算と平方根の為のプロセッサー
JP2960595B2 (ja) * 1991-12-16 1999-10-06 パイオニアビデオ株式会社 ディジタル信号プロセッサ
US5305248A (en) * 1993-04-23 1994-04-19 International Business Machines Corporation Fast IEEE double precision reciprocals and square roots
EP0706122A3 (en) * 1994-09-30 1998-07-01 International Business Machines Corporation System and method to process multi-cycle operations
US5768170A (en) * 1996-07-25 1998-06-16 Motorola Inc. Method and apparatus for performing microprocessor integer division operations using floating point hardware
US5996066A (en) * 1996-10-10 1999-11-30 Sun Microsystems, Inc. Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions
US6275838B1 (en) * 1997-12-03 2001-08-14 Intrinsity, Inc. Method and apparatus for an enhanced floating point unit with graphics and integer capabilities
US6697832B1 (en) * 1999-07-30 2004-02-24 Mips Technologies, Inc. Floating-point processor with improved intermediate result handling
US20030101206A1 (en) * 2001-07-31 2003-05-29 Graziano Michael J. Method and system for estimating a base-2 logarithm of a number

Also Published As

Publication number Publication date
JP2009505309A (ja) 2009-02-05
WO2007038667A1 (en) 2007-04-05
CN1983161B (zh) 2015-11-25
US20070073798A1 (en) 2007-03-29
CN1983161A (zh) 2007-06-20
US7676535B2 (en) 2010-03-09

Similar Documents

Publication Publication Date Title
JP4635087B2 (ja) 拡張関数のための向上した浮動小数点演算部
JP5111377B2 (ja) 浮動小数点パイプラインに係る装置、方法およびシステム
US11797303B2 (en) Generalized acceleration of matrix multiply accumulate operations
US8037119B1 (en) Multipurpose functional unit with single-precision and double-precision operations
US11816482B2 (en) Generalized acceleration of matrix multiply accumulate operations
Nam et al. Power and area-efficient unified computation of vector and elementary functions for handheld 3D graphics systems
EP0821303A2 (en) Method and apparatus for performing microprocessor integer division operations using floating point hardware
US8051123B1 (en) Multipurpose functional unit with double-precision and filtering operations
JPH08185309A (ja) 4倍精度演算の実行方法
US7640285B1 (en) Multipurpose arithmetic functional unit
Nam et al. An embedded stream processor core based on logarithmic arithmetic for a low-power 3-D graphics SoC
US8681173B2 (en) Device, system, and method for improving processing efficiency by collectively applying operations
KR100919236B1 (ko) 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법
US8190669B1 (en) Multipurpose arithmetic functional unit
Vazquez et al. Redundant floating-point decimal CORDIC algorithm
TWI258698B (en) Static floating-point processor suitable for embedded digital signal processing and shift control method thereof
Hsiao et al. Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system
RU2276805C2 (ru) Способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой
US9361267B2 (en) Splitable and scalable normalizer for vector data
US20230110383A1 (en) Floating-point logarithmic number system scaling system for machine learning
Arnold et al. Implementing LNS using filtering units of GPUs
JP2002536763A (ja) 命令セット構造の比較拡張を有するプロセッサ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100727

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: 20101102

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101119

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees