JP3790307B2 - データプロセッサ及びデータ処理システム - Google Patents
データプロセッサ及びデータ処理システム Download PDFInfo
- Publication number
- JP3790307B2 JP3790307B2 JP27343296A JP27343296A JP3790307B2 JP 3790307 B2 JP3790307 B2 JP 3790307B2 JP 27343296 A JP27343296 A JP 27343296A JP 27343296 A JP27343296 A JP 27343296A JP 3790307 B2 JP3790307 B2 JP 3790307B2
- Authority
- JP
- Japan
- Prior art keywords
- floating
- data
- point
- register
- 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 - Lifetime
Links
- 238000012545 processing Methods 0.000 title claims abstract description 66
- 238000007667 floating Methods 0.000 claims abstract description 77
- 238000010606 normalization Methods 0.000 claims abstract description 43
- 239000013598 vector Substances 0.000 claims description 89
- 238000006243 chemical reaction Methods 0.000 claims description 70
- 238000004364 calculation method Methods 0.000 claims description 65
- 239000011159 matrix material Substances 0.000 claims description 42
- 230000009466 transformation Effects 0.000 claims description 24
- 230000000295 complement effect Effects 0.000 claims description 4
- 239000004065 semiconductor Substances 0.000 claims description 3
- 239000000758 substrate Substances 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 41
- 238000000034 method Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 8
- 238000012546 transfer Methods 0.000 description 6
- 230000000052 comparative effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 239000004606 Fillers/Extenders Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 229910021421 monocrystalline silicon Inorganic materials 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/509—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/548—Trigonometric functions; Co-ordinate transformations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
- Image Generation (AREA)
Description
【発明の属する技術分野】
本発明は、内積演算や行列演算に特化したデータプロセッサ、更には3次元グラフィックス制御に最適なデータ処理システムに関し、例えば4元以下の浮動小数点ベクトル又は行列を多用するアプリケーションを実行するデータプロセッサに適用して有効な技術に関するものである。
【0002】
【従来の技術】
3次元グラフィックス等では、図形の回転、拡大、縮小、透視投影及び平行移動などに4×4の変換行列を用いた行列演算を多用し、また、受光面の明るさ等を決定するのに内積演算を利用することができる。そのような行列演算や内積演算には積和演算の繰返しが必要になる。また、3次元グラフィックスで取り扱うデータについては、ハイエンドのシステムでは従来から浮動小数点数が用いられていた。ゲーム機や携帯情報端末等のようなコストの制約が厳しい分野でも、扱うデータは整数から浮動小数点数に移行しつつある。浮動小数点数を用いる方がプログラミングが容易で、高度な処理に向いているからである。
【0003】
積和演算器は、単一機能操作として(A×B)+Cの演算を行なうものであり、例えば、Microprocessor Report, Vol.8, No.15, November 14,1994, PP,6-9 PA-8000 Combines Complexity and Speed には積和演算ユニットを備えたプロセッサが示されているが、積和演算ユニットの並列度は2である。
【0004】
また、日経エレクトロニクス(日経PB社),1996.1.15(No.653),pp16-17 には3次元描画機能を1チップに集積した半導体集積回路について記載がある。これには、8個の固定小数点データの演算を1サイクルで実行する積和演算器を組み込んであり、また、4×4の行列を使った座標変換を2サイクルで処理できる、と記載されている。
【0005】
【発明が解決しようとする課題】
しかしながら、上記従来技術では、浮動小数点数を用いた4×4の行列演算や内積演算などを高速化することについては考慮されていない。本発明者は、浮動小数点数を用いた行列演算や内積演算を高速化することについて検討した。それによれば、浮動小数点数の積和演算器は回路規模が大きいため、単に並列化した場合には、その回路規模の増大が著しく、上記第1の文献にも記載されるように並列度は2程度であって、高速化には限界のあることが明らかにされた。また、第2の文献に記載の内容では4×4の行列を使った座標変換を2サイクルで処理でき、ある程度の高速化は実現されているが、ビット数の少ない整数積和演算器を用いる性質上、演算精度は犠牲にならざるを得ないことが明らかにされた。
【0006】
本発明の目的は、浮動小数点数を用いた行列演算や内積演算を高速化することができるデータプロセッサを提供することにある。
【0007】
本発明の別の目的は、回路規模の増大を極力抑えて行列演算や内積演算を高精度且つ高速に処理できるデータプロセッサを提供することにある。
【0008】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【0009】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0010】
すなわち、データプロセッサは、夫々異なるデータ入力信号線群から浮動小数点数の仮数部が供給され、供給された仮数部同士の乗算を行う複数の乗算器と、夫々の乗算器の出力を受けてアライメントシフトを行うアライナと、前記アライナのアライメントシフト数及び正規化前の指数を前記浮動小数点数の指数部に基づいて生成する指数処理部と、前記アライナの出力を並列的に加算する多入力加算器と、前記多入力加算器の出力を前記正規化前の指数に基づいて正規化する正規化器とを含む演算部を浮動小数点ユニットに備えて成るものである。
【0011】
複数の乗算器による乗算、各乗算器による乗算結果の加算が並列化されることにより、データプロセッサは、浮動小数点による内積演算やベクトル変換演算を高速化できる。また、1回の並列的な乗算及び加算によって内積を求めることができるから、2入力に対する積和演算毎に丸めを行うような処理も必要ないから、内積演算のレイテンシーが短く、演算精度も高く、また、2入力に対する積和演算毎を繰り返す場合のように演算順序が異なると演算結果も相違するという事態も生じない。しかも、データプロセッサは、正規化等のための回路を1個備えればよいから、回路規模の増大を極力抑えて、浮動小数点で内積演算やベクトル変換演算を高速に且つ高精度に行うことが可能になる。
【0012】
浮動小数点数の並列的な乗算及び加算における負数に対する処理を能率的に行う様にするには、前記演算部は更に、夫々の乗算器で乗算される浮動小数点数の符号に応じて、各乗算器の乗算結果に対する符号を生成する符号処理部を含み、前記アライナはアライメントシフト結果を選択的に反転又は非反転で出力するセレクタを有し対応する前記乗算結果に対する符合が負の場合には反転出力を選択し、前記多入力加算器は前記乗算結果に対する符合が負に対応されるアライナの出力に+1を行うキャリーを生成して、負の乗算結果に対し2の補数化処理を行うようにするとよい。
【0013】
演算部による演算対象データ及び演算結果データはレジスタファイルに一時的に格納する。このとき、乗算器による並列乗算のためには必要なデータ全てがレジスタファイルから複数個の乗算器等に並列的に供給されなければならない。このとき、レジスタのポート数およびレジスタ指定フィールドのビット数を増やさずにそのような処理を可能にするために、レジスタファイルをレジスタバンク構成とし、複数のレジスタバンク若しくは単数のバンクのレジスタを、前記乗算器の夫々の入力端子に並列的に接続する様にすればよい。
【0014】
内積演算に着目した場合、4元以下の内積を直接求める内積演算命令をデータプロセッサの命令セットに含めるとよい。前記浮動小数点ユニットは、夫々複数個の成分によって表されるデータ同士の内積演算を規定する前記内積演算命令を解読可能な制御部を有し、この制御部は、前記浮動小数点命令を解読して、レジスタファイルが保有するデータの成分を前記信号線群を介して前記演算部に与え、与えられたデータの内積を前記演算部に演算させ、内積の演算結果を前記レジスタファイルに書き込みさせる。
【0015】
行列変換演算に着目した場合、変換行列とベクトルとの積を求めるベクトル変換演算命令をデータプロセッサの命令セットに含めるとよい。前記浮動小数点ユニットは、夫々複数個の成分によって表されるデータと変換行列との行列演算を規定するベクトル変換演算命令を解読可能な制御部を有し、この制御部は、前記浮動小数点命令を解読して、レジスタファイルが保有するデータの成分と前記変換行列の成分とを読出して前記信号線群を介し前記演算部に与え、与えられたデータの内積を前記演算部に演算させ、この内積演算の結果を前記レジスタファイルに書き込みさせる一連の演算サイクルを、連続的に複数回繰返し実行させる。このとき、ソースレジスタとディスティネーションレジスタが重なっても正しく動作できる様にするには、連続的に複数回実行される最後の演算サイクルにおける前記レジスタファイルの読出し動作が、最初の演算サイクルにおける内積演算結果を前記レジスタファイルに書き込むタイミングよりも早くなるように、前記夫々の演算サイクルのレイテンシーを制御すればよい。また、このとき、前記各演算サイクルにおいて、前記レジスタファイルからの読み出しを双方のバンクに対して並列的に行い、前記レジスタファイルへの書込みを一方のバンクに対して行うようにすれば、浮動小数点レジスタの数の不足を補うことができる。即ち、複数のオペランド(変換行列、ベクトルデータ)を複数バンクに別々に割り当ててレジスタファイルを利用する。
【0016】
そのようなレジスタファイルの利用は、16ビット固定長浮動小数点命令のようにレジスタ指定フィールドが限られ、それ故にレジスタの数が制限されるようなアーキテクチャーに対して有用であり、且つ、そのようなリソースの制限されたアーキテクチャーのデータプロセッサにおいて浮動小数点による内積演算やベクトル変換演算を可能にしている。
【0017】
また、前記演算部に係数テーブルや乗算器のフィードバック回路を追加することにより、三角関数の近似値を区間分割と高次の多項式展開で求められるようにできる。これによれば、変換行列等に利用される正弦及び余弦を、チップ面積を大幅に増大させることなく得ることができる。
【0018】
データプロセッサは、アドレスバス及びデータバスに結合されたCPUを更に含み、前記浮動小数点ユニットが前記データバスに結合され、前記浮動小数点ユニットは16ビット固定長浮動小数点命令セットを用いて浮動小数点処理を実行する。前記CPUは前記浮動小数点ユニットが浮動小数点処理を実行するための命令とデータを得るのに必要なアドレシング処理を行う。これにより、浮動小数点ユニットはCPUと同じような高機能なアドレシングモードをサポートすることを必要とせず、この点においても、浮動小数点命令の16ビット固定長を可能にしている。
【0019】
【発明の実施の形態】
〔データプロセッサの構成〕
図1には本発明の一例に係るデータプロセッサのブロック図が示される。同図に示されるデータプロセッサ1は、32ビットRISC(Reduced Instruction Set Computer)アーキテクチャを有し、16ビット固定長浮動小数点命令を実行する。この実施の態様は特に3次元グラフィックスを十分にサポートする必要を持つような機器組み込み制御(例えばビデオ・ゲーム)への応用に有効である。
【0020】
このデータプロセッサ1は、浮動小数点ユニット2を有する。浮動小数点ユニット2が演算を行う浮動小数点数は単精度とされる。さらに、データプロセッサ1は中央処理装置(CPU)3を有し、このCPU3は整数を処理する能力を持つ整数ユニットとされる。前記CPU3は32ビットデータバス4を介して前記浮動小数点ユニット2に結合されている。CPU3及び浮動小数点ユニット2は命令バス5を介して命令キャッシュユニット6から命令を取り込む。命令アドレスはCPU3から命令キャッシュユニット6に与えられる。データキャッシュユニット7は、前記データバス4に接続され、データアドレスバス8を介してCPU3からデータアドレスが供給される。前記データキャッシュユニット7及び命令キャッシュユニット6は、夫々図示を省略するキャッシュコントローラ及びキャッシュメモリを備えている。前記命令キャッシュユニット6及びデータキャッシュユニット7はデータ信号やコントロール信号を含むキャッシュバス13を介してバスコントローラ9に接続される。命令キャッシュユニット6におけるキャッシュミス等に起因する外部アクセスのための命令アドレスは前記バスコントローラ9に与えられる。また、データキャッシュユニット7におけるキャッシュミス等に起因する外部アクセスのためのデータアドレスは前記バスコントローラ9に与えられる。バスコントローラ9はそれら命令アドレス又はデータアドレスに従って、代表的に図示されたアドレスピン及びデータピン等に結合される外部メモリなどをアクセスするために外部バスサイクルを起動する。また、バスコントローラ9にはタイマやシリアルコミュニケーションインタフェースコントローラ等の周辺回路10が周辺バス11を介して接続されている。図1に示されるデータプロセッサは、単結晶シリコンのような1個の半導体基板に形成されている。
【0021】
前記浮動小数点ユニット(以下単にFPUとも称する)2は浮動小数点処理のためにメモリからデータ又は命令を要求することになる。この実施の態様において、前記FPU2は、データキャッシュユニット7のキャッシュメモリにデータをストアし又は当該キャッシュメモリからデータを獲得するためのメモリアドレシング能力を持っていない。これは、FPU2のメモリ・アドレシング回路の必要性を取り除くことによってチップ面積を節約するためである。それに代えて、CPU3はFPU2に代わってキャッシュメモリなどをアドレシングする機能を有する。したがって、FPU2若しくは浮動小数点命令は、CPU3と同様の強力なアドレシングモードをサポートする必要はなく、その機能を全てCPU3が負担する。CPU3はFPU2のためにメモリからデータのフェッチを行うだけでなく、CPU3はまた、FPU2のために浮動小数点命令を含む全ての命令をメモリからフェッチする。命令はCPU3とFPU2の双方に取り込まれてデコードされる。CPU3は、デコードした命令がCPU命令である場合にはそれによって指示される整数処理を実行する。また、CPU3は、デコードした命令がFPU命令である場合には、FPU2に代わって実行すべきアドレシング処理などを行う。FPU2は、デコードした命令がFPU命令である場合にはそれによって指示される浮動小数点処理を実行する。また、FPU2は、デコードした命令がCPU命令である場合にはその命令を無視する。
【0022】
図2には前記データプロセッサの主なレジスタ構成が示される。CPUレジスタは16本の汎用レジスタr0〜r15と、それに対するカーネルバンクレジスタk0〜k7を有する。例えばカーネルバンクレジスタk0〜k7は、例外発生時に、汎用レジスタr0〜r7の退避に代え、バンク切換え制御によって利用される。
【0023】
FPUレジスタはフロントバンクとバックバンクを有するバンクレジスタ構成とされる。フロントバンクは16本のレジスタf0〜f15を有する。バックバンクはそれに対応する16本のレジスタb0〜b15を有する。何れのバンクのレジスタを利用するかは、例えばコントロールレジスタの制御ビットの値によって決定される。FPUレジスタの場合には更に、特定の浮動小数点命令を実行するとき双方のバンクのレジスタをソースレジスタ及びディスティネーションレジスタとして利用する。その詳細については後述する。フロントバンクのレジスタf0〜f15は、単精度フォーマットの浮動小数点数に対しては16本のレジスタとされ、倍精度フォーマットの浮動小数点数に対しては8本のレジスタ(d0,d2,d4,d8,d10,d12,d14)とされ、各成分が単精度フォーマットで与えられる4成分を持つベクトルデータに対しては4本のベクトルレジスタ(V0,V4,V8,V12)とされる。
【0024】
また、FPU2とCPU3によって共有されるコミュニケーションレジスタFPUCを有する。このレジスタFPUCは、CPU3とFPU2との間でのデータの受け渡しを高速化するために設けられている。尚、前記各レジスタは32ビット構成である。
【0025】
〔FPUの構成〕
図3には前記FPU2のブロックダイヤグラムが示される。FPU2は、転送ブロック20、レジスタファイル21、演算ブロック22及び制御部23によって構成される。演算ブロック22はその詳細を後述するように行列演算やベクトル演算の高速化を実現した積和演算回路の構成を有する。レジスタファイル21は図2で説明したFPUレジスタを含み、演算ブロック22に対しては8個のリードポートA[0],B[0],A[1],B[1],A[2],B[2],A[3],B[3]を有し、演算ブロック22からデータを受けるライトポートXを有する。転送ブロック20はレジスタファイル21のリードポートCから出力されるデータをデータバス4に供給するバスドライバ200、データバス4からの入力又はレジスタファイル21からの出力を選択してレジスタファイル21のライトポートYに供給するセレクタ201を有する。制御部23は、命令バス5から供給された命令をデコードし、そのデコード結果に従って転送ブロック20、レジスタファイル21及び演算ブロック22を制御する。バスドライバ200及びセレクタ201の制御信号BusDrv及びLoadCntlも制御部23で形成される。
【0026】
図4には演算ブロック22の一例が示される。演算ブロック22は、レジスタファイルのリードポートA[0],B[0],A[1],B[1],A[2],B[2],A[3],B[3](それらリードポートを単にA[n],B[n]とも記す)に夫々個別に結合する信号線群La0,Lb0,La1,Lb1,La2,Lb2,La3,Lb3(それら信号線群を単にLai,Lbiとも記す)を有する。4個の乗算器220a〜220dには夫々の信号線群Lai,Lbiを介して、浮動小数点数の仮数が、乗数及び被乗数として供給される。乗算器220a〜220dは、夫々に供給された乗数及び被乗数を乗算して、その積M[0],M[1],M[2],M[3](以下単にM[n]とも記す)を出力する。積M[0],M[1],M[2],M[3]は、夫々に対応されるアライナ221a〜221dに供給される。
【0027】
夫々の信号線群Lai,Lbiに供給される浮動小数点数の指数部は夫々加算器222a〜222dに供給される。また、夫々の信号線群Lai,Lbiに供給される浮動小数点数の符号部は夫々排他的論理和ゲートEOR1〜EOR4に供給される。
【0028】
前記加算器222a〜222d、最大指数選択部223及び減算器224a〜224dは指数処理部228を構成する。加算器222a〜222dは乗数と被乗数に対応される浮動小数点数の指数部を加算してその和E[0],E[1],E[2],E[3]を出力する。最大指数選択部223は、前記指数の和E[0],E[1],E[2],E[3]の内から最大のもをEmaxとして選択する。減算器224a〜224dはEmaxからE[0],E[1],E[2],E[3]を減算して差分Ediff[0],Ediff[1],Ediff[2],Ediff[3](以下単にEdiff[n]とも記す)を得る。前記差分Ediff[0],Ediff[1],Ediff[2],Ediff[3]は、前記アライナ221a〜221dによるアライメントシフト数を制御する。したがって、各アライナ221a〜221dの出力Maln[0],Maln[1],Maln[2],Maln[3](以下単にMaln[n]とも記す)は、最大指数Emaxに応じた桁位置を持つことになる。このように、指数部228は、前記差分Ediff[0],Ediff[1],Ediff[2],Ediff[3]によって前記アライナ221a〜221dのアライメントシフト数を決定すると共に、正規化前の指数Emaxを浮動小数点数の指数部に基づいて生成する。
【0029】
前記排他的論理和ゲートEOR1〜EOR4、排他的論理和ゲートEOR5〜EOR8及び符合選択部225は符号処理部229を構成する。前記排他的論理和ゲートEOR1〜EOR4は乗数と被乗数に対応される浮動小数点数の符号部を入力して、乗数と被乗数の積の符号を判定する。判定された符号S[0],S[1],S[2],S[3]は符合選択部225にて前記Emaxに応ずる一つがSmaxとして選択される。前記符号S[0],S[1],S[2],S[3]は代表符号Smaxとの一致が排他的論理和ゲートEOR5〜EOR8によって判定される。その判定結果Inv[0],Inv[1],Inv[2],Inv[3](以下単にInv[n]とも記す)は対応するアライナ221a〜221dに供給され、例えば判定結果Inv[0],Inv[1],Inv[2],Inv[3]が論理値“1”の場合にはアライナ221a〜221dは、対応する積M[n]を反転して出力Maln[n]を形成する。これは積M[n]を2の補数に変換するための前処理とされる。このように、符号処理部229は、夫々の乗算器220a〜220dで乗算される浮動小数点数の符号に応じて、正規化前の符号Smax及びこの符号Smaxに対する各乗算器の乗算結果に対する符号Inv[n]を生成する。
【0030】
4入力加算器226は、前記アライナ221a〜221dの出力Maln[n]を並列的に入力して加算する。4入力の並列加算処理に際して、前記符号Inv[n]が供給される。詳細は後述するが、4入力加算器226は、前記2の補数化の前処理が行われている出力Maln[n]に対してその最下位に+1するための処理を前記符号Inv[n]に基づいて行う。
【0031】
4入力加算器226の出力Macmは、正規化、正数化及び丸め処理回路227に供給される。この回路227は、前記正規化前の指数Emaxと加算出力Macmと符号Smaxとに基づいて正規化および正数化を行い、単精度浮動小数点フォーマットに適合する丸めを行って、浮動小数点数を得る。これによって得られる浮動小数点数は、A[0]・B[0]+A[1]・B[1]+A[2]・B[2]+A[3]・B[3]の積和演算結果とされる。
【0032】
図5には最大指数選択部223の一例が示される。前記E[1]とE[0]が大小比較器2230によって比較され、大きい方がセレクタ2231で選択される。同様に、E[3]とE[2]が大小比較器2232によって比較され、大きい方がセレクタ2233で選択される。双方のセレクタで選択されたものは、更に大小比較器2234で比較され、大きい方がセレクタ2235で選択される。セレクタ2235の出力が前記正規化前の指数Emaxとされる。
【0033】
図6には符合選択部225の一例が示される。セレクタ2250は前記S[1]又はS[0]を選択し、セレクタ2251は前記S[3]又はS[2]を選択し、セレクタ2252はセレクタ2250の出力又はセレクタ2251の出力を選択する。セレクタ2250〜2252の選択制御信号は前記大小比較器2230,2232,2234の比較判定結果信号MaxCntlとされ、これによって、Emaxとして選択された指数に係る浮動小数点数の符号部が、前記正規化前の符号Smaxとして選択される。
【0034】
図7にはアライナ221a(221b〜221d)の一例が示される。シフタ2210はM[n]を入力し、Ediff[n]によってアライメントシフト数(シフトビット数)が制御される。シフタ2210の出力はインバータ2211で反転され、インバータ2211の出力又はシフタ2210の出力がInv[n]によってセレクタ2212で選択され、選択された値がMaln[n]とされる。
【0035】
図8には4入力加算器226の一例が示される。この4入力加算器226は、桁上げ抜きの和(和出力)と桁上げ(キャリー出力)とをキャリー保存加算器アレイ2260で別々に求め、キャリー伝播加算器2261で最終の和を得る時点まで桁上げの伝播を遅延させる回路形式を有する。この4入力加算器226によって得られる和Macmは入力のビット数に対して最大2ビット増える場合があるから、4入力加算器226に入力される積Maln[n]は予じめ2ビット符号拡張が施されてキャリー保存加算器アレイ2260に供給される。
【0036】
図8において、前記2の補数化のための後処理(+1)は3ビットのキャリー信号Cin[0],Cin[1],Cin[2]によって行われる。前述の説明から明らかなように、符号選択部225はS[n]の内のどれか一つを選択するから、Inv[n]のうちの少なくとも一つは必ず論理値“0”にされる。従って、2の補数化の対象はMain[n]の内の3個以下にしかならない。これを検出するのがORゲート2262、ORゲート2263、AND・ORゲート2264でありる。図9にはInv[n]の値に対してCin[0],Cin[1],Cin[2]の採り得る値が示されており、これによっても明らかなように、Cin[2]はInv[2]とInv[3]の少なくとも一方が論理値“1”のときに論理値“1”にされ、Cin[1]はInv[1]とInv[0]の少なくとも一方が論理値“1”のときに論理値“1”にされ、Cin[0]はInv[1]とInv[0]或いはInv[2]とInv[3]が共に論理値“1”のときに論理値“1”にされる。
【0037】
図10には前記キャリー保存加算器アレイ2260とキャリー伝播加算器2261の詳細な論理構成の一例が示される。前記キャリー保存加算器アレイ2260は、特に制限されないが、複数個の4−2コンプレッサ(4−2COMP)2265によって構成される。夫々の4−2コンプレッサ2265は図11の(A)に例示されるように5入力(I1〜I4,Ci)と3出力(S,C,Co)を有する。キャリー出力Coは隣の上位ビットのキャリー入力Ciに接続するため、4−2コンプレッサ2265は4個のビットI1〜I4を加算する。Sはその加算出力、Cはその加算によって生ずるキャリー出力である。4−2コンプレッサ2265の中では、CoがCiに依存しないので、見掛け上、キャリー伝達はない。例えば1個の4−2コンプレッサ2265は、図11の(B)に例示されるように、2個の全加算器によって構成することができる。全加算器は、特に制限されないが、(C)に例示されたマルチプレクサMUXを3個用いて構成される。尚、4−2コンプレッサについて記載された文献としては信学技報(電子情報通信学会)TECHNICAL REPORT OF IEICE ICD94-135, DSP94-91(1994-10)の「パストランジスタ・マルチプレクサを適用した校則54×54ビット乗算器(第73〜79頁)がある。
【0038】
図10において、夫々の4−2コンプレッサ2265には、前記アライナ出力Maln[0]〜Maln[3]における同一桁位置のビットが下位側から順次4ビット単位で供給されている。Maln[0]0〜Maln[3]0はMaln[0]〜Maln[3]における最下位の4ビットを意味している。前記キャリー信号Cin[3]は最下位の4−2コンプレッサ2265のキャリー入力端子Ciに与えられる。前記キャリー伝播加算器2261は複数個の全加算器2261によって構成され、キャリー出力は上位の全加算器のキャリー入力とされる。全加算器の一方の加算入力は4−2コンプレッサ2265の和出力Sとされ、もう一方の加算入力は一つ上位に配置された4−2コンプレッサ2265のキャリー出力Cとされる。前記キャリー信号Cin[2]は最下位の全加算器の一方の加算入力信号として与えられ、前記キャリー信号Cin[1]は最下位の全加算器のキャリー入力信号として与えられる。
【0039】
図12にはレジスタファイルの一例ブロックダイヤグラムが示され、図13にはレジスタファイルを構成する各レジスタグループの構成が示され、図14にはレジスタグループの各レジスタ回路の構成が示される。
【0040】
レジスタファイル21は、特に制限されないが、図12に示されるように4個のレジスタグループFR-Gr.[0]〜FR-Gr.[3]を有し、各レジスタグループFR-Gr.[m]は図13に示されるように4個のレジスタ回路FR[m],FR[m+4],FR[m+8],FR[m+12]を有する。図13においてmは0〜3の整数である。夫々のレジスタ回路は図14に示されるように、フロントバックとバックバンクを構成するための一対のレジスタFRJ[n],FRK[n]を有する。図14においてnは0〜15の整数である。レジスタFRJ[n],FRK[n]に対する書込み動作の指示は信号Write[n]によって与えられる。書込み対象とされるレジスタは信号Bankによって何れか一方が選択される。レジスタFRJ[n],FRK[n]の出力と端子P[n],Q[n]の対応は信号BankによってセレクタSL1,SL2で交互に切換え可能にされる。図13に示されるように1個のレジスタグループにおいて、4個のレジスタ回路の端子P[m],P[m+4],P[m+8],P[m+12]は、2ビットの信号ReadAによりセレクタSL3で何れか1個が選択されることによって端子R[m]に接続可能にされ、同様に2ビットの信号ReadBによりセレクタSL4で何れか1個が選択されることによって端子B[m]に接続可能にされる。レジスタグループの端子Q[m],Q[m+4],Q[m+8],Q[m+12]は信号ReadAによって制御されるセレクタSL5〜SL8でレジスタグループ単位に選択される。前記セレクタSL5,SL6,SL7,SL8の出力と夫々のレジスタグループの出力R[3],R[2],R[1],R[0]とは信号ReadTypeによって制御されるセレクタSL9,SL10,SL11,SL12で選択され、選択されたものがリードポートA[3],A[2],A[1],A[0]の出力とされる。したがって、リードポートA[3],A[2],A[1],A[0]からは、図15に示されるように、レジスタグループ単位で4個の浮動小数点レジスタから並列的にデータをリードし、或いは、個々のレジスタグループから1個づつ並列的にデータをリードすることができる。また、夫々のレジスタグループの出力B[3],B[2],B[1],B[0]はそのままリードポートB[3],B[2],B[1],B[0]の出力とされる。したがって、リードポートB[3],B[2],B[1],B[0]からは、図16に示されるように、個々のレジスタグループから1個づつ並列的にデータをリードすることができる。前記リードポートCには夫々のレジスタグループの出力B[3],B[2],B[1],B[0]が信号ReadCによってセレクタSL13で選択されたものが接続される。したがって、図17に示されるように、信号ReadBとReadCとの状態に応じてレジスタを任意に選択してポートCから読み出すことができる。前記ライトポートX,Yからの入力は信号WriteTypeによって制御されるセレクタSLで選択される。
【0041】
〔内積演算〕
前記FPU2を用いた内積演算について説明する。例えば内積は、図18に示されるように、3次元空間において、ある特定の面に光を当てた時の面の明るさを求めるのに利用できる。FPU2は、ベクトルV1(=〔X1,Y1,Z1,W1〕)とV2(=〔X2,Y2,Z2,W2〕)との内積iを1個の浮動小数点内積演算命令(単に内積演算命令とも称する)ftpr Vn,Vmによって求めることができる。
【0042】
前記内積演算命令による処理の概略は図19に示される。例えば、レジスタファイル21のベクトルレジスタV0に[X1,Y1,Z1,W1]が、V4に[X2,Y2,Z2,W2]がロードされているものとする。前記内積演算命令が制御部23で解読されると、レジスタファイル21のリード動作が制御されて、乗算器220aにX1とX2が、乗算器220bにY1とY2が、乗算器220cにZ1とZ2が、乗算器220dにW1とW2が、夫々並列的に供給される。図19では前記指数処理部や符号処理部などの図示を省略しているが、並列的な乗算結果は前記アライナによるシフトや反転等を経て4入力加算器226で加算され、その加算結果に対して正規化等が行われて内積が得られる。得られた内積は、ベクトルレジスタV0の内、W1の値を保有するレジスタにポートXを介して上書きされる。このように、浮動小数点の積和演算が並列的に行われるので、内積演算を高速化できる。
【0043】
図20には前記内積演算命令におけレジスタファイルの利用に関する仕様の一例が示される。即ち、ベクトルV[m]とV[n]の内積演算結果を浮動小数点レジスタFR[n+3]に格納する。ベクトルV[n]の成分は浮動小数点レジスタFR[n],FR[n+1],FR[n+2],FR[n+3]にロードされる。ここでnは0,4,8,12の何れかであり、またFR[n]は前記フロントバンクのレジスタfnに対応されるものと理解されたい。レジスタファイル21の構成上、レジスタFR[n]は、制御信号Bank=0の場合にはレジスタFRJ[n]に割り当てられ、制御信号Bank=1の場合にはレジスタFRK[n]に割り当てられる。この仕様において、例えば図15のBank=0、ReadA=0でポートAからの出力が指定されたるレジスタFRJ[0],FRJ[1],FRJ[2],FRJ[3]にベクトルデータV[n]を置き、図16のBank=0、ReadB=1でポートBからの出力が指定されたレジスタFRJ[4],FRJ[5],FRJ[6],FRJ[7]にベクトルデータV[m]を置けば、V[n]とV[m]の内積演算に必要な8個の成分データを並列的に演算ブロックに与えて上述の内積演算を行うことができる。演算に際して実際にどのレジスタをリードするかは内積演算命令のレジスタ指定フィールドで指定される。そのレジスタ指定フィールドにおけるレジスタの指定には、ソースレジスタとディスティネーションレジスタの指定に4ビットを用いる。
【0044】
〔ベクトル変換演算〕
次に、前記FPU2を用いたベクトル変換演算について説明する。周知の4行4列の変換行列は並進、回転、伸張、及び透視等の変換を表す事ができ、この変換行列とベクトルの積によって、その変換行列が表すベクトル変換を得ることができる。ベクトル変換演算は一般に図21で示されるように表すことができる。Aは変換行列、Pは変換対象とされるデータ、P’は変換後のデータである。そのようなベクトル変換は1個の浮動小数点ベクトル変換演算命令(単にベクトル変換演算命令とも称する)ftrv back,Vnによって求めることができる。
【0045】
前記ベクトル変換演算命令による処理の概略は図22に示される。例えば、変換行列はバックバンクの16本のレジスタに配置される。そしてベクトルデータ[Xi,Yi,Zi,Wi]はフロントバンクを構成するレジスタに格納される。
【0046】
このベクトル変換演算命令による処理は、実質的に4回の内積演算を順次繰り返す処理に等しい。即ち、[Xi,Yi,Zi,Wi]×[a11,a12,a13,a14]を演算してその結果をXiの領域にライト、[Xi,Yi,Zi,Wi]×[a21,a22,a23,a24]を演算してその結果をYiの領域にライト、[Xi,Yi,Zi,Wi]×[a31,a32,a33,a34]を演算してその結果をZiの領域にライト、[Xi,Yi,Zi,Wi]×[a41,a42,a43,a44]を演算してその結果をWiの領域にライト、の処理を順次実行する。夫々の処理は実質的に内積演算処置と同じである。
【0047】
前記ベクトル変換演算命令が制御部23で解読されると、上記最初の内積演算処理を行うためのデータがレジスタファイル21から乗算器220a〜220d等に夫々並列的に供給される。図22では同じく前記指数処理部や符号処理部などの図示を省略しているが、並列的な乗算結果は前記アライナによるシフトや反転等を経て4入力加算器226で加算され、その加算結果に対して正規化等が行われて内積が得られる。得られた内積は、Xiを保有するレジスタにライトされる。このような処理をレジスタファイルのリード対象レジスタとライト対象レジスタを順次変更しながら繰り返す。このように、浮動小数点の内積処理を4回連続的に繰り返すことにより、ベクトル変換の結果を高速に得ることができる。
【0048】
図23には前記ベクトル変換演算命令におけレジスタファイルの利用に関する仕様の一例が示される。即ち、ベクトルV[n]と変換行列Matrixとの積をレジスタV[n]に上書きする。ベクトルV[n]の成分は浮動小数点レジスタFR[n],FR[n+1],FR[n+2],FR[n+3]にロードされる。ここでnは0,4,8,12の何れかであり、またFR[n]は前記フロントバンクのレジスタfnに対応されるものと理解されたい。変換行列はバックバンクを構成するレジスタFB[0]〜FB[15](図2のb0〜b15に対応されるレジスタ)に格納される。レジスタファイル21の構成上、レジスタFB[n]は、制御信号Bank=0の場合にはレジスタFRK[n]に割り当てられ、制御信号Bank=1の場合にはレジスタFRJ[n]に割り当てられる。
【0049】
この仕様において、変換行列Matrixは、図15においてReadType=1の状態でポートAから並列的に出力され、ベクトルV[n]はポートBから並列的に出力される。例えば最初の内積演算では、図15を参照すれば、ReadType=1,Bank=1,ReadA=0によって、FRJ[0],FRJ[4],FRJ[8],FRJ[12]から変換行列Matrixの第1行目がポートAから出力され、これに並行して、Bank=1,ReadB=0によって、FRK[0],FRK[1],FRK[2],FRK[3]から変換対象ベクトル[Xi,Yi,Zi,Wi]がポートBから出力される。順次これに続く3回の内積演算では、それ毎に、ReadAによる選択を1,2,3のように変化させればよい。Bポートからのリード対象レジスタは4回の内積演算処理において同一とされる。
【0050】
一つのベクトル変換命令による前記複数回の内積演算処理は図24に示されるようにパイプライン処理で行われる。つまり、1つの命令で、4つのパイプライン処理が実行される。内積演算処理の一つのパイプは、レジスタリードステージRR、第1演算ステージF1、第2演算ステージF2、第3演算ステージF3、レジスタライトステージRW、及び図示を省略する命令フェッチステージとされる。命令フェッチステージは当然レジスタリードステージRRの前に配置され、また、レジスタリードステージRRは命令のデコード処理も含むことになる。この例では、乗算から正規化までの演算を3個の演算ステージを経て行うことになる。図24の(1)のパイプラインで実行される処理は、(FB[0],FB[4],FB[8],FB[12])×V[n]の内積演算を行ってその結果をレジスタFR[n]にライトし、(2)のパイプラインで実行される演算処理は、(FB[1],FB[5],FB[9],FB[13])×V[n]の内積演算を行ってその結果をFR[n+1]にライトし、(3)のパイプラインで実行される演算処理は、(FB[2],FB[6],FB[10],FB[14])×V[n]の内積演算を行ってその結果をFR[n+2]にライトし、(4)のパイプラインで実行される演算処理は、(FB[3],FB[7],FB[11],FB[15])×V[n]の内積演算を行ってその結果をFR[n+3]にライトするものとされる。ディスティネーションレジスタFR[n],FR[n+1],FR[n+2],FR[n+3]はV[n]のソースレジスタでもある。
【0051】
このとき、一連の4回の内積演算処理におきて、先頭のパイプライン(1)におけるレジスタライトRWは、最後のパイプライン(4)におけるレジスタリードRRの後にされている。換言すれば、V[n]の成分と前記変換行列の成分とをレジスタファイル21から読出して内積演算を行い当該内積演算の結果をレジスタファイルにライトする一連の演算サイクルを、連続的に複数回繰返し実行させるとき、連続的に複数回実行される最後の演算サイクルにおける前記レジスタファイルの読出し動作が、最初の演算サイクルにおける内積演算結果を前記レジスタファイルに書き込むタイミングよりも早くなるように、前記夫々の演算サイクルのレイテンシーが制御される。したがって、ソースレジスタとディスティネーションレジスタが同一レジスタであっても、ソースレジスタから全てのデータリードされるまではライトは行われず、データV[n]が不所望に失われることはない。
【0052】
ベクトル変換演算におけるベクトルデータのソースレジスタとディスティネーションレジスタを同一にしても、動作上支障はない。変換前後のベクトルデータを同一レジスタに配置できるので、ベクトル変換処理を多用するプログラムの作成が容易になる。また、3次元グラフィックス等におけるベクトル変換演算は多数のベクトル若しくは点に対して行われることになる。このとき、変換前後のデータが同一レジスタに配置されれば、16本のフロントバックを構成する浮動小数点レジスタに4個のベクトルデータをロードすれば、ベクトル変換命令を4回連続的に実行することができる。即ち、そのような16本の浮動小数点レジスタに対する演算対象データのロード又は演算結果データのメモリへのストア動作の回数が少なくて済む。これに対して、変換前後のデータを別のレジスタの格納する場合には、一つのベクトル変換命令の実行に8本の浮動小数点レジスタを費やす結果、演算対象データのロードや演算結果データのストア動作の頻度が多くなってしまう。この意味において、ベクトル変換演算におけるベクトルデータのソースレジスタとディスティネーションレジスタを同一にできることは、レジスタ本数が限られた中で、ベクトル変換演算を高速化するのに有用である。
【0053】
〔正弦余弦演算〕
前記演算ブロック22においては、前記内積演算用のハードウェアに係数テーブルや乗算器のフィードバック回路を追加することにより、三角関数や平方根の近似値を区間分割と高次の多項式展開で求められるようにすることができる。例えば前記変換行列は回転変換のとき正弦及び余弦を含むことになる。必要な角度の全てについて正弦及び余弦のデータテーブルを持つ場合には、それによるチップ面積の増大を無視することはできない。
【0054】
ここでは、前記演算ブロック22を利用して正弦と余弦の近似値を求めることについて説明する。以下に説明する構成を付加したFPUは1個の命令で正弦と余弦を並行して演算する正弦余弦命令を実行する。この正弦余弦命令の仕様は図25に示される通り、浮動小数点レジスタFR[0]にロードされた角度データに対する正弦の値を演算して結果をレジスタFR[n]にライトし、同じく、レジスタFR[0]にロードされた角度データに対する余弦の値を演算して結果をレジスタFR[n+1]にライトする。
【0055】
図26には前記角度データのフォーマットが示される。前記角度データは、一つの浮動小数点レジスタの上位16ビットと下位16ビットの境を固定小数点位置とする32ビット固定小数点数によって回転数を表すものとされる。小数点位置を境に上位16ビットは回転数(整数)を与え、小数点位置を境に下位16ビットは1回転を2の16乗分割して定義する。特に、下位16ビットの内の上位2ビットは小数点以下16ビットのデータによって特定される角度が属する象限を意味する。このような角度フォーマットにおいて、例えば360°は1.0であり、16進数のビットパターンは“00010000”とされる。
【0056】
正弦余弦命令は、上記角度フォーマットの角度データに対して、その正弦及び余弦を、テーラ展開による多項近似に従って取得する。図28にはその演算手法が示される。
【0057】
前記多項近似は、前記角度データの小数点以下16ビットを中心値xとこの中心値に対する差分値dxに分けて前記角度データに応ずる正弦と余弦の値を演算するものであり、前記多項近似に必要とされる前記中心値xに対する正弦又は余弦の値だけはテーブルとして保有する。前記中心値xは、レジスタFR[0]の小数点以下7ビットの最下位を0捨1入した値とする。中心値と角度(ラジアン)との関係は図27に例示されている。差分dxはレジスタFR[0]の最下位から10ビットを符号拡張した値とする。多項近似ではテーラ展開を用いるため、角度をラジアンで表現するように、各項の係数が与えられている。図28に示されるS1〜S12は、乗算器220a(FM0),乗算器220b(FM1),乗算器220c(FM2),乗算器220d(FM3),4入力加算器226を用いた演算処理の内容を式で示している。S9において多項近似式による正弦の近似値が求められ(図28にはその多項近似式が示されている)、S12において多項近似式による余弦の近似値が求められる(図28にはその多項近似式が示されている)。
【0058】
前記S1〜S12の演算は(1)〜(4)で示されるパイプラインで処理される。前述のように、角度データの下位16ビットの内の上位2ビットは小数点以下16ビットのデータによって特定される角度が属する象限を意味する。したがって、制御部は、前記上位2ビットのデコード結果に従って(その角度データによって特定される角度が属する象限にしたがって)、前記多項近似によるS10、S12の演算結果の符号反転とその演算結果をレジスタFR[n]又はFR[n+1]のどちらに格納するかの選択を制御して、前記象限に応ずる正弦及び余弦の値を夫々に割り当てられたレジスタFR[n]又はFR[n+1]に格納することになる。象限毎の上記反転動作とレジスタ選択動作は図28に示される通りである。
【0059】
図29には前記正弦余弦命令を実行するための係数テーブルと乗算器のフィードバック系を付加した前記乗算器近傍のブロックダイヤグラムが示される。図29の回路の基本は図4の演算ブロックであり、図4の演算ブロック22に対して、8ビット及び6ビット符号拡張器300、係数テーブル301、セレクタ302〜312が追加された点が異なるだけである。レジスタFR[0]の角度データはポートB[0]から与えられる。8ビット及び6ビット符号拡張器300はレジスタFR[0]の最下位10ビットから差分dxを生成する回路である。係数テーブル301は図27に示す中心値に応ずる正弦又は余弦の何れか一方のデータを保有し、角度データの下位16ビットの内の下位5ビットによって指定される角度の正弦及び余弦のデータを出力する。角度データの下位16ビットの上位2ビットは制御部に供給される。制御部は、その2ビットの値に従って、前記4入力加算器による加算出力の選択的な反転と、加算結果を格納するレジスタFR[n]又はFR[n+1]の選択を制御することになる。尚、係数テーブル301が正弦データを持つ場合に、余弦は中心値xの角度をπ/2から減算した角度でテーブルを参照すればよい。係数テーブルに正弦及び余弦の双方のデータを持ってもよい。
【0060】
図30は図28の(1)で示される第1ステップにおけるデータの流れを太い実線によって示す。図31は図28の(2)で示される第2ステップにおけるデータの流れを太い実線によって示す。この図において、乗算器(FM0)220aの乗算結果がセレクタ308,311にフィードバックされているが、フィードバックは小数点以下のみとされ(上位は0とする)、+1の効果も得るようにしている。図32は図28の(3)で示される第2ステップにおけるデータの流れを太い実線によって示す。図33は図28の(4)で示される第2ステップにおけるデータの流れを太い実線によって示す。図32及び図33において演算結果を2度利用する場合には乗算器の入力ラッチの更新を抑止してその値を保持する。図30乃至図32に示される演算制御は、正弦余弦命令をデコードする制御部が行う。
【0061】
〔データプロセッサ1の優位性〕
上記FPU2の演算ブロック22は前述のように、内積演算命令やベクトル変換演算命令等の1個の命令を実行するとき、4個の乗算器220a〜220dに8個の浮動小数点数を与えて並列動作させ、それによる乗算結果を1個の4入力加算器226で加算して、演算結果を得る。4入力加算器226の出力に対する正規化、正数化及び丸めは1個の回路227によって行う。図34にはその演算処理におけるデータの流れを理解し易いように演算ブロック22の概略を示してある。
【0062】
図35には、上記演算ブロック22に対する比較例が示されている。これは、一対の浮動小数点数に対する積和演算器と、その結果に対する正規化、正数化及び丸めのための回路とを2組設けて構成される。図36には上記演算ブロック22に対する別の比較例として、上記積和演算器と正規化、正数化及び丸めのための回路とを4組み設けたものが示されている。何れの比較例も、積和演算器と正規化、正数化及び丸めのための回路とを複数組み並列化したに過ぎない。したがって、4×4の一つの内積を演算する場合には、積和演算、正規化、正数化及び丸めのための複数個の回路を単に並列動作させるだけでは済まない。夫々の演算結果に対する相関を考慮した制御が別に必要とされる。通常は、一組の積和演算器と正規化、正数化及び丸めのための回路とを4回繰返し動作させて内積を求めることになるであろう。ベクトル変換演算の場合には更に多くの演算サイクルが必要になる。積和演算、正規化、正数化及び丸めのための複数組の回路は、パイプラインのような命令実行手法によって、対象の異なる内積演算やその他の浮動小数点命令のために並列動作されるであろう。この意味において、図35及び図36に示される回路構成は、種々の浮動小数点命令の演算処理能力を平均的に向上させ得るという点に特徴がある。
【0063】
上記演算ブロック22を用いる場合には、内積演算やベクトル変換演算のための実質的な演算サイクル数を少なくすることができる。すなわち、内積演算やベクトル変換演算の高速化を実現出来る。このように、演算ブロック22の構成は、内積演算やベクトル変換演算の高速化に特化している。また、1回の並列的な乗算及び加算によって内積を求めることができるから、2入力に対する積和演算毎に丸めを行うような処理も必要ない。これにより、内積演算のレイテンシーが短く、演算精度も高く、また、2入力に対する積和演算毎を繰り返す場合のように演算順序が異なると演算結果も相違するという事態も生じない。
【0064】
また、正規化、正数化及び丸め回路は積和演算回路と同等の回路規模を有することになるので、図35及び図36のように積和演算、正規化、正数化及び丸めのための回路を複数組単に並列配置した構成では、並列化によって達成しようとする平均的な演算能力の向上に比べて、並列化によるチップ面積の増大が極めて大きくなる。この意味において、積和演算、正規化、正数化及び丸めのための回路の並列数は2が妥当と考えられている。整数演算だけなら、図37のように積和演算器を4個並列させることも現実的であるが、整数演算の場合にはデータの桁数が限られるために浮動小数点演算に比べて演算精度は低くなってしまう。図34の演算ブロック22は、正規化、正数化及び丸めのための回路227を1個備えればよい。したがって、データプロセッサは、回路規模の増大を極力抑えて、浮動小数点で内積演算やベクトル変換演算の高速化を実現出来る。
【0065】
データプロセッサ1の浮動小数点命令は16ビット固定長であり、それ故に、浮動小数点命令におけるアドレス指定フィールドは限られ、浮動小数点レジスタは16本とされる。このような制約の下において、浮動小数点レジスタをバックバンクとフロントバンクを持つレジスタバンク構成のレジスタファイル21によって構成している。このとき、上記変換行列全体を格納するのに16個のレジスタを消費するため、ベクトル変換演算命令においてはフロントバンクとバックバンクの双方を利用する命令仕様とされている。前述したように、変換行列をバックバンクに配置し、ベクトルデータをフロントバンクに配置する。これにより、浮動小数点命令のビット数とレジスタ本数というリソースの制約下においても、ベクトル変換演算命令の高速実行を保証している。
【0066】
また、ベクトル変換演算命令の実行において、前述のように、一連の4回の内積演算処理は、先頭のパイプライン(1)におけるレジスタライトRWが、最後のパイプライン(4)におけるレジスタリードRRの後にされているように、パイプライン化されている。したがって、ソースレジスタとディスティネーションレジスタが同一レジスタであっても、演算対象とされるベクトルデータは不所望に失われない。これにより、多数のベクトル若しくは点に対してベクトル変換が次々に行われるとき、変換前後のデータが同一レジスタに配置されれば、16本のフロントバックを構成する浮動小数点レジスタに4個のベクトルデータをロードすれば、ベクトル変換命令を4回連続的に実行することができ、そのような16本の浮動小数点レジスタに対する演算対象データのロード又は演算結果データのメモリへのストア動作の回数が少なくて済む。この意味において、ベクトル変換演算におけるベクトルデータのソースレジスタとディスティネーションレジスタを同一にできることは、レジスタ本数が限られた中で、ベクトル変換演算を高速化するのに有用である。
【0067】
また、前記変換行列は回転変換のとき正弦及び余弦を含むことになる。必要な角度の全てについて正弦及び余弦のデータテーブル301を持つ場合には、それによるチップ面積の増大を無視することはできない。このとき、前記演算ブロック22は4個の乗算器を含んでいるので、それに係数テーブル301や乗算器のフィードバック回路を追加することにより、三角関数や平方根の近似値を区間分割と高次の多項式展開で求められるようにすることができる。これによって、正弦及び余弦をチップ面積を増大させることなく得ることができる。特に正弦と余弦の多項近似の展開式には類似性があるので、これを利用して正弦及び余弦の値を同時(並列的)に演算するので、個別に求める場合に比べて正弦及び余弦の値を高速に得ることができる。
【0068】
図38にはそのようなデータプロセッサを適用したデータ処理システムのブロックダイヤグラムが示される。
【0069】
同図において1は上記データプロセッサ、401はダイナミック・ランダム・アクセス・メモリ(DRAM)、402はDRAM401に対するアドレスマルチプレクス制御やリフレッシュ制御を行うDRAM制御部、403はSRAMである。SRAM403はデータプロセッサ1の作業領域やデータの一時記憶領域などに利用される。404はデータプロセッサ1のOS(Operating System)などを保有するROMである。405は周辺装置制御部であり、代表的に示された外部記憶装置406及びキーボード407が接続されている。408はフレームバッファ409や図示しない描画及び表示制御論理回路を備えた表示コントローラであり、ディスプレイ410に対する描画制御と表示制御を行う。411は電源回路、412は代表的に示されたバスである。データプロセッサ1は3次元グラフィック処理に多用される内積演算やベクトル変換演算等を浮動小数点で高速に実行することができる。しかも、浮動小数点命令のビット数及びレジスタ本数等の限られたリソースの下で上記効果を得ることができるから、データプロセッサ1のコストも低く抑えられている。したがって、図38のデータ処理システムは、システムのコストを抑えて、3次元グラフィック処理を高精度に且つ高速に行うことができる。したがって、コストの制約は厳しいけれども、高機能及び高速化の要請も無視出来ないような、ゲーム機や携帯情報端末などに適用して優れたデータ処理システムを実現出来る。
【0070】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0071】
例えば、図1では説明していないが、データプロセッサはメモリマネージメントユニットなどのその他の機能ブロックを含むことができる。また、データプロセッサは、スーパースカラーアーキテクチャを採用することができる。例えば、2本のパイプを有する場合、一方のパイプではベクトル変換演算命令などを実行し、他方のパイプではベクトル変換演算命令のためのベクトルデータをメモリからレジスタファイルのロードしたり、ベクトル変換演算の結果をレジスタファイルからメモリにストアすることができる。
【0072】
また、乗算器の並列配置個数は4個以上であってもよい。また、指数処理部や符号処理部の構成、4入力加算器の構成は上記実施例に限定されず適宜変更可能である。
【0073】
また、本発明のデータプロセッサはゲーム機や携帯情報端末の制御に適用される場合に限定されず、種々の機器組み込み制御などの用途に広く利用することができる。
【0074】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【0075】
すなわち、データプロセッサは、浮動小数点による内積演算やベクトル変換演算の高速化を実現できる。
【0076】
データプロセッサは、正規化等のための回路を1個備えればよいから、回路規模の増大を極力抑えて、浮動小数点で内積演算やベクトル変換演算の高速化を実現できる。
【0077】
ベクトル変換演算命令においてはフロントバンクとバックバンクの双方を利用する命令仕様とされており、変換行列をバックバンクに配置し、ベクトルデータをフロントバンクに配置することにより、浮動小数点命令のビット数とレジスタ本数というリソースの制約下においても、ベクトル変換演算命令の高速実行を保証できる。
【0078】
また、ベクトル変換演算命令の実行において、一連の4回の内積演算処理は、先頭の内積演算処理におけるレジスタライトが、最後の内積処理におけるレジスタリードの後にされるように、各内積処理のレイテンシーを制御するから、ソースレジスタとディスティネーションレジスタが同一レジスタであっても、演算対象とされるベクトルデータは不所望に失われない。これにより、浮動小数点レジスタに対する演算対象データのロード又は演算結果データのメモリへのストア動作の回数が少なくて済み、レジスタ本数が限られた中で、ベクトル変換演算を高速化するのに有用である。
【0079】
また、前記演算部に係数テーブルや乗算器のフィードバック回路を追加することにより、三角関数の近似値を区間分割と高次の多項式展開で求められるようにすることにより、変換行列等に利用される正弦及び余弦を、チップ面積を大幅に増大させることなく得ることができる。
【0080】
データプロセッサは、浮動小数点命令のビット数及びレジスタ本数等の限られたリソースの下において、3次元グラフィック処理に多用される内積演算やベクトル変換演算等を浮動小数点で高速に実行することができるから、前記データプロセッサを適用したデータ処理しステムは、システムのコストを抑えて、3次元グラフィック処理を高精度に且つ高速に行うことができる。したがって、コストの制約は厳しいけれども、高機能及び高速化の要請も無視出来ないような、ゲーム機や携帯情報端末などに適用して優れたデータ処理システムを実現出来る。
【図面の簡単な説明】
【図1】本発明の一例に係るデータプロセッサのブロック図である。
【図2】図1のデータプロセッサの主なレジスタ構成の説明図である。
【図3】前記FPUの一例ブロック図である。
【図4】演算ブロックの一例ブロック図である。
【図5】最大指数選択部の一例ブロック図である。
【図6】符合選択部の一例ブロック図である。
【図7】アライナの一例ブロック図である。
【図8】4入力加算器の一例ブロック図である。
【図9】4入力加算器においてInv[n]の値に対してCin[0],Cin[1],Cin[2]の採り得る値を示す説明図である。
【図10】キャリー保存加算器アレイとキャリー伝達加算器アレイの詳細な一例ブロック図である。
【図11】4−2コンプレッサの一例説明図である。
【図12】レジスタファイルの一例ブロック図である。
【図13】レジスタファイルを構成する各レジスタグループの構成説明図である。
【図14】レジスタグループの各レジスタ回路の一例構成図である。
【図15】レジスタファイルのリードポートAの動作態様説明図である。
【図16】レジスタファイルのリードポートBの動作態様説明図である。
【図17】レジスタファイルのリードポートCの動作態様説明図である。
【図18】内積の応用例を示す説明図である。
【図19】内積演算命令による処理の概略を示すブロック図である。
【図20】内積演算命令におけレジスタファイルの利用に関する仕様の一例説明図である。
【図21】ベクトル変換演算の一般的に示す説明図である。
【図22】ベクトル変換演算命令による処理の概略を示すブロック図である。
【図23】ベクトル変換演算命令におけレジスタファイルの利用に関する仕様の一例説明図である。
【図24】一つのベクトル変換命令による複数回の内積演算処理のパイプラインを示す説明図である。
【図25】正弦余弦命令の仕様説明図である。
【図26】正弦余弦命令に利用される角度データのフォーマット説明図である。
【図27】多項近似のための中心値と角度(ラジアン)との関係を示す説明図である。
【図28】多項近似に従った正弦余弦命令による演算処理の流れ図である。
【図29】正弦余弦命令を実行するための係数テーブルと乗算器のフィードバック系を付加した前記乗算器近傍のブロック図である。
【図30】図28の(1)で示される第1ステップにおけるデータの流れを太い実線によって示す説明図である。
【図31】図28の(2)で示される第2ステップにおけるデータの流れを太い実線によって示す説明図である。
【図32】図28の(3)で示される第2ステップにおけるデータの流れを太い実線によって示す説明図である。
【図33】図28の(4)で示される第2ステップにおけるデータの流れを太い実線によって示す説明図である。
【図34】内積演算命令やベクトル変換演算命令を実行するときの演算処理におけるデータの流れを理解し易いように演算ブロック22を概略的に示したブロック図である。
【図35】積和演算器と正規化、正数化及び丸めのための回路とを2組み単に並列配置したものを示す比較説明図である。
【図36】積和演算器と正規化、正数化及び丸めのための回路とを4組み単に並列配置したものを示す比較説明図である。
【図37】整数演算のために積和演算器を4個並列させたものを示す比較説明図である。
【図38】データプロセッサを適用したデータ処理システムの一例ブロック図である。
【符号の説明】
1 データプロセッサ
2 浮動小数点ユニット
3 CPU
4 データバス
5 命令バス
20 転送ブロック
21 レジスタファイル
22 演算ブロック
23 制御部
A[0],A[1],A[2],A[3] リードポート
B[0],B[1],B[2],B[3] リードポート
C リードポート
X,Y ライトポート
f0〜f15 フロントバンクを構成するレジスタ
b0〜b15 バックバンクを構成するレジスタ
220a〜220d 乗算器
221a〜221d アライナ
222a〜222d 加算器
223 最大指数選択部
224a〜224d 減算機
228 指数処理部
EOR1〜EOR8 排他的論理ゲート
225 符合選択部
229 符号処理部
226 4入力加算器
227 正規化、正数化及び丸め回路
La0〜La3,Lb0〜Lb3 信号線群
Emax 正規化前の指数
Smax 正規化前の符号
Inv[0],Inv[1],Inv[2],Inv[3] 乗算結果に対する符合
300 8ビット及び6ビット符号拡張器
301 正弦余弦テーブル
403 SRAM
412 バス
Claims (17)
- 夫々異なるデータ入力信号線群から浮動小数点数の仮数部が供給され、供給された仮数部同士の乗算を行う複数の乗算器と、夫々の乗算器の出力を受けてアライメントシフトを行うアライナと、前記アライナのアライメントシフト数及び正規化前の指数を前記浮動小数点数の指数部に基づいて生成する指数処理部と、前記アライナの出力を並列的に加算する多入力加算器と、前記多入力加算器の出力を前記正規化前の指数に基づいて正規化する正規化器とを含む演算部を有する浮動小数点ユニットを具備することを特徴とするデータプロセッサ。
- 前記演算部は更に、夫々の乗算器で乗算される浮動小数点数の符号に応じて、各乗算器の乗算結果に対する符号を生成する符号処理部を含み、
前記アライナはアライメントシフト結果を選択的に反転又は非反転で出力するセレクタを有し、対応する前記乗算結果に対する符合が負の場合には反転出力を選択し、
前記多入力加算器は前記乗算結果に対する符合が負に対応されるアライナの出力に+1を行うキャリーを生成して、負の乗算結果に対し2の補数化処理を行うものであることを特徴とする請求項1記載のデータプロセッサ。 - 前記浮動小数点ユニットは、前記夫々の乗算器のデータ入力信号線群に接続するリードポートと前記演算部の出力に接続するライトポートとを備えるレジスタファイルを更に有し、
前記レジスタファイルは、前記リードポートに並列的に接続可能な複数のバンクを有することを特徴とする請求項1又は2記載のデータプロセッサ。 - 前記浮動小数点ユニットは、夫々複数個の成分によって表されるデータ同士の内積演算を規定する浮動小数点命令を解読可能な制御部を更に有し、
前記制御部は、前記浮動小数点命令を解読して、前記レジスタファイルが保有するデータの成分を前記信号線群を介して前記演算部に与え、与えられたデータの内積を前記演算部に演算させ、内積の演算結果を前記レジスタファイルに書き込むことを特徴とする請求項3記載のデータプロセッサ。 - 前記浮動小数点ユニットは、夫々複数個の成分によって表されるデータと変換行列との行列演算を規定する浮動小数点命令を解読可能な制御部を更に有し、
前記制御部は、前記浮動小数点命令を解読して、レジスタファイルが保有するデータの成分と前記変換行列の成分とを読出して前記信号線群を介し前記演算部に与え、与えられたデータの内積を前記演算部に演算させ、この内積演算の結果を前記レジスタファイルに書き込みさせる一連の演算サイクルを、連続的に複数回繰返し実行させ、連続的に複数回実行される最後の演算サイクルにおける前記レジスタファイルの読出し動作が、最初の演算サイクルにおける内積演算結果を前記レジスタファイルに書き込むタイミングよりも早くなるように、前記夫々の演算サイクルのレイテンシーを制御するものであることを特徴とする請求項3記載のデータプロセッサ。 - 前記制御部は、前記各演算サイクルにおいて、前記レジスタファイルからの読み出しを双方のバンクに対して並列的に行い、前記レジスタファイルへの書込みを一方のバンクに対して行うためのレジスタ選択制御を行うものであることを特徴とする請求項5記載のデータプロセッサ。
- 前記レジスタファイルは、各バンクに16個のレジスタを有し、
前記乗算器は4個設けられ、
前記浮動小数点命令は、16ビット固定長命令であることを特徴とする請求項4乃至6の何れか1項記載のデータプロセッサ。 - 前記浮動小数点ユニットは、角度データに対する正弦及び余弦をテーラ展開による多項近似に従って取得するための浮動小数点命令を解読可能な制御部と、
前記多項近似に必要とされる中心値に対する正弦又は余弦の値を保有するテーブルとを更に有し、
前記制御部は、前記レジスタファイルに対するレジスタリードによって角度データを演算ブロックに与え、角度データに対する正弦及び余弦を前記多項近似に従って演算ブロックに演算させ、演算結果をレジスタファイルにライトするものであり、
前記角度データは、固定小数点数の小数点以下nビットによって1回転を2のn乗分割して定義するフォーマットを有し、
前記多項近似は、前記角度データの小数点以下nビットを中心値と前記中心値に対する差分値に分けて前記角度データに応ずる正弦と余弦の値を演算するものであることを特徴とする請求項1乃至3の何れか1項記載のデータプロセッサ。 - 前記小数点以下のnビットにおける上位2ビットは角度の象限を指示し、
前記制御部は、前記上位2ビットのデコード結果に従って、前記多項近似による演算結果の符号反転とその演算結果を格納するレジスタファイルのレジスタの選択を制御して、前記象限に応ずる正弦及び余弦の値を夫々に割り当てられたレジスタに格納するものであることを特徴とする請求項8記載のデータプロセッサ。 - 成分が夫々浮動小数点数で与えられる4×4の内積演算を1個の浮動小数点命令で実行可能な浮動小数点ユニットを具備し、
前記浮動小数点ユニットは、演算ブロックと、前記演算ブロックに演算対象データを供給し且つ演算ブロックで演算された演算結果データが供給されるレジスタファイルとを含み、
前記演算ブロックは、浮動小数点数の仮数部同士の乗算を行う4個の乗算器と、夫々の乗算器の出力を受けてアライメントシフトを行うアライナと、前記アライナのアライメントシフト数及び正規化前の指数を前記浮動小数点数の指数部に基づいて生成する指数処理部と、前記アライナの出力を並列的に加算する4入力加算器と、前記4入力加算器の出力を前記正規化前の指数に基づいて正規化する正規化器とを含んで成るものであることを特徴とするデータプロセッサ。 - 成分が夫々浮動小数点数で与えられる4×4の変換行列と夫々浮動小数点数で与えられる4元の成分を持つベクトルとの積の演算を4×4の内積演算を連続4回繰り返して実行する演算を1個の浮動小数点命令で実行可能な浮動小数点ユニットを具備し、
前記浮動小数点ユニットは演算ブロックと、前記演算ブロックに演算対象データを供給し且つ前記演算ブロックで演算された演算結果データが供給されるレジスタファイルとを含み、
前記演算ブロックは、浮動小数点数の仮数部同士の乗算を行う4個の乗算器と、夫々の乗算器の出力を受けてアライメントシフトを行うアライナと、前記アライナのアライメントシフト数及び正規化前の指数を前記浮動小数点数の指数部に基づいて生成する指数処理部と、前記アライナの出力を並列的に加算する4入力加算器と、前記4入力加算器の出力を前記正規化前の指数に基づいて正規化する正規化器とを含み、
前記レジスタファイルは夫々16個のレジスタを含む2個のレジスタバンクを有し、
前記変換行列は一方のバンクに割り当てられ、
前記ベクトルは、他方のバンクに割り当てられるものであることを特徴とするデータプロセッサ。 - アドレスバス及びデータバスに結合されたCPUを更に含み、
前記浮動小数点ユニットは、前記データバスに結合され、16ビット固定長浮動小数点命令セットを用いて浮動小数点処理を実行し、
前記CPUは、前記浮動小数点ユニットが浮動小数点処理を実行するための命令とデータを得るのに必要なアドレシング処理を行うものであり、
前記CPU及び前記浮動小数点ユニットは、1個の半導体基板に形成されることを特徴とする請求項1乃至11の何れか1項記載のデータプロセッサ。 - データプロセッサと、
CPUと、
前記データプロセッサに接続され、前記CPUにアクセスされるデータRAMとを具備し、
前記データプロセッサは、夫々異なるデータ入力信号線群から浮動小数点数の仮数部が供給され、供給された仮数部同士の乗算を行う複数の乗算器と、夫々の乗算器の出力を受けてアライメントシフトを行うアライナと、前記アライナのアライメントシフト数及び正規化前の指数を前記浮動小数点数の指数部に基づいて生成する指数処理部と、前記アライナの出力を並列的に加算する多入力加算器と、前記多入力加算器の出力を前記正規化前の指数に基づいて正規化する正規化器とを含む演算部を有することを特徴とするデータ処理システム。 - 成分が夫々浮動小数点数で与えられる4×4の内積演算を1個の浮動小数点命令で実行可能な浮動小数点ユニットを含むことを特徴とする請求項1記載のデータプロセッサ。
- 中央処理装置と、浮動小数点ユニットとを具備し、
前記中央処理装置及び前記浮動小数点ユニットは、共通の命令セットの命令を実行し、
前記命令セットは、前記浮動小数点ユニットにより実行される内積演算命令を含み、
前記浮動小数点ユニットは、浮動小数点数の仮数部同士の乗算を行う複数の乗算器と、夫々の乗算器の出力を受けてアライメントシフトを行うアライナと、前記アライナのアライメントシフト数及び正規化前の指数を前記浮動小数点数の指数部に基づいて生成する指数処理部と、前記アライナの出力を並列的に加算する多入力加算器と、前記多入力加算器の出力を前記正規化前の指数に基づいて正規化する正規化器とを有することを特徴とするデータプロセッサ。 - 前記内積演算命令は、4要素のベクトルと他の4要素のベクトルとの内積演算を行う命令であることを特徴とする請求項15記載のデータプロセッサ。
- 前記内積演算命令は、単一の命令であることを特徴とする請求項15又は16に記載のデータプロセッサ。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27343296A JP3790307B2 (ja) | 1996-10-16 | 1996-10-16 | データプロセッサ及びデータ処理システム |
KR1019970051779A KR100526315B1 (ko) | 1996-10-16 | 1997-10-09 | 데이타프로세서및데이타처리시스템 |
TW086115051A TW405093B (en) | 1996-10-16 | 1997-10-14 | Data processor and data processing system |
US08/950,664 US6038582A (en) | 1996-10-16 | 1997-10-15 | Data processor and data processing system |
US09/479,075 US6243732B1 (en) | 1996-10-16 | 2000-01-07 | Data processor and data processing system |
US09/810,485 US6327605B2 (en) | 1996-10-16 | 2001-03-19 | Data processor and data processing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27343296A JP3790307B2 (ja) | 1996-10-16 | 1996-10-16 | データプロセッサ及びデータ処理システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10124484A JPH10124484A (ja) | 1998-05-15 |
JP3790307B2 true JP3790307B2 (ja) | 2006-06-28 |
Family
ID=17527831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27343296A Expired - Lifetime JP3790307B2 (ja) | 1996-10-16 | 1996-10-16 | データプロセッサ及びデータ処理システム |
Country Status (4)
Country | Link |
---|---|
US (3) | US6038582A (ja) |
JP (1) | JP3790307B2 (ja) |
KR (1) | KR100526315B1 (ja) |
TW (1) | TW405093B (ja) |
Families Citing this family (178)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3790307B2 (ja) | 1996-10-16 | 2006-06-28 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US6256655B1 (en) * | 1998-09-14 | 2001-07-03 | Silicon Graphics, Inc. | Method and system for performing floating point operations in unnormalized format using a floating point accumulator |
US6417858B1 (en) * | 1998-12-23 | 2002-07-09 | Microsoft Corporation | Processor for geometry transformations and lighting calculations |
JP2000348017A (ja) * | 1999-06-02 | 2000-12-15 | Toshiba Corp | 浮動小数点演算器 |
US6463553B1 (en) | 1999-10-01 | 2002-10-08 | Stmicroelectronics, Ltd. | Microcomputer debug architecture and method |
US6772325B1 (en) * | 1999-10-01 | 2004-08-03 | Hitachi, Ltd. | Processor architecture and operation for exploiting improved branch control instruction |
US6820195B1 (en) | 1999-10-01 | 2004-11-16 | Hitachi, Ltd. | Aligning load/store data with big/little endian determined rotation distance control |
US7072817B1 (en) | 1999-10-01 | 2006-07-04 | Stmicroelectronics Ltd. | Method of designing an initiator in an integrated circuit |
US7260745B1 (en) | 1999-10-01 | 2007-08-21 | Stmicroelectronics Ltd. | Detection of information on an interconnect |
US6928073B2 (en) | 1999-10-01 | 2005-08-09 | Stmicroelectronics Ltd. | Integrated circuit implementing packet transmission |
US6557119B1 (en) | 1999-10-01 | 2003-04-29 | Stmicroelectronics Limited | Microcomputer debug architecture and method |
US6629207B1 (en) | 1999-10-01 | 2003-09-30 | Hitachi, Ltd. | Method for loading instructions or data into a locked way of a cache memory |
US6732307B1 (en) | 1999-10-01 | 2004-05-04 | Hitachi, Ltd. | Apparatus and method for storing trace information |
US6598177B1 (en) | 1999-10-01 | 2003-07-22 | Stmicroelectronics Ltd. | Monitoring error conditions in an integrated circuit |
US6633971B2 (en) | 1999-10-01 | 2003-10-14 | Hitachi, Ltd. | Mechanism for forward data in a processor pipeline using a single pipefile connected to the pipeline |
US6530047B1 (en) | 1999-10-01 | 2003-03-04 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
US6918065B1 (en) | 1999-10-01 | 2005-07-12 | Hitachi, Ltd. | Method for compressing and decompressing trace information |
US6546480B1 (en) | 1999-10-01 | 2003-04-08 | Hitachi, Ltd. | Instructions for arithmetic operations on vectored data |
US6615370B1 (en) | 1999-10-01 | 2003-09-02 | Hitachi, Ltd. | Circuit for storing trace information |
US6598128B1 (en) | 1999-10-01 | 2003-07-22 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6684348B1 (en) | 1999-10-01 | 2004-01-27 | Hitachi, Ltd. | Circuit for processing trace information |
US6574651B1 (en) | 1999-10-01 | 2003-06-03 | Hitachi, Ltd. | Method and apparatus for arithmetic operation on vectored data |
US6349371B1 (en) | 1999-10-01 | 2002-02-19 | Stmicroelectronics Ltd. | Circuit for storing information |
US6665816B1 (en) | 1999-10-01 | 2003-12-16 | Stmicroelectronics Limited | Data shift register |
US7266728B1 (en) | 1999-10-01 | 2007-09-04 | Stmicroelectronics Ltd. | Circuit for monitoring information on an interconnect |
US6601189B1 (en) | 1999-10-01 | 2003-07-29 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
US6629115B1 (en) | 1999-10-01 | 2003-09-30 | Hitachi, Ltd. | Method and apparatus for manipulating vectored data |
US6351803B2 (en) | 1999-10-01 | 2002-02-26 | Hitachi Ltd. | Mechanism for power efficient processing in a pipeline processor |
US6567932B2 (en) | 1999-10-01 | 2003-05-20 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
US6449712B1 (en) | 1999-10-01 | 2002-09-10 | Hitachi, Ltd. | Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions |
US6434665B1 (en) | 1999-10-01 | 2002-08-13 | Stmicroelectronics, Inc. | Cache memory store buffer |
US6693914B1 (en) | 1999-10-01 | 2004-02-17 | Stmicroelectronics, Inc. | Arbitration mechanism for packet transmission |
US6408381B1 (en) | 1999-10-01 | 2002-06-18 | Hitachi, Ltd. | Mechanism for fast access to control space in a pipeline processor |
US6590907B1 (en) | 1999-10-01 | 2003-07-08 | Stmicroelectronics Ltd. | Integrated circuit with additional ports |
US6412043B1 (en) | 1999-10-01 | 2002-06-25 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6779145B1 (en) | 1999-10-01 | 2004-08-17 | Stmicroelectronics Limited | System and method for communicating with an integrated circuit |
US6487683B1 (en) | 1999-10-01 | 2002-11-26 | Stmicroelectronics Limited | Microcomputer debug architecture and method |
US6542983B1 (en) | 1999-10-01 | 2003-04-01 | Hitachi, Ltd. | Microcomputer/floating point processor interface and method |
US6553460B1 (en) | 1999-10-01 | 2003-04-22 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6502210B1 (en) | 1999-10-01 | 2002-12-31 | Stmicroelectronics, Ltd. | Microcomputer debug architecture and method |
US6412047B2 (en) | 1999-10-01 | 2002-06-25 | Stmicroelectronics, Inc. | Coherency protocol |
US6460174B1 (en) | 1999-10-01 | 2002-10-01 | Stmicroelectronics, Ltd. | Methods and models for use in designing an integrated circuit |
US6701405B1 (en) | 1999-10-01 | 2004-03-02 | Hitachi, Ltd. | DMA handshake protocol |
US6826191B1 (en) | 1999-10-01 | 2004-11-30 | Stmicroelectronics Ltd. | Packets containing transaction attributes |
JP2001142692A (ja) * | 1999-10-01 | 2001-05-25 | Hitachi Ltd | 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法 |
US7000078B1 (en) | 1999-10-01 | 2006-02-14 | Stmicroelectronics Ltd. | System and method for maintaining cache coherency in a shared memory system |
US6496905B1 (en) | 1999-10-01 | 2002-12-17 | Hitachi, Ltd. | Write buffer with burst capability |
US6457118B1 (en) | 1999-10-01 | 2002-09-24 | Hitachi Ltd | Method and system for selecting and using source operands in computer system instructions |
US6298394B1 (en) | 1999-10-01 | 2001-10-02 | Stmicroelectronics, Ltd. | System and method for capturing information on an interconnect in an integrated circuit |
US6591369B1 (en) | 1999-10-01 | 2003-07-08 | Stmicroelectronics, Ltd. | System and method for communicating with an integrated circuit |
US6411301B1 (en) * | 1999-10-28 | 2002-06-25 | Nintendo Co., Ltd. | Graphics system interface |
US7209140B1 (en) * | 1999-12-06 | 2007-04-24 | Nvidia Corporation | System, method and article of manufacture for a programmable vertex processing model with instruction set |
US7043641B1 (en) | 2000-03-08 | 2006-05-09 | Igt | Encryption in a secure computerized gaming system |
US7988559B2 (en) | 2001-03-08 | 2011-08-02 | Igt | Computerized gaming system, method and apparatus |
JP3940542B2 (ja) | 2000-03-13 | 2007-07-04 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US6912525B1 (en) | 2000-05-08 | 2005-06-28 | Verizon Laboratories, Inc. | Techniques for web site integration |
JP3779540B2 (ja) | 2000-11-08 | 2006-05-31 | 株式会社ルネサステクノロジ | 複数レジスタ指定が可能なsimd演算方式 |
US7711763B2 (en) | 2001-02-21 | 2010-05-04 | Mips Technologies, Inc. | Microprocessor instructions for performing polynomial arithmetic operations |
US7181484B2 (en) | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
US7599981B2 (en) * | 2001-02-21 | 2009-10-06 | Mips Technologies, Inc. | Binary polynomial multiplier |
US7162621B2 (en) | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
GB2376310B (en) * | 2001-03-14 | 2005-09-28 | Micron Technology Inc | Arithmetic pipeline |
US6751638B2 (en) * | 2001-05-11 | 2004-06-15 | Sun Microsystems, Inc. | Min and max operations for multiplication and/or division under the simple interval system |
US8185723B2 (en) * | 2001-07-13 | 2012-05-22 | Intel Corporation | Method and apparatus to extract integer and fractional components from floating-point data |
EP1433078A4 (en) * | 2001-09-10 | 2006-11-15 | Igt Reno Nev | DEVELOPING GAME PROGRAMS COMPATIBLE WITH A SYSTEM AND DEVICE FOR OPERATING ELECTRONIC GAMES |
US8708828B2 (en) | 2001-09-28 | 2014-04-29 | Igt | Pluggable modular gaming modifiers and configuration templates for gaming environments |
US6902481B2 (en) | 2001-09-28 | 2005-06-07 | Igt | Decoupling of the graphical presentation of a game from the presentation logic |
US7931533B2 (en) | 2001-09-28 | 2011-04-26 | Igt | Game development architecture that decouples the game logic from the graphics logics |
EP1463569A4 (en) | 2001-11-26 | 2010-06-02 | Igt Reno Nev | DEVICE AND METHOD FOR ACTIVE INTERCONNECTION VALIDATION |
EP1623307B1 (en) * | 2003-05-09 | 2015-07-01 | QUALCOMM Incorporated | Processor reduction unit for accumulation of multiple operands with or without saturation |
TWI258698B (en) * | 2004-04-06 | 2006-07-21 | Ind Tech Res Inst | Static floating-point processor suitable for embedded digital signal processing and shift control method thereof |
US8190669B1 (en) | 2004-10-20 | 2012-05-29 | Nvidia Corporation | Multipurpose arithmetic functional unit |
KR100911786B1 (ko) * | 2004-11-10 | 2009-08-12 | 엔비디아 코포레이션 | 다목적 승산-가산 기능 유닛 |
US7428566B2 (en) * | 2004-11-10 | 2008-09-23 | Nvidia Corporation | Multipurpose functional unit with multiply-add and format conversion pipeline |
US8856201B1 (en) | 2004-11-10 | 2014-10-07 | Altera Corporation | Mixed-mode multiplier using hard and soft logic circuitry |
US20060101244A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose functional unit with combined integer and floating-point multiply-add pipeline |
US7240184B2 (en) * | 2004-11-10 | 2007-07-03 | Nvidia Corporation | Multipurpose functional unit with multiplication pipeline, addition pipeline, addition pipeline and logical test pipeline capable of performing integer multiply-add operations |
US20060129624A1 (en) * | 2004-12-09 | 2006-06-15 | Abdallah Mohammad A | Method and apparatus for performing a divide instruction |
US7475103B2 (en) * | 2005-03-17 | 2009-01-06 | Qualcomm Incorporated | Efficient check node message transform approximation for LDPC decoder |
US8234319B2 (en) * | 2005-05-25 | 2012-07-31 | Qualcomm Incorporated | System and method of performing two's complement operations in a digital signal processor |
US8620980B1 (en) | 2005-09-27 | 2013-12-31 | Altera Corporation | Programmable device with specialized multiplier blocks |
US8595747B2 (en) * | 2005-12-29 | 2013-11-26 | Sony Computer Entertainment Inc. | Efficient task scheduling by assigning fixed registers to scheduler |
US8301681B1 (en) | 2006-02-09 | 2012-10-30 | Altera Corporation | Specialized processing block for programmable logic device |
US8266198B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US8041759B1 (en) | 2006-02-09 | 2011-10-18 | Altera Corporation | Specialized processing block for programmable logic device |
US8266199B2 (en) | 2006-02-09 | 2012-09-11 | Altera Corporation | Specialized processing block for programmable logic device |
US8037119B1 (en) | 2006-02-21 | 2011-10-11 | Nvidia Corporation | Multipurpose functional unit with single-precision and double-precision operations |
US7836117B1 (en) | 2006-04-07 | 2010-11-16 | Altera Corporation | Specialized processing block for programmable logic device |
US7822799B1 (en) | 2006-06-26 | 2010-10-26 | Altera Corporation | Adder-rounder circuitry for specialized processing block in programmable logic device |
US8346831B1 (en) * | 2006-07-25 | 2013-01-01 | Vivante Corporation | Systems and methods for computing mathematical functions |
US20080071851A1 (en) | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US8386550B1 (en) | 2006-09-20 | 2013-02-26 | Altera Corporation | Method for configuring a finite impulse response filter in a programmable logic device |
US8386553B1 (en) | 2006-12-05 | 2013-02-26 | Altera Corporation | Large multiplier for programmable logic device |
US7930336B2 (en) | 2006-12-05 | 2011-04-19 | Altera Corporation | Large multiplier for programmable logic device |
US8051123B1 (en) | 2006-12-15 | 2011-11-01 | Nvidia Corporation | Multipurpose functional unit with double-precision and filtering operations |
US7814137B1 (en) | 2007-01-09 | 2010-10-12 | Altera Corporation | Combined interpolation and decimation filter for programmable logic device |
US8650231B1 (en) | 2007-01-22 | 2014-02-11 | Altera Corporation | Configuring floating point operations in a programmable device |
US7865541B1 (en) | 2007-01-22 | 2011-01-04 | Altera Corporation | Configuring floating point operations in a programmable logic device |
US8645450B1 (en) | 2007-03-02 | 2014-02-04 | Altera Corporation | Multiplier-accumulator circuitry and methods |
JP4755129B2 (ja) * | 2007-03-16 | 2011-08-24 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US7949699B1 (en) | 2007-08-30 | 2011-05-24 | Altera Corporation | Implementation of decimation filter in integrated circuit device using ram-based data storage |
US8631224B2 (en) * | 2007-09-13 | 2014-01-14 | Freescale Semiconductor, Inc. | SIMD dot product operations with overlapped operands |
US8106914B2 (en) * | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
US20110023045A1 (en) * | 2007-12-21 | 2011-01-27 | Positive Energy, Inc. | Targeted communication to resource consumers |
US20110022429A1 (en) * | 2007-12-21 | 2011-01-27 | Positive Energy, Inc. | Resource reporting |
US8959137B1 (en) | 2008-02-20 | 2015-02-17 | Altera Corporation | Implementing large multipliers in a programmable integrated circuit device |
US20100042453A1 (en) * | 2008-08-12 | 2010-02-18 | Efficiency 2.0, LLC. | Methods and apparatus for greenhouse gas footprint monitoring |
US8307023B1 (en) | 2008-10-10 | 2012-11-06 | Altera Corporation | DSP block for implementing large multiplier on a programmable integrated circuit device |
US8706790B1 (en) | 2009-03-03 | 2014-04-22 | Altera Corporation | Implementing mixed-precision floating-point operations in a programmable integrated circuit device |
US8468192B1 (en) | 2009-03-03 | 2013-06-18 | Altera Corporation | Implementing multipliers in a programmable integrated circuit device |
US8645449B1 (en) | 2009-03-03 | 2014-02-04 | Altera Corporation | Combined floating point adder and subtractor |
US8650236B1 (en) | 2009-08-04 | 2014-02-11 | Altera Corporation | High-rate interpolation or decimation filter in integrated circuit device |
US8396914B1 (en) | 2009-09-11 | 2013-03-12 | Altera Corporation | Matrix decomposition in an integrated circuit device |
US8412756B1 (en) | 2009-09-11 | 2013-04-02 | Altera Corporation | Multi-operand floating point operations in a programmable integrated circuit device |
US8549264B2 (en) * | 2009-12-22 | 2013-10-01 | Intel Corporation | Add instructions to add three source operands |
US8539016B1 (en) | 2010-02-09 | 2013-09-17 | Altera Corporation | QR decomposition in an integrated circuit device |
US7948267B1 (en) | 2010-02-09 | 2011-05-24 | Altera Corporation | Efficient rounding circuits and methods in configurable integrated circuit devices |
US8601044B2 (en) | 2010-03-02 | 2013-12-03 | Altera Corporation | Discrete Fourier Transform in an integrated circuit device |
US8484265B1 (en) | 2010-03-04 | 2013-07-09 | Altera Corporation | Angular range reduction in an integrated circuit device |
US8510354B1 (en) | 2010-03-12 | 2013-08-13 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8539014B2 (en) | 2010-03-25 | 2013-09-17 | Altera Corporation | Solving linear matrices in an integrated circuit device |
US8862650B2 (en) | 2010-06-25 | 2014-10-14 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8589463B2 (en) | 2010-06-25 | 2013-11-19 | Altera Corporation | Calculation of trigonometric functions in an integrated circuit device |
US8577951B1 (en) | 2010-08-19 | 2013-11-05 | Altera Corporation | Matrix operations in an integrated circuit device |
GB2483902B (en) * | 2010-09-24 | 2018-10-24 | Advanced Risc Mach Ltd | Vector floating point argument reduction |
US8645451B2 (en) | 2011-03-10 | 2014-02-04 | Altera Corporation | Double-clocked specialized processing block in an integrated circuit device |
CA2832211A1 (en) | 2011-05-06 | 2012-11-15 | Opower, Inc. | Method and system for selecting similar consumers |
US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
US8812576B1 (en) | 2011-09-12 | 2014-08-19 | Altera Corporation | QR decomposition in an integrated circuit device |
US9053045B1 (en) | 2011-09-16 | 2015-06-09 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
US8949298B1 (en) | 2011-09-16 | 2015-02-03 | Altera Corporation | Computing floating-point polynomials in an integrated circuit device |
CN103034301B (zh) * | 2011-10-08 | 2016-03-30 | 纬创资通股份有限公司 | 接口卡扩展模块、计算机机壳及计算机主机 |
KR102001570B1 (ko) * | 2011-10-27 | 2019-07-18 | 인텔 코포레이션 | 소프트웨어 디지털 프론트 엔드(SoftDFE) 신호 처리 |
US8762443B1 (en) | 2011-11-15 | 2014-06-24 | Altera Corporation | Matrix operations in an integrated circuit device |
US8543634B1 (en) | 2012-03-30 | 2013-09-24 | Altera Corporation | Specialized processing block for programmable integrated circuit device |
US9098332B1 (en) | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
US10796346B2 (en) | 2012-06-27 | 2020-10-06 | Opower, Inc. | Method and system for unusual usage reporting |
US8996600B1 (en) | 2012-08-03 | 2015-03-31 | Altera Corporation | Specialized processing block for implementing floating-point multiplier with subnormal operation support |
US9547316B2 (en) | 2012-09-07 | 2017-01-17 | Opower, Inc. | Thermostat classification method and system |
US9633401B2 (en) | 2012-10-15 | 2017-04-25 | Opower, Inc. | Method to identify heating and cooling system power-demand |
US9207909B1 (en) | 2012-11-26 | 2015-12-08 | Altera Corporation | Polynomial calculations optimized for programmable integrated circuit device structures |
US10067516B2 (en) | 2013-01-22 | 2018-09-04 | Opower, Inc. | Method and system to control thermostat using biofeedback |
US9189200B1 (en) | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
US10719797B2 (en) | 2013-05-10 | 2020-07-21 | Opower, Inc. | Method of tracking and reporting energy performance for businesses |
US10001792B1 (en) | 2013-06-12 | 2018-06-19 | Opower, Inc. | System and method for determining occupancy schedule for controlling a thermostat |
US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
US9361267B2 (en) | 2013-09-03 | 2016-06-07 | International Business Machines Corporation | Splitable and scalable normalizer for vector data |
US10885238B1 (en) | 2014-01-09 | 2021-01-05 | Opower, Inc. | Predicting future indoor air temperature for building |
US9852484B1 (en) | 2014-02-07 | 2017-12-26 | Opower, Inc. | Providing demand response participation |
US9947045B1 (en) | 2014-02-07 | 2018-04-17 | Opower, Inc. | Selecting participants in a resource conservation program |
US10037014B2 (en) | 2014-02-07 | 2018-07-31 | Opower, Inc. | Behavioral demand response dispatch |
US10031534B1 (en) | 2014-02-07 | 2018-07-24 | Opower, Inc. | Providing set point comparison |
US9835352B2 (en) | 2014-03-19 | 2017-12-05 | Opower, Inc. | Method for saving energy efficient setpoints |
US9727063B1 (en) | 2014-04-01 | 2017-08-08 | Opower, Inc. | Thermostat set point identification |
US10108973B2 (en) | 2014-04-25 | 2018-10-23 | Opower, Inc. | Providing an energy target for high energy users |
US10019739B1 (en) | 2014-04-25 | 2018-07-10 | Opower, Inc. | Energy usage alerts for a climate control device |
US10171603B2 (en) | 2014-05-12 | 2019-01-01 | Opower, Inc. | User segmentation to provide motivation to perform a resource saving tip |
US10235662B2 (en) | 2014-07-01 | 2019-03-19 | Opower, Inc. | Unusual usage alerts |
CN106325810B (zh) * | 2014-07-02 | 2019-06-18 | 上海兆芯集成电路有限公司 | 微处理器 |
US10024564B2 (en) | 2014-07-15 | 2018-07-17 | Opower, Inc. | Thermostat eco-mode |
US10572889B2 (en) | 2014-08-07 | 2020-02-25 | Opower, Inc. | Advanced notification to enable usage reduction |
US10410130B1 (en) | 2014-08-07 | 2019-09-10 | Opower, Inc. | Inferring residential home characteristics based on energy data |
US10467249B2 (en) | 2014-08-07 | 2019-11-05 | Opower, Inc. | Users campaign for peaking energy usage |
US9576245B2 (en) | 2014-08-22 | 2017-02-21 | O Power, Inc. | Identifying electric vehicle owners |
US10033184B2 (en) | 2014-11-13 | 2018-07-24 | Opower, Inc. | Demand response device configured to provide comparative consumption information relating to proximate users or consumers |
US10198483B2 (en) | 2015-02-02 | 2019-02-05 | Opower, Inc. | Classification engine for identifying business hours |
US11093950B2 (en) | 2015-02-02 | 2021-08-17 | Opower, Inc. | Customer activity score |
US10074097B2 (en) | 2015-02-03 | 2018-09-11 | Opower, Inc. | Classification engine for classifying businesses based on power consumption |
US10371861B2 (en) | 2015-02-13 | 2019-08-06 | Opower, Inc. | Notification techniques for reducing energy usage |
US9684488B2 (en) | 2015-03-26 | 2017-06-20 | Altera Corporation | Combined adder and pre-adder for high-radix multiplier circuit |
US10817789B2 (en) | 2015-06-09 | 2020-10-27 | Opower, Inc. | Determination of optimal energy storage methods at electric customer service points |
US9958360B2 (en) | 2015-08-05 | 2018-05-01 | Opower, Inc. | Energy audit device |
KR102359265B1 (ko) | 2015-09-18 | 2022-02-07 | 삼성전자주식회사 | 프로세싱 장치 및 프로세싱 장치에서 연산을 수행하는 방법 |
US10559044B2 (en) | 2015-11-20 | 2020-02-11 | Opower, Inc. | Identification of peak days |
US9875084B2 (en) | 2016-04-28 | 2018-01-23 | Vivante Corporation | Calculating trigonometric functions using a four input dot product circuit |
US10942706B2 (en) | 2017-05-05 | 2021-03-09 | Intel Corporation | Implementation of floating-point trigonometric functions in an integrated circuit device |
CN111160543B (zh) * | 2017-12-14 | 2023-08-29 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
US10572568B2 (en) * | 2018-03-28 | 2020-02-25 | Intel Corporation | Accelerator for sparse-dense matrix multiplication |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS643734A (en) * | 1987-06-25 | 1989-01-09 | Fujitsu Ltd | Multiplication circuit |
US4969118A (en) * | 1989-01-13 | 1990-11-06 | International Business Machines Corporation | Floating point unit for calculating A=XY+Z having simultaneous multiply and add |
JPH0521665A (ja) * | 1991-07-11 | 1993-01-29 | Nec Corp | ヒートシンク付半導体パツケージ |
JP3323526B2 (ja) * | 1991-11-28 | 2002-09-09 | パイオニアビデオ株式会社 | ディジタル信号プロセッサ |
US5241493A (en) * | 1991-12-16 | 1993-08-31 | International Business Machines Corporation | Floating point arithmetic unit with size efficient pipelined multiply-add architecture |
US5359548A (en) * | 1992-04-15 | 1994-10-25 | Fujitsu Limited | Floating-point arithmetic system having multiple-input addition and subtraction means |
US6385634B1 (en) * | 1995-08-31 | 2002-05-07 | Intel Corporation | Method for performing multiply-add operations on packed data |
US5721892A (en) * | 1995-08-31 | 1998-02-24 | Intel Corporation | Method and apparatus for performing multiply-subtract operations on packed data |
US5757686A (en) * | 1995-11-30 | 1998-05-26 | Hewlett-Packard Company | Method of decoupling the high order portion of the addend from the multiply result in an FMAC |
JP3790307B2 (ja) | 1996-10-16 | 2006-06-28 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
-
1996
- 1996-10-16 JP JP27343296A patent/JP3790307B2/ja not_active Expired - Lifetime
-
1997
- 1997-10-09 KR KR1019970051779A patent/KR100526315B1/ko not_active IP Right Cessation
- 1997-10-14 TW TW086115051A patent/TW405093B/zh not_active IP Right Cessation
- 1997-10-15 US US08/950,664 patent/US6038582A/en not_active Expired - Lifetime
-
2000
- 2000-01-07 US US09/479,075 patent/US6243732B1/en not_active Expired - Lifetime
-
2001
- 2001-03-19 US US09/810,485 patent/US6327605B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US20010011291A1 (en) | 2001-08-02 |
US6243732B1 (en) | 2001-06-05 |
KR19980032693A (ko) | 1998-07-25 |
JPH10124484A (ja) | 1998-05-15 |
KR100526315B1 (ko) | 2005-12-26 |
US6327605B2 (en) | 2001-12-04 |
TW405093B (en) | 2000-09-11 |
US6038582A (en) | 2000-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3790307B2 (ja) | データプロセッサ及びデータ処理システム | |
US20210311733A1 (en) | Generalized acceleration of matrix multiply accumulate operations | |
US8341204B2 (en) | Vector SIMD processor | |
US6490607B1 (en) | Shared FP and SIMD 3D multiplier | |
JP3869269B2 (ja) | 単一サイクルにおける乗算累算演算の処理 | |
JP2651267B2 (ja) | 演算処理装置及び演算処理方法 | |
US11816482B2 (en) | Generalized acceleration of matrix multiply accumulate operations | |
US20050044124A1 (en) | Arithmetic processor | |
US20090049113A1 (en) | Method and Apparatus for Implementing a Multiple Operand Vector Floating Point Summation to Scalar Function | |
US5426600A (en) | Double precision division circuit and method for digital signal processor | |
US6351760B1 (en) | Division unit in a processor using a piece-wise quadratic approximation technique | |
WO2000045251A2 (en) | Floating and parallel fixed point square root and reciprocal point square computation unit in a processor | |
KR100919236B1 (ko) | 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법 | |
US9703626B2 (en) | Recycling error bits in floating point units | |
CN111752605A (zh) | 使用浮点乘法-累加结果的模糊-j位位置 | |
JPH09146924A (ja) | 演算方法、演算装置及びマイクロプロセッサ | |
EP0840207A1 (en) | A microprocessor and method of operation thereof | |
WO2008077803A1 (en) | Simd processor with reduction unit | |
US7580968B2 (en) | Processor with scaled sum-of-product instructions | |
JP3547316B2 (ja) | プロセッサ | |
JP2002304288A (ja) | データ演算処理装置及びデータ演算処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050829 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050906 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051107 |
|
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: 20060322 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060331 |
|
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: 20090407 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100407 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100407 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20170407 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20170407 Year of fee payment: 11 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20170407 Year of fee payment: 11 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |