JPH1124887A - ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体 - Google Patents

ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体

Info

Publication number
JPH1124887A
JPH1124887A JP9176178A JP17617897A JPH1124887A JP H1124887 A JPH1124887 A JP H1124887A JP 9176178 A JP9176178 A JP 9176178A JP 17617897 A JP17617897 A JP 17617897A JP H1124887 A JPH1124887 A JP H1124887A
Authority
JP
Japan
Prior art keywords
vector
point type
component
normalization
fix
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.)
Withdrawn
Application number
JP9176178A
Other languages
English (en)
Inventor
Seisuke Morioka
誠介 森岡
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.)
Sega Corp
Original Assignee
Sega Enterprises Ltd
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 Sega Enterprises Ltd filed Critical Sega Enterprises Ltd
Priority to JP9176178A priority Critical patent/JPH1124887A/ja
Publication of JPH1124887A publication Critical patent/JPH1124887A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 小型で高速なベクトル正規化演算器及びベク
トル正規化演算方法を提供する。 【解決手段】 指数レベル正規化演算器1が、浮動小数
点で与えられるベクトルの各成分x,y,z を固定小数点型
の各成分fix_x,fix_y,fix_z に変換する。自乗和演算器
2、逆数平方根演算器4、乗算器5x,5y,5z、符
号合わせ回路6x,6y,6zによるベクトルの正規化
計算では、固定小数点型の成分fix_x,fix_y,fix_z が用
いられる。固定小数点型の成分fix_x,fix_y,fix_z は、
数値自体も、数値を用いた計算の結果も範囲は有限であ
り、また、小数点位置も固定されているので桁あわせや
シフトなども不要である。このため、回路がコンパクト
化(単純化・省ゲート化)され、処理も高速化される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ベクトルを正規化
するベクトル正規化演算器及びベクトル正規化演算方法
の改良に関するもので、具体的には、従来よりも小規模
な回路で構成し得るベクトル正規化演算器及びベクトル
正規化演算方法を提供することである。
【0002】
【従来の技術】ベクトルは、大きさと向きとを伴う数値
であるが、コンピュータグラフィックスでは、ベクトル
を正規化する計算がしばしば必要となる。正規化された
ベクトルは、長さの絶対値が1のものであり、光線と物
体表面の角度に関する処理などに用いることができる。
【0003】例えば、コンピュータグラフィックス(C
G)で、物体の表面に陰影付けをするときの一つの手法
として、面の法線ベクトルと光源ベクトルのなす角の余
弦(cos) を、その面を構成する画素の輝度として扱うも
のがある。これは、光の照射面積が、光の進行方向と光
が当たる面との間の角度に応じて変化するという原理を
用いたものである。例えば、図4は、総量Aのエネルギ
ーを持った光が幅Bの面積に照射される状態を概念的に
示す断面図である。この面の明るさはA/B=cosθと
なる。
【0004】ここで、この cosθを求めるために内積の
計算を用いる。すなわち、面の法線ベクトルNと光源の
方向を表すベクトルLの内積は
【数1】L・N=|L|・|N| cosθ であり、したがって、
【数2】cosθ=(L・N)/(|L|・|N|) となる。
【0005】ここで、絶対値|L|、|N|がそれぞれ
1.0であれば cosθ=L・Nとなり非常に簡単な式と
なる。正規化されたベクトルは、長さの絶対値が1のも
のであり、ベクトルが正規化されていれば余弦の算出が
容易になる。しかし、内積の計算以前に実際に算出され
ているベクトルは必ずしも正規化されたものであるとは
限らず、この場合に正規化という計算が必要となる。
【0006】ここで、内積の計算に用いようとするベク
トルが非正規化ベクトルになる例を挙げる。図4におい
て、ベクトルNは平面Sの向きを表す法線ベクトルであ
り、ベクトルLは物体から光源へ向かうベクトル(光源
ベクトル)である。このベクトルLは光源の座標と物体
の座標との差によって求められる。この場合、ベクトル
の大きさは、光源と物体との距離であるから、通常、
1.0にはならない。
【0007】また、図5は頂点に定義された二つの法線
ベクトルLa,Lbの間をベクトルL1〜L5によって
補間する状態を概念的に示す断面図である。コンピュー
タグラフィックスにおいて、物体表面にスムーズなシェ
ーディングを行う場合には法線ベクトルは頂点毎に定義
し、図5に示すようにその間を補間する。このような場
合、元の法線ベクトルの大きさが1.0であっても補間
された各ベクトルの大きさは1.0にはならない。
【0008】
【発明が解決しようとする課題】長さが1でないベクト
ルを正規化する計算を行う装置として、ベクトル正規化
演算器及びベクトル正規化演算方法が知られている。ベ
クトルの正規化には、ベクトルの長さを計算し、長さで
ベクトルの各成分x,y,z を割るといった複雑な計算が必
要である。なお、以下の記述において、"sqrt()"は平方
根をとる関数、 "*"は乗算とし、AのB乗を "A^B"
のように表すこととする。この場合、正規化の具体的な
計算内容は、
【数3】inv_length = 1 / sqrt(X^2 + Y^2 + Z^2) n_x = x * inv_length n_y = y * inv_length n_z = z * inv_length と表すことができる。
【0009】この数式は、各成分の自乗和の平方根の逆
数inv_lengthを求め、この逆数inv_lengthを、ベクトル
に含まれる各成分x,y,z に乗じることによって正規化さ
れたベクトルn_x,n_y,n_z を得ることを表している。
【0010】ここで、広い仮想空間中の座標を自由に表
すために、ベクトルの座標には浮動小数点型の数値が用
いられるが、従来は、これら自乗和などの計算を、浮動
小数点型の演算器で行っていた。浮動小数点の演算にお
いては、数値同士の小数点位置を一致させる桁合わせや
このためのシフト、指数同士の演算や符号の処理が、個
々の演算ごとに行われていた。しかし、例えば、自乗
和、平方根、逆数は必ず正で符号の処理は不必要である
など、浮動小数点演算には、ベクトルの正規化にとって
は無駄な処理も含まれていた。
【0011】このため、従来のベクトル正規化演算器は
回路の規模が大きく複雑であり、小型化は困難であっ
た。また、回路が行う演算内容も複雑であったため、高
速化も困難であった。さらに、ベクトル正規化演算器を
組み込んだグラフィックス処理システムについても、同
様に、小型化及び高速化が困難であった。
【0012】本発明は、上記のような従来技術の問題点
を解決するために提案されたもので、その目的は、従来
よりも小規模な回路で構成し得るベクトル正規化演算器
及びベクトル正規化演算方法を提供することである。ま
た、本発明の他の目的は、ベクトルを高速に正規化する
ベクトル正規化演算器及びベクトル正規化演算方法を提
供することである。また、本発明の他の目的は、優れた
演算精度を有するベクトル正規化演算器及びベクトル正
規化演算方法を提供することである。
【0013】
【課題を解決するための手段】上記の目的を達成するた
め、請求項1の発明は、ベクトルを正規化するベクトル
正規化演算器において、浮動小数点型で与えられたベク
トルに関する数値を固定小数点型に変換する第1の演算
器を備え、変換後の固定小数点型の数値を用いて正規化
のための計算を行うように構成された第2の演算器を有
することを特徴とする。請求項1の発明では、浮動小数
点型で与えられたベクトル、即ちベクトルに関する数値
が、事前に固定小数点型に変換され、ベクトルの正規化
計算には変換後の固定小数点型の数値が用いられる。固
定小数点型の数値の範囲は有限であり、また、小数点位
置も固定されているので、実際のベクトルの正規化演算
の際には、桁あわせやシフトなどが不要となる。このた
め、回路を小規模化でき、処理も高速化される。
【0014】請求項2の発明は、請求項1記載のベクト
ル正規化演算器において、前記第1の演算器は、ベクト
ルに含まれる浮動小数点型の各成分が伴う各指数のうち
最大値を計算する第3の演算器と、計算された前記最大
値と前記各指数との差を計算する減算器と、計算された
差に基づいて各成分の仮数部をシフトするシフタと、を
有することを特徴とする。請求項10の発明は、請求項
2の発明を方法の観点から把握したもので、浮動小数点
型で与えられたベクトルに関する数値を第1の演算器を
用いて固定小数点型に変換する第1の演算処理と、変換
後の固定小数点型の数値に基づいて第2の演算器を用い
て正規化のための計算を行うための第2の演算処理と、
によってベクトルを正規化するベクトル正規化演算方法
において、前記第1の演算器による前記第1の演算処理
は、第3の演算器を用いて、ベクトルに含まれる浮動小
数点型の各成分が伴う各指数のうち最大値を計算する第
3の演算処理と、計算された前記最大値と前記各指数と
の差を、減算器を用いて計算する減算処理と、計算され
た差に基づいて、各成分の仮数部をシフタを用いてシフ
トするシフト処理と、を含むことを特徴とする。請求項
11の発明は、請求項10の発明を、当該方法を実現す
るコンピュータプログラムを記録した記録媒体の観点か
ら把握したもので、浮動小数点型で与えられたベクトル
に関する数値を第1の演算器を用いて固定小数点型に変
換する第1の演算処理と、変換後の固定小数点型の数値
に基づいて第2の演算器を用いて正規化のための計算を
行うための第2の演算処理と、によってベクトルを正規
化するベクトル正規化演算方法を実現するためのコンピ
ュータプログラムを記録した記録媒体において、前記第
1の演算処理は、第3の演算器を用いて、ベクトルに含
まれる浮動小数点型の各成分が伴う各指数のうち最大値
を計算する第3の演算処理と、計算された前記最大値と
前記各指数との差を、減算器を用いて計算する減算処理
と、計算された差に基づいて、各成分の仮数部をシフタ
を用いてシフトするシフト処理と、を含むことを特徴と
する。請求項2,10,11の発明では、ベクトルに含
まれる浮動小数点型の各成分が伴う指数のうち最大値が
計算され、この最大値と指数との差に基づいて、対応す
る各成分の仮数部がシフトされる。このような単純な構
成によって浮動小数点型から固定小数点型への変換が行
われるので、小型化・高速化が容易になる。
【0015】請求項3の発明は、請求項2記載のベクト
ル正規化演算器において、ベクトルに含まれる各成分に
対応して、前記減算器及び前記シフタをそれぞれ備えた
ことを特徴とする。請求項3の発明では、ベクトルに含
まれる各成分に関し、最大値と指数の差の計算及びこの
差に基づいた仮数部のシフトが同時並行的に行われる。
このため、一系統の処理回路を各成分の処理に順次用い
る場合と比べて、処理が高速化される。
【0016】請求項4の発明は、請求項2又は3記載の
ベクトル正規化演算器において、ベクトルに含まれる浮
動小数点型の各成分の指数が0か否かを判定するための
比較器と、前記指数が0でない場合、その指数に対応す
る仮数部をシフトするときに、当該仮数部にけちビット
を付加するためのセレクタと、を有することを特徴とす
る。請求項4の発明では、浮動小数点型の成分の仮数部
において、本来の第1ビット目の「1」を省略している
場合でも、シフトの際にけちビットが仮数部に付加され
る。このため、有効桁数がけちビットの分だけ節約で
き、表現可能な数値の範囲が拡大し、演算精度が向上す
る。
【0017】請求項5の発明は、請求項1,2,3又は
4記載のベクトル正規化演算器において、前記第2の演
算器は、固定小数点型に変換された各成分を用いた計算
の範囲に合わせて最適化されていることを特徴とする。
請求項5の発明では、ベクトル正規化の計算が固定小数
点で行われるだけでなく、計算に用いられる第2の演算
器が固定小数点の計算範囲に合わせて最適化されている
ので、第2の演算器から無駄な要素が排除され、ベクト
ル正規化演算器がコンパクト化・高速化される。
【0018】請求項6の発明は、請求項5記載のベクト
ル正規化演算器において、前記第2の演算器は、固定小
数点型に変換されたベクトルの各成分の自乗和を固定小
数点型の値として計算する第4の演算器と、計算された
自乗和の平方根の逆数を固定小数点型の値として計算す
る第5の演算器と、計算された前記逆数と、固定小数点
型に変換されたベクトルの各成分との乗算を行う乗算器
と、ベクトルが浮動小数点型として与えられたときに各
成分が伴っていた符号を、前記乗算の結果と組み合わせ
ることによって、正規化されたベクトルを出力する符号
合わせ回路と、を有することを特徴とする。請求項6の
発明では、第2の演算器の各部分において、固定小数点
型の値として計算が行われる。このため、ベクトル正規
化演算器がコンパクト化・高速化される。
【0019】請求項7の発明は、請求項6記載のベクト
ル正規化演算器において、前記乗算器及び前記符号合わ
せ回路とをそれぞれ、ベクトルに含まれる成分の数だけ
備えたことを特徴とする。請求項7の発明では、計算さ
れた逆数との乗算及び符号との組み合わせ処理が、ベク
トルに含まれる各成分について同時並行的に行われる。
このため、一系統の処理回路を各成分の処理に順次用い
る場合と比べて、処理が高速化される。
【0020】請求項8の発明は、請求項6又は7記載の
ベクトル正規化演算器において、前記第5の演算器は、
前記自乗和の平方根の逆数を、予め計算された数値の対
照テーブルを用いて計算するように構成されたことを特
徴とする。請求項8の発明では、計算量の多い自乗和の
平方根の逆数が、予め計算された数値の対照テーブルを
用いて計算される。このため、ベクトル正規化演算器が
コンパクト化・高速化される。
【0021】請求項9の発明は、請求項6,7又は8記
載のベクトル正規化演算器において、前記自乗和の定義
域は、1.0〜12.0であることを特徴とする。請求
項9の発明では、固定小数点型に変換されたベクトルの
各成分の数値の範囲が0〜2.0である。このため、各
成分がこの最大値の2.0をとる場合に成分ごとの自乗
は4.0であり、三つの成分の合計が12.0である。
請求項9の発明では、この各成分x,y,zの自乗和の
範囲0〜12.0に合わせて、対照テーブルの定義域が
限定されている。このため、対照テーブルの容量・検索
所要時間ともに、自乗和の平方根の逆数を計算するため
に必要な最小限のものに最適化される。このため、小型
かつ高速なベクトル正規化演算器が実現される。
【0022】
【発明の実施の形態】次に、本発明のベクトル正規化演
算器及びベクトル正規化演算方法の実施の形態について
図面に従って具体的に説明する。
【0023】(1)実施の形態の構成 本実施の形態は、請求項1〜9に対応するベクトル正規
化演算器(以下「本装置」という)及びこのベクトル正
規化演算器上で実行されるベクトル正規化演算方法(請
求項10)に関するものである。なお、本実施の形態に
おいて、 1.0011010や (1).0011010のように、小数点及
び1又は0によって数字を表記するときは、数式の一部
分として用いる場合を含めて、特に記さないかぎり2進
数の表現である。
【0024】まず、図1は本実施の形態のベクトル正規
化演算器の全体構成を示すブロック図である。この図に
示すように、本装置は、浮動小数点型として与えられる
ベクトルの各成分x,y,z を固定小数点型の各成分fix_x,
fix_y,fix_z に変換する指数レベル正規化演算器1(前
記第1の演算器に相当するもの)を有している。また、
本装置は、固定小数点型に変換された各成分fix_x,fix_
y,fix_z の自乗和length2 を計算する自乗和演算器2
(前記第4の演算器に相当するもの)と、計算された自
乗和length2 の平方根の逆数inv_lengthを、対照テーブ
ル3を用いて計算する逆数平方根演算器4(前記第5の
演算器に相当するもの)と、を有する。
【0025】また、本装置は、ベクトルに含まれる各成
分fix_x,fix_y,fix_z にそれぞれ対応して、計算された
逆数inv_lengthを各成分fix_x,fix_y,fix_z に乗算する
乗算器5x,5y,5zを有する。また、本装置は、浮
動小数点型で与えられた各成分x,t,z の符号sign_x,sig
n_y,sign_zを乗算の結果に組み合わせることによって、
正規化されたベクトルの各成分n_x,n_y,n_z を出力する
符号合わせ回路6x,6y,6zを有する。
【0026】また、図2は、指数レベル正規化演算器1
の内部の構成を示す機能ブロック図である。この図に示
すように、指数レベル正規化演算器1は、浮動小数点型
で与えられたベクトルの各成分x,y,z の各指数部exp_x,
exp_y,exp_z のうち最大値exp_max を計算する最大値演
算器7(前記第3の演算器に相当するもの)を有する。
また、指数レベル正規化演算器1は、ベクトルに含まれ
る各成分x,y,z に対応して、最大値exp_max と成分の各
指数部exp_x,exp_y,exp_z との差を計算する減算器8
x,8y,8zと、計算された差に基づいて対応する成
分の仮数部man_x,man_y,man_z をシフトするシフタ9
x,9y,9zとを有する。
【0027】また、指数レベル正規化演算器1は、ベク
トルに含まれる各成分x,y,z の各指数部exp_x,exp_y,ex
p_z が0であるか否かを判定する比較器10x,10
y,10zと、指数が0でない場合に、対応する成分の
仮数部man_x,man_y 又はman_zをシフトする際にけちビ
ットを付加するためのセレクタ11x,11y,11z
と、を有する。
【0028】(2)実施の形態の作用及び効果 上記のような構成を有する本装置において、ベクトルの
正規化は次のように行われる。なお、図3は本実施の形
態における処理手順を示すフローチャートである。
【0029】[浮動小数点型のベクトルの入力]まず、
浮動小数点型のベクトルが指数レベル正規化演算器1に
入力される(ステップ1)。入力データたるベクトル
は、浮動小数点型の各成分x,y,z を含む。各成分x,y,z
を表すビット列は、符号(sign)、指数部(exp) 、仮数部
(man) に区分される。例えば、4バイトの浮動小数点型
数値は符号1ビット、指数部8ビット、仮数部23ビッ
トに区分できる。各成分x,y,z の区分は、
【数4】{sign_x,exp_x,man_x} = x {sign_y,exp_y,man_y} = y {sign_z,exp_z,man_z} = z のように表すことができる。
【0030】なお、浮動小数点型のベクトルがベクトル
正規化演算器の外部から、数値のビット列を伝える信号
線で伝達されることによって入力される場合、信号線を
あらかじめこの区分にしたがって配線するので、区分の
ために何か具体的な処理を処改めて行うわけではない。
この結果、各成分x,y,z に対応して、各仮数部man_x,ma
n_y,man_z 、各指数部exp_x,exp_y,exp_z 、各符号sign
_x,sign_y,sign_zが入力される。
【0031】[最大の指数の計算]指数レベル正規化演
算器1では、まず、最大値演算器7が、入力された各指
数部exp_x,exp_y,exp_z を相互に比較し、最大のものを
最大値exp_max として計算し出力する(ステップ2)。
この処理は、引数の最大値を出力する関数を"max()" と
表す場合、
【数5】exp_max = max(exp_x,exp_y,exp_z) と表すことができる。
【0032】[仮数部のシフト]続いて、各成分x,y,z
の各仮数部man_x,man_y,man_z が、それぞれ対応する各
指数部exp_x,exp_y,exp_z を最大値exp_max から減じた
差分のビット数だけ右シフトされる(ステップ3)。こ
の処理は、
【数6】fix_x=(exp_max-exp_x)ビット分だけ右シフト
したman_x fix_y=(exp_max-exp_y)ビット分だけ右シフトしたman_y fix_z=(exp_max-exp_z)ビット分だけ右シフトしたman_z と表すことができる。
【0033】例えば、成分xについては、減算器8x
が、最大値演算器7で演算された最大値exp_max と成分
xの指数部exp_x との差を計算してシフタ9xに送る。
シフタ9xは減算器8xから送られた差分のビット数だ
け仮数部exp_x を右シフトする。成分y,z についても減
算器8y及びシフタ9y、減算器8z及びシフタ9zが
それぞれ同様の処理を行う。なお、指数が最大値exp_ma
x である成分x,y又はzについてもシフト動作が行わ
れて差しつかえないが、差分0に基づいて0ビットのシ
フト動作となるので、結果的に当該仮数部は不変であ
る。
【0034】このような指数部exp_x,exp_y,exp_z のシ
フトは、それぞれの各指数部exp_x,exp_y,exp_z を最大
値exp_max に合わせて増大させる一方で、増大分を相殺
するように仮数部を小さくすることを意味し、この結
果、変換前と変換後の各成分は、仮数部からはみ出して
切り捨てられるビットによる誤差を除いて不変となる。
【0035】このように、本実施の形態では、ベクトル
に含まれる浮動小数点型の各成分x,y,z の各指数部exp_
x,exp_y,exp_z のうち最大値exp_max が計算され、この
最大値exp_max と各指数部exp_x,exp_y,exp_z との差に
基づいて、差に対応する各成分x,y,z の仮数部man_x,ma
n_y,man_z がシフトされる。本実施の形態では、このよ
うな単純な構成によって浮動小数点型から固定小数点型
への変換が行われるので、処理が高速化される。
【0036】また、本実施の形態では、ベクトルに含ま
れる各成分x,y,z に対応して、減算器及びシフタをそれ
ぞれ3つずつ備えている(減算器8x,8y,8z及び
シフタ9x,9y,9z)。このため、ベクトルに含ま
れる各成分x,y,z ごとに、上記のような最大値exp_max
と各指数部exp_x,exp_y,exp_z の差の計算及びこの差に
基づいた各仮数部man_x,man_y,man_z のシフトを同時並
行的に行うことができる。このため、一系統の処理回路
を各成分x,y,z の処理に順次用いる場合と比べて、処理
が高速化される。
【0037】[けちビットの付加]なお、シフタ9x,
9y,9zは、仮数部man_x,man_y,man_z に対して、必
要なけちビットを付加してシフトを行う。けちビットと
は、省略されていた最上位ビット「1」である。すなわ
ち、本来は、浮動小数点型数値では、「1」になってい
る最初のビットが仮数部の1ビット目に位置するよう
に、仮数部と指数部が調整される。この結果、数値が0
でないかぎり1ビット目は常に「1」となる。そこで常
に「1」である1ビット目を省略し、本来の2ビット目
の値を実際のビット列の1ビット目に配置することがで
きる。この場合は、例えば仮数部を1ビット右シフトす
ると、シフト後の第1ビットは「0」でなく、仮想され
ていたビット値1がシフトされて現われるので「1」に
する必要がある。
【0038】このように省略された仮想のビット値
「1」がけちビットであるが、数値が0(指数部が0)
の場合を除いて、けちビット「1」をシフトの際に仮数
部man_x,man_y,man_z に付加する必要がある。
【0039】なお、指数部が0である場合の内部表現形
式の一例を挙げる。例えば、8ビットの指数部は256
通りの数値を表すことができるが、−128を加減する
いわゆる下駄ばき表現の場合、表現可能な数値の範囲は
−128から+127である。この場合、最小の数であ
る−128(2^−128)によって指数部が0である
ことを表現する。
【0040】したがって、本明細書において、けちビッ
トを付加するか否かに関して「指数(部)が0」という
ときは、数値自体が0であることを表すために定められ
た特定の値をとっていることを意味する。
【0041】けちビットは、具体的には次のように付加
される。例えば成分xについての処理では、比較器10
xが指数部exp_x を0と比較し、比較結果をセレクタ1
1xに送る。セレクタ11xはこの比較結果を受けて、
成分xの指数部exp_x が0でなければ省略されていたけ
ちビットである「1」をシフタ9xに送り、指数部exp_
x が0の時は数値が0であるからけちビットの代わりに
「0」をシフタ9xに送る。シフタ9xは、セレクタ1
1xから送られた値「1」又は「0」を第1ビット目と
して付加し、man_x に対するシフト動作を行う。
【0042】なお、シフトによって各仮数部man_x,man_
y,man_z は固定小数点型の各成分fix_x,fix_y,fix_z に
変換されるが、シフトの結果、固定小数点型で定められ
たビット数からはみ出したビットは切り捨てられる。こ
れは、浮動小数点型の演算においても演算の際に桁合わ
せのため仮数部をシフトし、仮数部からはみ出したビッ
トを誤差として切り捨てているのと同じであり、このた
めに演算精度が低下するということはない。
【0043】このように、本実施の形態では、浮動小数
点型の各成分x,y,z の各仮数部man_x,man_y,man_z にお
いて、本来の第1ビット目の「1」を省略している場合
でも、シフトの際にけちビットが仮数部に付加される。
このため、有効桁数がけちビットの分だけ節約でき、表
現可能な数値の範囲が拡大し、演算精度が向上する。
【0044】[シフトの例]上記のようなシフトの具体
例を次に挙げる。例えば元の浮動小数点型データを
【数7】 とする。なお、この例は仮数部を7ビットに簡略化した
もので、各仮数部man_x,man_y,man_z の小数点前の括弧
内はけちビットである。この場合、各指数部exp_x,exp_
y,exp_z の最大値exp_max はxに対応する指数部exp_x
である5となる。この最大値5と各指数部exp_x,exp_y,
exp_z との差分のビット数はそれぞれ0,1,3であ
り、この分だけ各仮数部man_x,man_y,man_z がシフトさ
れる。
【0045】この結果、シフト後の各仮数部man_x,man_
y,man_z はいずれも指数部が5(2^5)となった場合
に対応するビット列となる。具体的には、
【数8】fix_x = 1.1010010 * 2^5 * (-1)^0 はシフトが0ビットであるから元の成分xの仮数部man_
x と比べて変更がない。また、
【数9】fix_y = 0.1011010 * 2^5 * (-1)^0 は指数が1増大する一方で、仮数部man_y が1ビット右
にシフトされた結果である。また、
【数10】fix_z = 0.0011001 * 2^5 * (-1)^1 については指数部exp_z が3増大されるのに対応して、
仮数部man_z が3ビット右にシフトされたものとなって
おり、浮動小数点の仮数部man_z で右から3ビット目だ
った「1」は有効桁外に排除されている。
【0046】このようにシフトされた結果、シフタ9
x,9y,9zからそれぞれ固定小数点型のfix_x,fix_
y,fix_z が出力される。これら固定小数点型のfix_x,fi
x_y,fix_z は、元のベクトルを指数に基づいて(指数レ
ベルで)粗く正規化したもので、各成分fix_x,fix_y,fi
x_z は0から2.0(10進)の範囲に限定された値と
なる。
【0047】なお、各成分x,y,z の各指数部exp_x,exp_
y,exp_z はその後の演算過程で消滅するので、この後は
処理の対象とする必要はない。例えば指数の最大値が2
^Aの場合、各成分x,y,z の各指数部exp_x,exp_y,exp_
z は概念的には2^Aに変更される。その後、自乗の計
算結果においては指数が2^2Aとなり、平方根の計算
によって指数は2^Aに戻り、逆数となる時点で2^−
Aとなる。この逆数が当初の2^Aに乗算され、正規化
されたベクトルの各成分n_x,n_y,n_z の指数は常に2^
0=1となるため、各指数部exp_x,exp_y,exp_z はシフ
ト以降は不要となる。
【0048】[自乗和の計算]次に、自乗和演算器2
が、このように得られた固定小数点型のfix_x,fix_y,fi
x_z の自乗和length2 を計算する(ステップ4)。この
処理は、
【数11】length2 = fix_x^2 + fix_y^2 + fix_z^2 と表すことができる。
【0049】なお、fix_x,fix_y,fix_z は固定小数点型
であるから、自乗和を含むこれ以降の計算において、浮
動小数点演算に必要な正規化や桁合わせ、それらに伴う
シフトは不要であり、際だった最適化(単純化と高速
化)が実現される。計算結果としての自乗和length2 も
固定小数点型の数値として求められる。
【0050】[平方根の逆数の計算]続いて、逆数平方
根演算器4が、自乗和length2 の平方根の逆数inv_leng
thを計算する(ステップ5)。この処理は、
【数12】inv_length = 1 / sqrt(length2) と表すことができる。
【0051】この計算には、入力値と計算結果の値の対
照テーブル3を用いるが、入力値の定義域が1.0(1
0進)から12.0(10進)、値域が1.0(10
進)から0.288・・・(10進)となる結果、計算
範囲が限定されるため、対照テーブル3に用意しておく
入力値と計算結果の組み合わせが少なくて済み、最適化
(単純化と高速化)が実現される。
【0052】ここで、入力値の定義域の最小値が1であ
るのは、指数が最大であったためにシフトされなかった
成分の仮数部がけちビットのみ「1」で(例えば(1).00
00000 )で、シフトされた他の成分の仮数部がシフトの
結果0になった場合に、
【数13】1.0000000^2 + 0^2 + 0^2 = 1 のようになるからである。また、入力値の定義域の最大
値が約12になるのは、各成分のいずれも指数部が同一
で仮数部が1.1111111 すなわち約2の場合に、
【数14】2^2 + 2^2 + 2^2 = 4 + 4 + 4 = 12 に近似の値になるからである。結果の値域の最小値0.
288・・・(10進)は入力値の定義域12.0(1
0進)の最大値に対応したものであり、結果の値域の最
大値1.0(10進)は入力値の定義域の最小値1.0
(10進)に対応したものである。
【0053】このように、本実施の形態では、固定小数
点型に変換されたベクトルの各成分fix_x,fix_y,fix_z
の数値の範囲が0〜2.0であることから、x,y,z
の自乗和length2 の範囲0〜12.0に合わせて、対照
テーブル3の定義域が限定されている。このため、対照
テーブルの容量・検索所要時間ともに自乗和の平方根の
逆数inv_lengthを計算するための最小のものに最適化さ
れる。このため、小型かつ高速なベクトル正規化演算器
が実現される。
【0054】もちろん、対象テーブル3の表現形式は固
定小数点型であり、平方根の逆数も固定小数点型の数値
として計算される。
【0055】[乗算その他の処理]このように得られた
逆数inv_lengthを、乗算器5x,5y,5zがそれぞ
れ、固定小数点型のfix_x,fix_y,fix_z に乗ずる(ステ
ップ6)。この処理は、
【数15】nx = fix_x * inv_length ny = fix_y * inv_length nz = fix_z * inv_length と表すことができる。
【0056】最後に、符号合わせ回路6x6y6zが、
それぞれ、各成分nx,ny,nzに、それぞれ対応する符号si
gn_x,sign_y,sign_zを合わせ、正規化されたベクトルn_
x,n_y,n_z として出力する(ステップ7)。
【0057】なお、正規化されたベクトル{n_x,n_y,n_
z} においては、
【数16】n_x^2 + n_y^2 + n_z^2 = 1 である。
【0058】[実施の形態の効果]以上説明したよう
に、本実施の形態によれば、浮動小数点型で与えられた
ベクトルが事前に固定小数点型の各成分fix_x,fix_y,fi
x_z に変換され(指数レベルでの粗い正規化)、ベクト
ルの正規化計算に固定小数点型の成分fix_x,fix_y,fix_
z が用いられる。固定小数点型の成分fix_x,fix_y,fix_
z は、数値自体も、数値を用いた計算の結果も範囲は有
限であり、また、小数点位置も固定されているので桁あ
わせやシフトなども不要である。このため、回路がコン
パクト化(単純化・省ゲート化)され、処理も高速化さ
れる。また、固定小数点型の数値であれば小数点位置が
固定されているので、自乗和を求める際に乗算と加算を
一体に行えるなどの利点が生じる。
【0059】また、本実施の形態では、ベクトル正規化
の計算が固定小数点で行われるだけでなく、計算に用い
られる第2の演算器(自乗和演算器2、逆数平方根演算
器4、乗算器5x,5y,5z、符号合わせ回路6x,
6y,6z)が固定小数点の計算範囲に合わせて最適化
されている。すなわち、第2の演算器を構成するこれら
自乗和演算器2、逆数平方根演算器4、乗算器5x,5
y,5z、符号合わせ回路6x,6y,6zはいずれ
も、入力値の受け入れ、内部演算、演算結果の出力とも
に、固定小数点型として行うように構成されている。こ
のため、第2の演算器から無駄な要素が排除され、ベク
トル正規化演算器がコンパクト化・高速化される。
【0060】特に、本実施の形態では、自乗和の平方根
の逆数も自乗和の定義域に対応する対照テーブル3を参
照することによって求められるので、平方根やその逆数
の演算が容易となる。このため、ベクトル正規化演算器
がコンパクト化・高速化される。
【0061】また、本実施の形態では、ベクトルに含ま
れる各成分fix_x,fix_y,fix_z の数に対応して、乗算器
及び符号合わせ回路とをそれぞれ3つずつ備えている
(乗算器5x,5y,5z及び符号合わせ回路6x,6
y,6z)。このため、計算された逆数inv_lengthと各
成分fix_x,fix_y,fix_z との乗算及び符号sign_x,sign_
y,sign_zを組み合わせる処理とを、ベクトルに含まれる
各次元の各成分fix_x,fix_y,fix_z について同時並行的
に行うことができる。このため、一系統の処理回路を各
成分fix_x,fix_y,fix_z の処理に順次用いる場合と比べ
て、処理が高速化される。
【0062】なお、本実施の形態に示したようなベクト
ル正規化演算器は、グラフィックス処理システムに組み
込むと、処理の高速化が特に著しい。
【0063】すなわち、ゲーム装置などにおけるグラフ
ィックス表示では、ポリゴン・陰面処理・シェーディン
グなどを用いて、3次元的な背景や登場するキャラクタ
などを表示する。特に、プレイヤの視点位置が変化する
グラフィックス表示では、これらの表示を、高速でしか
も短い頻度で繰り返す必要がある。このような表示で
は、表示する物体表面の位置ごとに、正規化されたベク
トルを用いた計算を繰り返す必要があるため、ベクトル
の正規化も極めて膨大な回数に亘って繰り返すことにな
る。
【0064】このようなグラフィックス処理システムで
は、固定小数点型に変換したベクトルを正規化の対象と
することによって、回路の小型化が図られると共に、正
規化が大幅に高速化され、グラフィックス処理能力が著
しく向上する。この結果、1秒当たりのフレーム数、フ
レーム当たりのピクセル(画素)数、同時に描画できる
キャラクタの数や複雑さ、シェーディングのスムース
さ、表面テクスチャの複雑さなど、グラフィックス表示
の品質が向上する。これによってゲームにおける表示の
リアルさや迫力が大幅に改善される。
【0065】もちろん、ゲームのみならず、バーチャル
リアリティシステムや各種シミュレータなど、グラフィ
ックス処理を要する対象に本発明を適用することによっ
て、同様の効果が得られる。
【0066】(3)他の実施形態 なお、本発明は上記実施形態に限定されるものではな
く、実施態様の変更は自由であるから、次に例示するよ
うな他の実施形態をも包含するものである。例えば、上
記実施の形態において示した数値の実例や表現形式は単
なる例示であって、本発明を適用するシステムに応じて
自由に変更することができる。
【0067】また、上記実施の形態において、乗算器
5、符号合わせ回路6、減算器8、シフタ9、比較器1
0、セレクタ11はそれぞれ一つずつ用意し、それぞれ
を順次、ベクトルに含まれる各値に適用してもよい。ま
た、けちビットを伴わない表現形式の数値を正規化の対
象とするときは、比較器10x,10y,10z、セレ
クタ11x,11y,11zを備える必要はない。
【0068】また、本発明は、コンピュータをプログラ
ムで制御することによって実現することができるが、そ
のようなプログラムを記録した記録媒体も本発明の一態
様である。
【0069】
【発明の効果】以上のように、本発明によれば、小型で
高速なベクトル正規化演算器及びベクトル正規化演算方
法を提供することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるベクトル正規化演
算器の構成を示す機能ブロック図。
【図2】本発明の実施の形態のベクトル正規化演算器に
おける指数レベル正規化演算器1の構成を示す機能ブロ
ック図。
【図3】本発明の実施の形態における処理手順を示すフ
ローチャート。
【図4】総量Aのエネルギーを持った光が幅Bの面積に
照射される状態を概念的に示す断面図。
【図5】頂点に定義された二つの法線ベクトルLa,L
bの間をベクトルL1〜L5によって補間する状態を概
念的に示す断面図。
【符号の説明】
1…指数レベル正規化演算器 2…自乗和演算器 3…対照テーブル 4…逆数平方根演算器 5x,5y,5z…乗算器 6x,6y,6z…符号合わせ回路 7…最大値演算器 8x,8y,8z…減算器 9x,9y,9z…シフタ 10x,10y,10z…比較器 11x,11y,11z…セレクタ A…光量 S…光が照射される面 B…光が照射される面の幅 L…光源ベクトル N…面の法線ベクトル La,Lb…頂点に定義された法線ベクトル L1〜L5…補間されたベクトル STEP…手順の各ステップ

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 ベクトルを正規化するベクトル正規化演
    算器において、 浮動小数点型で与えられたベクトルに関する数値を固定
    小数点型に変換する第1の演算器を備え、 変換後の固定小数点型の数値を用いて正規化のための計
    算を行うように構成された第2の演算器を有することを
    特徴とするベクトル正規化演算器。
  2. 【請求項2】 前記第1の演算器は、 ベクトルに含まれる浮動小数点型の各成分が伴う各指数
    のうち最大値を計算する第3の演算器と、 計算された前記最大値と前記各指数との差を計算する減
    算器と、 計算された差に基づいて各成分の仮数部をシフトするシ
    フタと、 を有することを特徴とする請求項1記載のベクトル正規
    化演算器。
  3. 【請求項3】 ベクトルに含まれる各成分に対応して、
    前記減算器及び前記シフタをそれぞれ備えたことを特徴
    とする請求項2記載のベクトル正規化演算器。
  4. 【請求項4】 ベクトルに含まれる浮動小数点型の各成
    分の指数が0か否かを判定するための比較器と、 前記指数が0でない場合、その指数に対応する仮数部を
    シフトするときに、当該仮数部にけちビットを付加する
    ためのセレクタと、 を有することを特徴とする請求項2又は3記載のベクト
    ル正規化演算器。
  5. 【請求項5】 前記第2の演算器は、 固定小数点型に変換された各成分を用いた計算の範囲に
    合わせて最適化されていることを特徴とする請求項1,
    2,3又は4記載のベクトル正規化演算器。
  6. 【請求項6】 前記第2の演算器は、 固定小数点型に変換されたベクトルの各成分の自乗和を
    固定小数点型の値として計算する第4の演算器と、 計算された自乗和の平方根の逆数を、固定小数点型の値
    として計算する第5の演算器と、 計算された前記逆数と、固定小数点型に変換されたベク
    トルの各成分との乗算を行う乗算器と、 ベクトルが浮動小数点型として与えられたときに各成分
    が伴っていた符号を、前記乗算の結果と組み合わせるこ
    とによって、正規化されたベクトルを出力する符号合わ
    せ回路と、 を有することを特徴とする請求項5記載のベクトル正規
    化演算器。
  7. 【請求項7】 前記乗算器及び前記符号合わせ回路とを
    それぞれ、ベクトルに含まれる各成分に対応して備えた
    ことを特徴とする請求項6記載のベクトル正規化演算
    器。
  8. 【請求項8】 前記第5の演算器は、前記自乗和の平方
    根の逆数を、予め計算された数値の対照テーブルを用い
    て計算するように構成されたことを特徴とする請求項6
    又は7記載のベクトル正規化演算器。
  9. 【請求項9】 前記自乗和の定義域は、1.0〜12.
    0であることを特徴とする請求項6,7又は8記載のベ
    クトル正規化演算器。
  10. 【請求項10】 浮動小数点型で与えられたベクトルに
    関する数値を第1の演算器を用いて固定小数点型に変換
    する第1の演算処理と、変換後の固定小数点型の数値に
    基づいて第2の演算器を用いて正規化のための計算を行
    うための第2の演算処理と、によってベクトルを正規化
    するベクトル正規化演算方法において、 前記第1の演算器による前記第1の演算処理は、 第3の演算器を用いて、ベクトルに含まれる浮動小数点
    型の各成分が伴う各指数のうち最大値を計算する第3の
    演算処理と、 計算された前記最大値と前記各指数との差を、減算器を
    用いて計算する減算処理と、 計算された差に基づいて、各成分の仮数部をシフタを用
    いてシフトするシフト処理と、 を含むことを特徴とするベクトル正規化演算方法。
  11. 【請求項11】 浮動小数点型で与えられたベクトルに
    関する数値を第1の演算器を用いて固定小数点型に変換
    する第1の演算処理と、変換後の固定小数点型の数値に
    基づいて第2の演算器を用いて正規化のための計算を行
    うための第2の演算処理と、によってベクトルを正規化
    するベクトル正規化演算方法を実現するためのコンピュ
    ータプログラムを記録した記録媒体において、 前記第1の演算処理は、 第3の演算器を用いて、ベクトルに含まれる浮動小数点
    型の各成分が伴う各指数のうち最大値を計算する第3の
    演算処理と、 計算された前記最大値と前記各指数との差を、減算器を
    用いて計算する減算処理と、 計算された差に基づいて、各成分の仮数部をシフタを用
    いてシフトするシフト処理と、 を含むことを特徴とする記録媒体。
JP9176178A 1997-07-01 1997-07-01 ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体 Withdrawn JPH1124887A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9176178A JPH1124887A (ja) 1997-07-01 1997-07-01 ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9176178A JPH1124887A (ja) 1997-07-01 1997-07-01 ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体

Publications (1)

Publication Number Publication Date
JPH1124887A true JPH1124887A (ja) 1999-01-29

Family

ID=16009029

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9176178A Withdrawn JPH1124887A (ja) 1997-07-01 1997-07-01 ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体

Country Status (1)

Country Link
JP (1) JPH1124887A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009193095A (ja) * 2008-02-12 2009-08-27 Akuseru:Kk ポリゴンデータの圧縮システム、圧縮プログラム、伸張システムおよび伸張プログラム
JP2012069116A (ja) * 2010-09-24 2012-04-05 Arm Ltd ベクトル浮動小数点引数削減
US8295264B2 (en) 2005-06-23 2012-10-23 Nec Corporation MBMS soft combining
JP2017527014A (ja) * 2014-07-15 2017-09-14 クゥアルコム・インコーポレイテッドQualcomm Incorporated 算術論理ユニットにおいて使用するためのベクトルスケーリング命令

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8295264B2 (en) 2005-06-23 2012-10-23 Nec Corporation MBMS soft combining
JP2009193095A (ja) * 2008-02-12 2009-08-27 Akuseru:Kk ポリゴンデータの圧縮システム、圧縮プログラム、伸張システムおよび伸張プログラム
JP4721072B2 (ja) * 2008-02-12 2011-07-13 株式会社アクセル ポリゴンデータの圧縮システムおよび伸張システム
JP2012069116A (ja) * 2010-09-24 2012-04-05 Arm Ltd ベクトル浮動小数点引数削減
US9146901B2 (en) 2010-09-24 2015-09-29 Arm Limited Vector floating point argument reduction
JP2017527014A (ja) * 2014-07-15 2017-09-14 クゥアルコム・インコーポレイテッドQualcomm Incorporated 算術論理ユニットにおいて使用するためのベクトルスケーリング命令

Similar Documents

Publication Publication Date Title
US6081274A (en) Shading processing device
US7242414B1 (en) Processor having a compare extension of an instruction set architecture
US8615542B2 (en) Multi-function floating point arithmetic pipeline
CN101133389B (zh) 多用途乘法-加法功能单元
CN107273090A (zh) 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN103180820A (zh) 用于执行浮点除法的方法和装置
US7075530B2 (en) Fast lighting processors
JPH04290122A (ja) 数値表現変換装置
TW523698B (en) Multi-stage fixed cycle pipe-lined lighting equation evaluator
JPH09212337A (ja) 浮動小数点演算処理装置
JPH1124887A (ja) ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体
US7149765B2 (en) Apparatus and method for precision binary numbers and numerical operations
US9348796B2 (en) Arithmetic operation in a data processing system
KR20060103920A (ko) 스케일링된 정수를 사용하는 부동 소수점 연산
CN116700666A (zh) 一种浮点数处理方法及装置
JP3064405B2 (ja) 複素数の演算処理方式
CN116700665B (zh) 一种确定浮点数平方根倒数的方法及装置
US6654777B1 (en) Single precision inverse square root generator
JP2001175880A (ja) 浮動小数点加算器
KR20010067226A (ko) 인터폴레이션 방법 및 장치
CN108182050A (zh) 利用四输入点积电路计算三角函数
JPH0314128A (ja) 対数表現数値利用の演算装置
CA2261245A1 (en) Division circuit and graphic display processing apparatus
JPH09204294A (ja) 3入力浮動小数点加算装置
JPH0721155A (ja) 中央演算処理装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20040907