米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 松下電器産業株式会社

発明の名称 繰り返し算術演算装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開平7−73018
公開日 平成7年(1995)3月17日
出願番号 特願平6−135271
出願日 平成6年(1994)6月17日
代理人 【弁理士】
【氏名又は名称】前田 弘 (外2名)
発明者 三好 明 / 橋本 祐一
要約 目的
正規化された浮動小数点数の繰り返し乗算を小さいハードウェアで高速実行できるようにする。

構成
P=X0 ×X1 ×X2 ×…×Xm で示される正規化された浮動小数点2進数Xk (k=0,…,m)の繰り返し乗算を実行するように、1≦XMk<2を満たす仮数XMkが仮数処理部に供給される。仮数処理部は、冗長2進数すなわちRB(Redundant Binary)数で表現された積がレジスタ15に格納され、かつ積が2進数に変換されることなく乗算器13にフィードバックされるように構成される。乗算器13とレジスタ15との間に、右1桁シフト処理のためのシフタ14が挿入される。変換器16は、レジスタ15に格納された冗長2進数を2進数に逐次変換し、該変換の結果に応じたシフト量信号S1 をシフタ14に供給する。この際、変換により得られた2進数の小数点より2桁上位の桁が0ならばS1 =0とされ、1ならばS1 =1とされる。
特許請求の範囲
【請求項1】 2つの入力ポートを有し、該2つの入力ポートにそれぞれ供給されたSD(Signed Digit)数に算術演算を施すことによりSD数で表現された演算結果を得るための第1の手段と、小数点より1桁上位の非ゼロ値桁を含む複数桁を有する少なくとも1つの2進数の供給を受け、該供給された2進数から得られたSD数を前記第1の手段の2つの入力ポートのうちの一方の入力ポートに供給するための第2の手段と、前記第1の手段により得られた演算結果に指定量の右シフト処理を少なくとも施して得られたSD数を保持し、かつ該保持したSD数を前記第1の手段の2つの入力ポートのうちの他方の入力ポートに供給するための第3の手段と、前記第3の手段に保持されたSD数を2進数に変換し、かつ該変換により得られた2進数の小数点より2桁以上上位の特定桁に基づいて決定したシフト量を前記右シフト処理の指定量として前記第3の手段に供給するための第4の手段とを備えたことを特徴とする繰り返し算術演算装置。
【請求項2】 請求項1記載の繰り返し算術演算装置において、前記第1の手段は、供給された2つのSD数の乗算を実行することによりSD数で表現された積を得るための乗算器を備えたことを特徴とする繰り返し算術演算装置。
【請求項3】 請求項1記載の繰り返し算術演算装置において、前記第1の手段は、供給された2つのSD数の加算を実行することによりSD数で表現された和を得るための加算器を備えたことを特徴とする繰り返し算術演算装置。
【請求項4】 請求項1記載の繰り返し算術演算装置において、前記第2の手段は、供給された2進数をSD数に変換し、かつ該変換により得られたSD数を前記第1の手段の2つの入力ポートのうちの一方の入力ポートに供給するための変換器を備えたことを特徴とする繰り返し算術演算装置。
【請求項5】 請求項1記載の繰り返し算術演算装置において、前記第2の手段は、2つの入力ポートを有し、該2つの入力ポートにそれぞれ供給されたSD数に算術演算を施すことによりSD数で表現された演算結果を得て、該演算結果としてのSD数を前記第1の手段の2つの入力ポートのうちの一方の入力ポートに供給するための演算器と、各々小数点より1桁上位の非ゼロ値桁を含む複数桁を有する2進数の供給を受け、該供給された2進数をSD数に変換し、かつ該変換により得られたSD数を前記演算器の2つの入力ポートにそれぞれ供給するための2つの変換器とを備えたことを特徴とする繰り返し算術演算装置。
【請求項6】 請求項1記載の繰り返し算術演算装置において、前記第3の手段は、前記第1の手段により得られた演算結果に指定量の右シフト処理を施し、該右シフト処理により得られたSD数を出力するためのシフタと、前記シフタから出力されたSD数を保持し、かつ該保持したSD数を前記第1の手段の2つの入力ポートのうちの他方の入力ポートに供給するためのレジスタとを備えたことを特徴とする繰り返し算術演算装置。
【請求項7】 請求項1記載の繰り返し算術演算装置において、前記第3の手段は、2つの入力ポートを有し、該2つの入力ポートにそれぞれ供給されたSD数に算術演算を施すことによりSD数で表現された演算結果を得るための演算器と、前記第1の手段により得られた演算結果に指定量の右シフト処理を施し、該右シフト処理により得られたSD数を前記演算器の2つの入力ポートのうちの一方の入力ポートに供給するためのシフタと、小数点より1桁上位の非ゼロ値桁を含む複数桁を有する2進数の供給を受け、該供給された2進数をSD数に変換し、該変換により得られたSD数を前記演算器の2つの入力ポートのうちの他方の入力ポートに供給するための変換器と、前記演算器により得られた演算結果としてのSD数を保持し、かつ該保持したSD数を前記第1の手段の2つの入力ポートのうちの他方の入力ポートに供給するためのレジスタとを備えたことを特徴とする繰り返し算術演算装置。
【請求項8】 請求項1記載の繰り返し算術演算装置において、前記第4の手段は、前記変換により得られた2進数の小数点より2桁以上上位かつ単一の特定桁に基づいて前記第3の手段における右シフト処理のシフト量を決定する機能を備えたことを特徴とする繰り返し算術演算装置。
【請求項9】 請求項1記載の繰り返し算術演算装置において、前記第4の手段は、前記変換により得られた2進数の小数点より2桁以上上位かつ連続した複数の特定桁に基づいて前記第3の手段における右シフト処理のシフト量を決定する機能を備えたことを特徴とする繰り返し算術演算装置。
【請求項10】 小数点より上位の非ゼロ値桁を含む複数桁を有する2進数に対応したSD(Signed Digit)数をレジスタに格納するステップと、小数点より1桁上位の非ゼロ値桁を含む複数桁を有する2進数をSD数に変換するステップと、前記レジスタに格納されたSD数と前記変換により得られたSD数とに算術演算を施すことによりSD数で表現された演算結果を得るステップと、前記レジスタに格納されたSD数を2進数に変換するステップと、前記変換により得られた2進数の小数点より2桁以上上位の特定桁に基づいて決定したシフト量の右シフト処理を前記演算結果に施すステップと、前記右シフト処理により得られたSD数を前記レジスタに格納するステップとを備えたことを特徴とする繰り返し算術演算方法。
【請求項11】 第1及び第2の入力ポートを有し、該第1及び第2の入力ポートにそれぞれ冗長2進数の供給を受け、該供給された2つの冗長2進数の乗算を実行することにより冗長2進数で表現された積を得るための乗算器と、正規化された浮動小数点数Xの仮数として小数点より1桁上位の非ゼロ値桁を含む複数桁を有する2進数の供給を受け、該供給された2進数を冗長2進数に変換し、かつ該変換により得られた冗長2進数を前記第1の入力ポートに供給するための変換器と、前記乗算器により得られた積に指定量の右シフト処理を施し、該右シフト処理により得られた冗長2進数を出力するためのシフタと、前記シフタから出力された冗長2進数を保持し、かつ該保持した冗長2進数を前記第2の入力ポートに供給するための仮数レジスタと、前記仮数レジスタに保持された冗長2進数を2進数に変換し、かつ該変換により得られた2進数の小数点より2桁以上上位の特定桁に基づいて決定したシフト量を前記右シフト処理の指定量として前記シフタに供給するための逆変換器とを備えたことを特徴とする繰り返し算術演算装置。
【請求項12】 請求項11記載の繰り返し算術演算装置において、前記逆変換器は、前記変換により得られた2進数の小数点より2桁上位の桁に基づいて前記シフタにおける右シフト処理のシフト量を決定する機能を備えたことを特徴とする繰り返し算術演算装置。
【請求項13】 請求項11記載の繰り返し算術演算装置において、第3及び第4の入力ポートを有し、前記第3の入力ポートに前記正規化された浮動小数点数Xの指数としての2進数の供給を受け、前記第4の入力ポートに他の2進数の供給を受け、該第3及び第4の入力ポートに供給された2つの2進数の加算を実行することにより2進数で表現された和を求め、かつ該求められた和に前記シフタにおける右シフト処理のシフト量に応じた調整を施すことにより2進数で表現されかつ調整された指数を求めるための手段と、前記調整された指数としての2進数を保持し、かつ該保持した2進数を前記第4の入力ポートに供給するための指数レジスタとを更に備えたことを特徴とする繰り返し算術演算装置。
【請求項14】 第1及び第2の入力ポートを有し、該第1及び第2の入力ポートにそれぞれ冗長2進数の供給を受け、該供給された2つの冗長2進数の乗算を実行することにより冗長2進数で表現された積を得るための乗算器と、正規化された浮動小数点数Xの仮数として小数点より1桁上位の非ゼロ値桁を含む複数桁を有する2進数の供給を受け、該供給された2進数を冗長2進数に変換し、かつ該変換により得られた冗長2進数を前記第1の入力ポートに供給するための第1の変換器と、第3及び第4の入力ポートを有し、該第3及び第4の入力ポートにそれぞれ冗長2進数の供給を受け、該第3及び第4の入力ポートに供給された2つの冗長2進数の桁合わせ加算を実行することにより冗長2進数で表現された和を得るための桁合わせ加算器と、正規化された他の浮動小数点数Yの仮数として小数点より1桁上位の非ゼロ値桁を含む複数桁を有する2進数の供給を受け、該供給された2進数を冗長2進数に変換し、かつ該変換により得られた冗長2進数を前記第3の入力ポートに供給するための第2の変換器と、前記乗算器により得られた積に指定量の右シフト処理を施し、該右シフト処理により得られた冗長2進数を前記第4の入力ポートに供給するためのシフタと、前記桁合わせ加算器により得られた和としての冗長2進数を保持し、かつ該保持した冗長2進数を前記第2の入力ポートに供給するための仮数レジスタと、前記仮数レジスタに保持された冗長2進数を2進数に変換し、かつ該変換により得られた2進数の小数点より2桁以上上位かつ連続した複数の特定桁に基づいて決定したシフト量を前記右シフト処理の指定量として前記シフタに供給するための逆変換器とを備えたことを特徴とする繰り返し算術演算装置。
【請求項15】 請求項14記載の繰り返し算術演算装置において、前記逆変換器は、前記変換により得られた2進数の小数点より2桁上位の桁と3桁上位の桁とに基づいて前記シフタにおける右シフト処理のシフト量を決定する機能を備えたことを特徴とする繰り返し算術演算装置。
【請求項16】 請求項14記載の繰り返し算術演算装置において、第5及び第6の入力ポートを有し、前記第5の入力ポートに前記正規化された浮動小数点数Xの指数としての2進数の供給を受け、前記第6の入力ポートに他の2進数の供給を受け、該第5及び第6の入力ポートに供給された2つの2進数の加算を実行することにより2進数で表現された和を求め、かつ該求められた和に前記シフタにおける右シフト処理のシフト量に応じた調整を施すことにより2進数で表現されかつ調整された指数を求めるための第1の手段と、第7及び第8の入力ポートを有し、前記第7の入力ポートに前記第1の手段からの調整された指数としての2進数の供給を受け、前記第8の入力ポートに前記正規化された他の浮動小数点数Yの指数としての2進数の供給を受け、該第7及び第8の入力ポートに供給された2つの2進数の大小を比較し、かつ該比較の結果に応じて、前記桁合わせ加算器における桁合わせ加算の実行を制御しかつ前記第7及び第8の入力ポートに供給された2つの2進数のうちの小さくない方の2進数を選択出力するための第2の手段と、前記第2の手段から選択出力された2進数を保持し、かつ該保持した2進数を前記第6の入力ポートに供給するための指数レジスタとを更に備えたことを特徴とする繰り返し算術演算装置。
【請求項17】 請求項16記載の繰り返し算術演算装置において、前記第2の手段は、前記第7及び第8の入力ポートに供給された2つの2進数の大小を比較し、前記第7の入力ポートに供給された2進数に比べて前記第8の入力ポートに供給された2進数が大きくない場合にはスワップ情報を0に設定して出力し、そうでない場合にはスワップ情報を1に設定して出力し、かつ前記第7及び第8の入力ポートに供給された2つの2進数の差の絶対値をシフト情報として出力するための比較器と、前記比較器からのスワップ情報が0である場合には前記第7の入力ポートに供給された2進数を選択出力し、前記比較器からのスワップ情報が1である場合には前記第8の入力ポートに供給された2進数を選択出力するためのセレクタとを備えたことを特徴とする繰り返し算術演算装置。
【請求項18】 請求項17記載の繰り返し算術演算装置において、前記桁合わせ加算器は、第1及び第2の出力ポートを有し、前記比較器からのスワップ情報が0である場合には前記第3の入力ポートに供給された冗長2進数を前記第1の出力ポートから、前記第4の入力ポートに供給された冗長2進数を前記第2の出力ポートから各々出力し、前記比較器からのスワップ情報が1である場合には前記第3の入力ポートに供給された冗長2進数を前記第2の出力ポートから、前記第4の入力ポートに供給された冗長2進数を前記第1の出力ポートから各々出力するためのスワッパと、前記スワッパの第1の出力ポートから出力された冗長2進数に前記比較器からのシフト情報で指定された量の右シフト処理を施し、該右シフト処理により得られた冗長2進数を出力するための桁合わせシフタと、前記スワッパの第2の出力ポートから出力された冗長2進数と前記桁合わせシフタから出力された冗長2進数との加算を実行することにより冗長2進数で表現された和を得るための加算器とを備えたことを特徴とする繰り返し算術演算装置。
【請求項19】 第1及び第2の入力ポートを有し、該第1及び第2の入力ポートにそれぞれ冗長2進数の供給を受け、該供給された2つの冗長2進数の乗算を実行することにより冗長2進数で表現された積を得るための乗算器と、正規化された浮動小数点数Xの仮数として小数点より1桁上位の非ゼロ値桁を含む複数桁を有する2進数の供給を受け、該供給された2進数を冗長2進数に変換し、かつ該変換により得られた冗長2進数を前記第1の入力ポートに供給するための第1の変換器と、正規化された他の浮動小数点数Yの仮数として小数点より1桁上位の非ゼロ値桁を含む複数桁を有する2進数の供給を受け、該供給された2進数を冗長2進数に変換し、かつ該変換により得られた冗長2進数を前記第2の入力ポートに供給するための第2の変換器と、第3及び第4の入力ポートを有し、前記第3の入力ポートに前記乗算器により得られた積としての冗長2進数の供給を受け、前記第4の入力ポートに他の冗長2進数の供給を受け、該第3及び第4の入力ポートに供給された2つの冗長2進数の桁合わせ加算を実行することにより冗長2進数で表現された和を得るための桁合わせ加算器と、前記桁合わせ加算器により得られた和に指定量の右シフト処理を施し、該右シフト処理により得られた冗長2進数を出力するためのシフタと、前記シフタから出力された冗長2進数を保持し、かつ該保持した冗長2進数を前記第4の入力ポートに供給するための仮数レジスタと、前記仮数レジスタに保持された冗長2進数を2進数に変換し、かつ該変換により得られた2進数の小数点より3桁以上上位の特定桁に基づいて決定したシフト量を前記右シフト処理の指定量として前記シフタに供給するための逆変換器とを備えたことを特徴とする繰り返し算術演算装置。
【請求項20】 請求項19記載の繰り返し算術演算装置において、前記逆変換器は、前記変換により得られた2進数の小数点より3桁上位の桁に基づいて前記シフタにおける右シフト処理のシフト量を決定する機能を備えたことを特徴とする繰り返し算術演算装置。
【請求項21】 請求項19記載の繰り返し算術演算装置において、第5及び第6の入力ポートを有し、前記第5の入力ポートに前記正規化された浮動小数点数Xの指数としての2進数の供給を受け、前記第6の入力ポートに前記正規化された他の浮動小数点数Yの指数としての2進数の供給を受け、該第5及び第6の入力ポートに供給された2つの2進数の加算を実行することにより2進数で表現された和を得るための加算器と、供給された2進数に前記シフタにおける右シフト処理のシフト量に応じた調整を施すことにより2進数で表現されかつ調整された指数を求めるための第1の手段と、第7及び第8の入力ポートを有し、前記第7の入力ポートに前記第1の手段からの調整された指数としての2進数の供給を受け、前記第8の入力ポートに前記加算器により得られた和としての2進数の供給を受け、該第7及び第8の入力ポートに供給された2つの2進数の大小を比較し、かつ該比較の結果に応じて、前記桁合わせ加算器における桁合わせ加算の実行を制御しかつ前記第7及び第8の入力ポートに供給された2つの2進数のうちの小さくない方の2進数を選択出力するための第2の手段と、前記第2の手段から選択出力された2進数を保持し、かつ該保持した2進数を前記第1の手段に供給するための指数レジスタとを更に備えたことを特徴とする繰り返し算術演算装置。
【請求項22】 請求項21記載の繰り返し算術演算装置において、前記第2の手段は、前記第7及び第8の入力ポートに供給された2つの2進数の大小を比較し、前記第7の入力ポートに供給された2進数に比べて前記第8の入力ポートに供給された2進数が大きくない場合にはスワップ情報を0に設定して出力し、そうでない場合にはスワップ情報を1に設定して出力し、かつ前記第7及び第8の入力ポートに供給された2つの2進数の差の絶対値をシフト情報として出力するための比較器と、前記比較器からのスワップ情報が0である場合には前記第7の入力ポートに供給された2進数を選択出力し、前記比較器からのスワップ情報が1である場合には前記第8の入力ポートに供給された2進数を選択出力するためのセレクタとを備えたことを特徴とする繰り返し算術演算装置。
【請求項23】 請求項22記載の繰り返し算術演算装置において、前記桁合わせ加算器は、第1及び第2の出力ポートを有し、前記比較器からのスワップ情報が0である場合には前記第3の入力ポートに供給された冗長2進数を前記第1の出力ポートから、前記第4の入力ポートに供給された冗長2進数を前記第2の出力ポートから各々出力し、前記比較器からのスワップ情報が1である場合には前記第3の入力ポートに供給された冗長2進数を前記第2の出力ポートから、前記第4の入力ポートに供給された冗長2進数を前記第1の出力ポートから各々出力するためのスワッパと、前記スワッパの第1の出力ポートから出力された冗長2進数に前記比較器からのシフト情報で指定された量の右シフト処理を施し、該右シフト処理により得られた冗長2進数を出力するための桁合わせシフタと、前記スワッパの第2の出力ポートから出力された冗長2進数と前記桁合わせシフタから出力された冗長2進数との加算を実行することにより冗長2進数で表現された和を得るための加算器とを備えたことを特徴とする繰り返し算術演算装置。
【請求項24】 請求項22記載の繰り返し算術演算装置において、前記逆変換器と前記シフタとの間に介在し、前記比較器からのスワップ情報が0である場合には前記逆変換器により決定されたシフト量を、前記比較器からのスワップ情報が1である場合には0をそれぞれ前記右シフト処理の指定量として前記シフタに供給するためのシフト量セレクタを更に備えたことを特徴とする繰り返し算術演算装置。
【請求項25】 第1及び第2の入力ポートを有し、該第1及び第2の入力ポートにそれぞれ冗長2進数の供給を受け、該供給された2つの冗長2進数の桁合わせ加算を実行することにより冗長2進数で表現された和を得るための桁合わせ加算器と、正規化された浮動小数点数Xの仮数として小数点より1桁上位の非ゼロ値桁を含む複数桁を有する2進数の供給を受け、該供給された2進数を冗長2進数に変換し、かつ該変換により得られた冗長2進数を前記第1の入力ポートに供給するための変換器と、前記桁合わせ加算器により得られた和に指定量の右シフト処理を施し、該右シフト処理により得られた冗長2進数を出力するためのシフタと、前記シフタから出力された冗長2進数を保持し、かつ該保持した冗長2進数を前記第2の入力ポートに供給するための仮数レジスタと、前記仮数レジスタに保持された冗長2進数を2進数に変換し、かつ該変換により得られた2進数の小数点より2桁以上上位の特定桁に基づいて決定したシフト量を前記右シフト処理の指定量として前記シフタに供給するための逆変換器とを備えたことを特徴とする繰り返し算術演算装置。
【請求項26】 請求項25記載の繰り返し算術演算装置において、前記逆変換器は、前記変換により得られた2進数の小数点より2桁上位の桁に基づいて前記シフタにおける右シフト処理のシフト量を決定する機能を備えたことを特徴とする繰り返し算術演算装置。
【請求項27】 請求項25記載の繰り返し算術演算装置において、供給された2進数に前記シフタにおける右シフト処理のシフト量に応じた調整を施すことにより2進数で表現されかつ調整された指数を求めるための第1の手段と、第3及び第4の入力ポートを有し、前記第3の入力ポートに前記第1の手段からの調整された指数としての2進数の供給を受け、前記第4の入力ポートに前記正規化された浮動小数点数Xの指数としての2進数の供給を受け、該第3及び第4の入力ポートに供給された2つの2進数の大小を比較し、かつ該比較の結果に応じて、前記桁合わせ加算器における桁合わせ加算の実行を制御しかつ前記第3及び第4の入力ポートに供給された2つの2進数のうちの小さくない方の2進数を選択出力するための第2の手段と、前記第2の手段から選択出力された2進数を保持し、かつ該保持した2進数を前記第1の手段に供給するための指数レジスタとを更に備えたことを特徴とする繰り返し算術演算装置。
【請求項28】 請求項27記載の繰り返し算術演算装置において、前記第2の手段は、前記第3及び第4の入力ポートに供給された2つの2進数の大小を比較し、前記第3の入力ポートに供給された2進数に比べて前記第4の入力ポートに供給された2進数が大きくない場合にはスワップ情報を0に設定して出力し、そうでない場合にはスワップ情報を1に設定して出力し、かつ前記第3及び第4の入力ポートに供給された2つの2進数の差の絶対値をシフト情報として出力するための比較器と、前記比較器からのスワップ情報が0である場合には前記第3の入力ポートに供給された2進数を選択出力し、前記比較器からのスワップ情報が1である場合には前記第4の入力ポートに供給された2進数を選択出力するためのセレクタとを備えたことを特徴とする繰り返し算術演算装置。
【請求項29】 請求項28記載の繰り返し算術演算装置において、前記桁合わせ加算器は、第1及び第2の出力ポートを有し、前記比較器からのスワップ情報が0である場合には前記第1の入力ポートに供給された冗長2進数を前記第1の出力ポートから、前記第2の入力ポートに供給された冗長2進数を前記第2の出力ポートから各々出力し、前記比較器からのスワップ情報が1である場合には前記第1の入力ポートに供給された冗長2進数を前記第2の出力ポートから、前記第2の入力ポートに供給された冗長2進数を前記第1の出力ポートから各々出力するためのスワッパと、前記スワッパの第1の出力ポートから出力された冗長2進数に前記比較器からのシフト情報で指定された量の右シフト処理を施し、該右シフト処理により得られた冗長2進数を出力するための桁合わせシフタと、前記スワッパの第2の出力ポートから出力された冗長2進数と前記桁合わせシフタから出力された冗長2進数との加算を実行することにより冗長2進数で表現された和を得るための加算器とを備えたことを特徴とする繰り返し算術演算装置。
【請求項30】 請求項28記載の繰り返し算術演算装置において、前記逆変換器と前記シフタとの間に介在し、前記比較器からのスワップ情報が0である場合には前記逆変換器により決定されたシフト量を、前記比較器からのスワップ情報が1である場合には0をそれぞれ前記右シフト処理の指定量として前記シフタに供給するためのシフト量セレクタを更に備えたことを特徴とする繰り返し算術演算装置。
発明の詳細な説明
【0001】
【産業上の利用分野】本発明は、繰り返し算術演算装置に関するものであり、特に正規化された浮動小数点数の繰り返し算術演算を小さいハードウェアで高速実行するための装置に関するものである。
【0002】
【従来の技術】特開平1−195574やその対応米国特許4,985,861には、2進数をSD(Signed Digit)数に変換するための第1の変換器と、2つのSD数の乗算を実行することによりSD数で表現された積を得るためのSD乗算器と、SD数で表現された積を保持するためのレジスタと、SD数を2進数に変換するための第2の変換器とを備えた繰り返し乗算装置が開示されている。SD乗算器は2つの入力ポートを有し、一方の入力ポートには第1の変換器からのSD数が、他方の入力ポートにはレジスタからのSD数がそれぞれ供給される。この乗算装置は、SD数で表現された積を2進数に変換することなくSD乗算器にフィードバックすることにより、繰り返し乗算の高速実行を実現したものである。
【0003】上記特開平1−195574及び米国特許4,985,861には、1つのシフタを更に備えた繰り返し乗算装置も開示されている。ただし、該シフタは、フィードバックループの外において、レジスタと第2の変換器との間に配置されていた。
【0004】
【発明が解決しようとする課題】IEEE754規格では、1ビットの符号Sと、8ビットの指数Eと、23ビットの小数部Fとの合計32ビットの単精度浮動小数点2進数の表現形式が規定されている。指数Eと小数部Fとは、小数部Fの最上位ビットより更に上位に仮想的な非ゼロ値ビット(暗黙の1)と小数点とが位置するように調整される。この調整を正規化という。また、指数Eが正数となるように実際の指数にバイアスとして127を加えた数を指数Eとする。すなわち、単精度の正規化浮動小数点数として表現される実数RNは、 RN=(−1)S E-127 (1.F) (1)
となる。なお、式(1)中の1.Fを仮数Mという。仮数Mは、小数点より1桁上位の非ゼロ値桁を含む24桁を有する2進数であり、その大きさは1≦M<2である。
【0005】正規化された浮動小数点数の仮数Mを入力データとする繰り返し乗算を従来の上記後者の乗算装置で実行する場合には、SD乗算器における全ての乗算が完了した後、レジスタから取り出した演算結果に正規化のための右シフト処理を施すこととなる。この際、SD乗算器で最初に得られる積U1 は、1≦U1 <22 の範囲にあり、2進数に変換した場合に小数点より2桁上位に非ゼロ値桁を有する可能性がある。この積U1 はレジスタに格納される。SD乗算器で次に得られる積U2 は、1≦U2 <23 の範囲にあり、2進数に変換した場合に小数点より3桁上位に非ゼロ値桁を有する可能性がある。この積U2 は、先の積U1 に代えてレジスタに格納される。このように、SD乗算器の一方の入力データと、レジスタの入力データとは、2進数に変換した場合の最上位の非ゼロ値桁の位置が乗算の繰り返し回数に依存して次第に左へ移動していく。つまり、SD乗算器及びレジスタが扱うべきデータの桁数が増加する。したがって、繰り返し回数の最大値を予め見積ってSD乗算器及びレジスタの回路規模を決定しなければならず、繰り返し回数が大きい場合にはその回路規模が大きくなる問題があった。
【0006】本発明の目的は、正規化された浮動小数点数の繰り返し乗算等の繰り返し算術演算を小さいハードウェアで高速実行できるようにすることにある。
【0007】
【課題を解決するための手段】上記目的を達成するため、本発明は、SD演算器とレジスタとの間に右シフト処理のためのシフタを挿入し、繰り返しの各段階(ステージ)における中間結果を示すSD数から2進数への変換の結果に応じてシフト量を決定し、中間結果を示すSD数に逐次右シフト処理を施すこととしたものである。
【0008】
【作用】本発明によれば、繰り返し算術演算の中間結果の小数点より上位における最上位の非ゼロ値桁の位置は、SD数ではなく中間結果を示す2進数を用いることにより、正しくかつ容易に判定される。
【0009】繰り返し乗算を例にとって説明すると、中間結果を示す2進数の小数点より2桁上位の桁に基づき、上記シフタにおいて右1桁シフトを実行すべきか否かが決定される。繰り返し乗算のあるステージにおいて、SD数で表現された中間結果Vk-1 (1≦Vk-1 <22 )がレジスタに格納されているものとする。この中間結果Vk-1 は、1つ前のステージにおいて求められたものであって、2進数に変換した場合に小数点より2桁上位に非ゼロ値桁を有する可能性がある。SD乗算器は、該中間結果Vk-1 を用いて次の演算結果Uk を求める算術演算を実行する。これと並行して、中間結果Vk-1 が2進数に変換され、該変換で得られた2進数の小数点より2桁上位の桁に基づき、右1桁シフトを実行すべきか否かが決定される。そして、SD乗算器により得られた演算結果Uk に所要の右シフト処理が施され、該右シフト処理の結果である新たな中間結果Vk がレジスタに格納される。この新たな中間結果Vk は、1≦Vk <22 の範囲にあり、2進数に変換した場合の考え得る最上位の非ゼロ値桁の位置は先の中間結果Vk-1 と同じである。つまり、本発明によれば、SD乗算器及びレジスタが扱うべきデータの桁数は演算の繰り返し回数に依存せず一定である。
【0010】
【実施例】以下、本発明の実施例に係る4つの繰り返し算術演算装置について、図面を参照しながら説明する。なお、基数2のSD数である冗長2進数すなわちRB(Redundant Binary)数を用いる場合について説明するが、他の基数のSD数を採用することも可能である。
【0011】(実施例1)図1及び図2は、本発明の第1の実施例に係る正規化された浮動小数点数のための繰り返し算術演算装置の構成を示す図である。図1は仮数処理部を、図2は指数処理部を各々示している。
【0012】本実施例の装置は、 P=X0 ×X1 ×X2 ×…×Xm (2)
で示されるm回の繰り返し乗算を実行するものである。ここに、入力データXk(k=0,…,m)及び演算結果Pは、正規化された浮動小数点数である。XMk及びXEk(k=0,…,m)は、Xk の仮数及び指数をそれぞれ表わす2進数である。PM 及びPE は、Pの仮数及び指数をそれぞれ表わす2進数である。入力データの仮数XMk(k=0,…,m)は、1≦XMk<2を満たしている。また、出力データの仮数PM は、1≦PM <2を満たすように調整される。
【0013】図1の仮数処理部は、外部から供給された2進数XM0を冗長2進数に変換するための第1の変換器(以下、第1のB−RB変換器という。)10と、セレクタ11と、外部から供給された2進数XMk(k=1,…,m)を順次冗長2進数に変換するための第2の変換器(以下、第2のB−RB変換器という。)12と、2つの冗長2進数の乗算を実行することにより冗長2進数で表現された積を得るための乗算器(以下、RB乗算器という。)13と、RB乗算器13の出力Ukに右1桁シフト処理を施すためのシフタ14と、冗長2進数で表現されたシフタ14の出力Vk を保持するためのレジスタ15と、冗長2進数を2進数に変換するための逆変換器(以下、RB−B変換器という。)16とを備えたものである。レジスタ15の保持データは、セレクタ11の一方の入力ポートと、RB−B変換器16とに供給される。セレクタ11は、第1のB−RB変換器10から供給された冗長2進数とレジスタ15から供給された冗長2進数とのいずれかをRB乗算器13の一方の入力ポートに供給する。第2のB−RB変換器12は、RB乗算器13の他方の入力ポートに冗長2進数を供給する。RB−B変換器16は、レジスタ15から供給された冗長2進数を2進数に変換するだけでなく、該変換により得られた2進数の小数点より2桁上位の桁に基づいてシフト量信号S1 を出力する機能を備えている。該特定の桁が0ならばS1 =0、該特定の桁が1ならばS1 =1とされる。シフト量信号S1 は、シフタ14と図2の指数処理部とに供給される。シフタ14は、S1 =0ならばUk をそのままVk として出力し、S1 =1ならばUk に右1桁シフト処理を施した結果をVk として出力する。RB−B変換器16は、仮数の最終結果に正規化のための右シフト処理を施すことによりPM を求める機能をも持っており、この処理の際にもシフト量信号S1 を出力するものである。
【0014】図2の指数処理部は、第1のセレクタ20と、第1の2入力加算器21と、3入力加算器22と、第2のセレクタ23と、レジスタ24と、第2の2入力加算器25とを備えたものである。第1のセレクタ20は、外部から供給された2進数XE0とレジスタ24から供給された2進数とのいずれかを第1の2入力加算器21及び3入力加算器22に供給する。外部から供給された2進数XEk(k=1,…,m)は、第1の2入力加算器21及び3入力加算器22に順次供給される。第1の2入力加算器21は、2つの2進数の加算を実行する。3入力加算器22は、第1の2入力加算器21と同じ2つの2進数と1との加算を実行する。第2のセレクタ23は、RB−B変換器16からのシフト量信号S1 に従って、第1の2入力加算器21の出力と3入力加算器22の出力とのいずれかをレジスタ24に供給する。この際、S1 =0ならば第1の2入力加算器21の出力が、S1 =1ならば3入力加算器22の出力がそれぞれ選択される。第2の2入力加算器25は、仮数の最終結果の正規化処理の際にRB−B変換器16から出力されるシフト量信号S1 とレジスタ24の出力との加算を実行することにより、PEを求めるものである。
【0015】まず、図1の仮数処理部の動作を説明する。図3は、仮数処理部の動作を示すタイミングチャート図である。
【0016】第1ステージでは、第1のB−RB変換器10からXM0の冗長2進数変換結果が、第2のB−RB変換器12からXM1の冗長2進数変換結果が各々RB乗算器13に供給され、U1 =XM0×XM1の乗算が実行される。ここに、1≦U1 <22 である。レジスタ15の保持データは予め0にリセットされるので、第1ステージでレジスタ15からRB−B変換器16に供給されるデータは0であり、必ずS1 =0となる。したがって、V1 =U1 である。V1 は、レジスタ15に格納される。ここで、1≦V1 <22 であることに注意する。
【0017】第2ステージでは、レジスタ15からV1 が、第2のB−RB変換器12からXM2の冗長2進数変換結果が各々RB乗算器13に供給され、U2 =V1 ×XM2の乗算が実行される。ここで、1≦U2 <23 である。詳しくは、1≦V1 <2ならば1≦U2 <22 であり、2≦V1 <22 ならば2≦U2 <23 である。一方、RB−B変換器16は、レジスタ15の保持データV1 を2進数に変換し、該変換により得られた2進数の小数点より2桁上位の桁に基づくシフト量信号S1 をシフタ14に供給する。この際、1≦V1 <2ならば、S1 =0となり、シフタ14においてU2 に右シフト処理は施されず、V2 =U2 となる。この場合、1≦U2 <22 であるから、1≦V2 <22 である。また、2≦V1 <22 ならば、S1 =1となり、シフタ14においてU2 に右1桁シフト処理が施され、該処理の結果がV2 となる。この場合、2≦U2 <23 であるから、1≦V2 <22 である。つまり、いずれにしても1≦V2 <22 を満たすV2 がレジスタ15に格納される。
【0018】第3ステージでは、U3 =V2 ×XM3の乗算とV2 の2進数への変換とが並行して実行され、U3 からシフタ14を介して得られたV3 がレジスタ15に格納される。ここに、1≦U3 <23 かつ1≦V3 <22 である。以下同様にして第mステージまで進む。
【0019】第mステージでは、Um =Vm-1 ×XMmの乗算とVm-1 の2進数への変換とが並行して実行され、Um からシフタ14を介して得られたVm がレジスタ15に格納される。ここに、1≦Um <23 かつ1≦Vm <22 である。
【0020】第m+1ステージでは、RB−B変換器16において、Vm の2進数への変換が実行される。更に、RB−B変換器16は、1≦Vm <2ならばVm の変換結果をそのままPM として出力し、かつS1 =0とする。また、2≦Vm <22 ならばVm の変換結果に右1桁シフト処理を施し、該処理の結果をPM として出力し、かつS1 =1とする。この結果、1≦PM <2となる。
【0021】以上のとおり、図1の仮数処理部によれば、第kステージ(k=1,…,m)において、1≦Uk <23 かつ1≦Vk <22 である。したがって、RB乗算器13及びレジスタ15が扱うべきデータの桁数は演算の繰り返し回数mに依存せず一定である。つまり、演算の繰り返し回数mが大きい場合でも、小さいハードウェアで式(2)の繰り返し乗算の仮数処理を高速実行できる。
【0022】次に、図2の指数処理部の動作を説明する。
【0023】第1ステージでは、第1のセレクタ20がXE0を選択する。第1の2入力加算器21はXE0+XE1の加算を、3入力加算器22はXE0+XE1+1の加算をそれぞれ実行する。前記のとおり第1ステージではS1 =0なので、第2のセレクタ23は第1の2入力加算器21の出力を選択する。この結果、レジスタ24にXE0+XE1が格納される。
【0024】第2ステージでは、第1のセレクタ20がレジスタ24の出力を選択する。第1の2入力加算器21は(XE0+XE1)+XE2の加算を、3入力加算器22は(XE0+XE1)+XE2+1の加算をそれぞれ実行する。第2のセレクタ23は、S1 =0の場合には第1の2入力加算器21の出力を、S1 =1の場合には3入力加算器22の出力を各々選択する。この結果、仮数の右1桁シフト処理が実行されなかった場合にはXE0+XE1+XE2が、仮数の右1桁シフト処理が実行された場合にはXE0+XE1+XE2+1が各々レジスタ24に格納される。つまり、仮数シフト処理の有無に応じて、指数の加算結果に補正が施される。以下同様にして第m+1ステージまで進む。
【0025】第m+1ステージでは、第2の2入力加算器25がPE を出力する。この際、第2の2入力加算器25は、レジスタ24の出力とRB−B変換器16からのシフト量信号S1 (=0又は1)との加算を実行し、該加算の結果をPE として出力する。
【0026】以上のとおり、図2の指数処理部によれば、仮数処理部におけるステージ毎のシフト処理の有無に応じて指数の加算結果に逐次補正が施される。しかも、第1〜第mステージでは、シフト量信号S1 の供給を待たずして2つの加算器21,22の動作を開始することができる。
【0027】なお、図1の仮数処理部において、RB−B変換器16が変換により得られた2進数の小数点よりn(n≧3)桁上位の桁に基づいてシフト量信号S1 を生成するようにしてもよい。この場合の動作タイミングを図4に示す。第1ステージから第n−1ステージまではS1 =0であり、第nステージから後はS1 =0又は1となる。この場合には、第kステージ(k=1,…,m)において、1≦Uk <2n+1 かつ1≦Vk <2n である。したがって、RB乗算器13及びレジスタ15が扱うべきデータの桁数は、nに依存して大きくなるが、演算の繰り返し回数mには依存しない。つまり、演算の繰り返し回数mが大きい場合でも、小さいハードウェアで式(2)の繰り返し乗算の仮数処理を高速実行できる。ただし、第m+1ステージにおける正規化のための右シフト処理のシフト量は、nが大きくなるにつれて増大する。つまり、第m+1ステージではS1 ≧2となり得る。なお、図3の動作はn=2の場合を示している。
【0028】さて、上記の各例におけるRB−B変換器16は、各ステージ毎にレジスタ15の保持データを2進数に変換し、該変換により得られた2進数の小数点より2桁以上上位の特定の1桁に基づくシフト量信号S1 をシフタ14に供給するものであった。ところが、例えば、RB−B変換器16が2ステージに1回の割合でレジスタ15の保持データを2進数に変換し、該変換により得られた2進数の小数点より2桁上位の桁及び3桁上位の桁に基づくシフト量信号S1 (S1 =0,1又は2)をシフタ14に供給するようにしてもよい。この場合には、RB−B変換器16の稼働頻度が低下するので、消費電力の低減を図ることができる。ただし、ハードウェアの回路規模は、上記の各例に比べて増大する。
【0029】次に、図2に示す指数処理部の構成の変形例について説明する。図5及び図6は、それぞれ1変形例を示すブロック図である。
【0030】図5の構成は、S1 =0又は1であるn=2の場合に限り採用可能なものであって、図2の構成中の第2の2入力加算器25を削除し、かつ第3のセレクタ26を追加することにより、回路規模を減縮したものである。図2中の第2の2入力加算器25の機能は、第1の2入力加算器21、3入力加算器22及び第2のセレクタ23によって達成される。第3のセレクタ26は、第m+1ステージでは0を選択する。
【0031】図6の構成は、図5中の第1の2入力加算器21、3入力加算器22及び第2のセレクタ23を1つの3入力加算器27に置換することにより、回路規模を減縮したものである。3入力加算器27には、第1のセレクタ20の出力と第3のセレクタ26の出力とシフト量信号S1 とが供給される。
【0032】(実施例2)図7及び図8は、本発明の第2の実施例に係る正規化された浮動小数点数のための繰り返し算術演算装置の構成を示す図である。図7は仮数処理部を、図8は指数処理部を各々示している。
【0033】本実施例の装置は、 Q=(…((X0 ×X1 +Y1 )×X2 +Y2 )×…)×Xm +Ym (3)
で示されるm回の繰り返し算術演算を実行するものである。ここに、入力データXk (k=0,…,m),Yk (k=1,…,m)及び演算結果Qは、正規化された浮動小数点数である。XMk及びXEk(k=0,…,m)は、Xk の仮数及び指数をそれぞれ表わす2進数である。YMk及びYEk(k=1,…,m)は、Ykの仮数及び指数をそれぞれ表わす2進数である。QM 及びQE は、Qの仮数及び指数をそれぞれ表わす2進数である。入力データの仮数XMk(k=0,…,m)及びYMk(k=1,…,m)は、1≦XMk<2及び1≦YMk<2を満たしている。また、出力データの仮数QM は、1≦QM <2を満たすように調整される。
【0034】図7の仮数処理部は、外部から供給された2進数XM0を冗長2進数に変換するための第1のB−RB変換器30と、セレクタ31と、外部から供給された2進数XMk(k=1,…,m)を順次冗長2進数に変換するための第2のB−RB変換器32と、RB乗算器33と、該RB乗算器33の出力Uk に右シフト処理を施すための第1のシフタ34と、外部から供給された2進数YMk(k=1,…,m)を順次冗長2進数に変換するための第3のB−RB変換器35と、第1のシフタ34から供給された冗長2進数Vk と第3のB−RB変換器35から供給された冗長2進数とのスワッピングのためのスワッパ36と、該スワッパ36の出力に右シフト処理を施すための第2のシフタ37と、2つの冗長2進数の加算を実行することにより冗長2進数で表現された和を得るための加算器(以下、RB加算器という。)38と、該RB加算器38から出力された冗長2進数Wk を保持するためのレジスタ39と、RB−B変換器40とを備えたものである。
【0035】レジスタ39の保持データは、セレクタ31の一方の入力ポートと、RB−B変換器40とに供給される。セレクタ31は、第1のB−RB変換器30から供給された冗長2進数とレジスタ39から供給された冗長2進数とのいずれかをRB乗算器33の一方の入力ポートに供給する。第2のB−RB変換器32は、RB乗算器33の他方の入力ポートに冗長2進数を供給する。第1のシフタ34の出力データVk は、スワッパ36の一方の入力ポートに供給される。第3のB−RB変換器35は、スワッパ36の他方の入力ポートに冗長2進数を供給する。スワッパ36は、図8の指数処理部から供給されるスワップ情報としての符号信号SGNが0ならば、第1のシフタ34から供給された冗長2進数Vk を一方の出力ポートDからRB加算器38の一方の入力ポートに供給し、かつ第3のB−RB変換器35から供給された冗長2進数を他方の出力ポートdから第2のシフタ37に供給する。また、スワッパ36は、符号信号SGNが1ならば、第1のシフタ34から供給された冗長2進数Vk を後者の出力ポートdから第2のシフタ37に供給し、かつ第3のB−RB変換器35から供給された冗長2進数を前者の出力ポートDからRB加算器38の一方の入力ポートに供給する。第2のシフタ37は、図8の指数処理部から供給されるシフト量情報としての絶対値信号ABSで指定された量の右シフト処理を入力冗長2進数に施し、該シフト処理の結果をRB加算器38の他方の入力ポートに供給する。
【0036】RB−B変換器40は、レジスタ39から供給された冗長2進数を2進数に変換するだけでなく、該変換により得られた2進数の小数点より2桁上位及び3桁上位の2つの桁に基づいてシフト量信号S2 を出力する機能を備えている。該特定の2桁が00ならばS2 =0、該特定の2桁が01ならばS2 =1、小数点より3桁上位の桁が1ならばS2 =2とされる。シフト量信号S2 は、第1のシフタ34と図8の指数処理部とに供給される。第1のシフタ34は、シフト量信号S2 で指定された量の右シフト処理をRB乗算器33の出力Uk に施し、該シフト処理の結果Vk をスワッパ36に供給する。RB−B変換器40は、仮数の最終結果に正規化のための右シフト処理を施すことによりQM を求める機能をも持っており、この処理の際にもシフト量信号S2 を出力するものである。
【0037】図8の指数処理部は、第1のセレクタ50と、第2のセレクタ51と、3入力加算器52と、第3のセレクタ53と、比較器54と、第4のセレクタ55と、レジスタ56とを備えたものである。第1のセレクタ50は、外部から供給された2進数XE0とレジスタ56から供給された2進数とのいずれかを3入力加算器52に供給する。第2のセレクタ51は、外部から供給された2進数XEk(k=1,…,m)と0とのいずれかを3入力加算器52に供給する。3入力加算器52は、第1のセレクタ50から供給された2進数と、第2のセレクタ51から供給された2進数と、仮数処理部から供給されたシフト量信号S2 (S2 =0,1又は2)との加算を実行し、該加算の結果を比較器54の一方の入力ポートと第4のセレクタ55の一方の入力ポートとに供給する。第3のセレクタ53は、外部から供給された2進数YEk(k=1,…,m)と0とのいずれかを比較器54の他方の入力ポートと第4のセレクタ55の他方の入力ポートとに供給する。比較器54は、加算器52から供給された2進数Aと第3のセレクタ53から供給された2進数Bとを比較し、A≧BならばSGN=0とし、A<BならばSGN=1とする。このようにして生成された符号信号SGNは、仮数処理部と第4のセレクタ55とに供給される。また、比較器54は、|A−B|を絶対値信号ABSとして仮数処理部に供給する。第4のセレクタ55は、比較器54からの符号信号SGNに従って、3入力加算器52の出力と第3のセレクタ53の出力とのいずれかをレジスタ56に供給する。この際、SGN=0ならば3入力加算器52の出力が、SGN=1ならば第3のセレクタ53の出力がそれぞれ選択される。指数出力データQE は、レジスタ56から出力される。
【0038】図7の仮数処理部及び図8の指数処理部の動作を並行して説明する。
【0039】第1ステージでは、仮数処理部において、第1のB−RB変換器30からXM0の冗長2進数変換結果が、第2のB−RB変換器32からXM1の冗長2進数変換結果が各々RB乗算器33に供給され、U1 =XM0×XM1の乗算が実行される。ここに、1≦U1 <22 である。レジスタ39の保持データは予め0にリセットされるので、第1ステージでレジスタ39からRB−B変換器40に供給されるデータは0であり、必ずS2 =0となる。したがって、V1 =U1 である。V1は、スワッパ36の一方の入力ポートに供給される。ここで、1≦V1 <22 であることに注意する。スワッパ36の他方の入力ポートには第3のB−RB変換器35からYM1の冗長2進数変換結果が供給される。一方、指数処理部では、第1のセレクタ50がXE0を、第2のセレクタ51がXE1を、第3のセレクタ53がYE1をそれぞれ選択する。S2 =0であるから、3入力加算器52はXE0+XE1を出力する。比較器54は、V1 (=XM0×XM1)とYM1との桁合わせ加算に際して採用すべき指数を決定するために、XE0+XE1とYE1との大小を比較し、XE0+XE1≧YE1ならばSGN=0とし、XE0+XE1<YE1ならばSGN=1とする。また、比較器54は、|XE0+XE1−YE1|を絶対値信号ABSとして仮数処理部に供給する。第4のセレクタ55は、XE0+XE1とYE1とのうちの小さくない方がレジスタ56に格納されるように、比較器54からの符号信号SGNに従って2つの入力のうちの一方を選択する。仮数処理部のスワッパ36は、SGN=0ならば、V1 をRB加算器38に、YM1を第2のシフタ37にそれぞれ供給する。また、SGN=1ならば、スワッパ36は、V1 を第2のシフタ37に、YM1をRB加算器38にそれぞれ供給する。つまり、スワッパ36は、桁合わせ加算の対象となる2つの仮数のうちの小さくない方の指数に対応した仮数を出力ポートDから、他方の仮数を出力ポートdからそれぞれ出力するのである。第2のシフタ37は、仮数の桁合わせのために、スワッパ36から供給された冗長2進数に絶対値信号ABSで指定された量の右シフト処理を施し、該シフト処理の結果をRB加算器38に供給する。RB加算器38は、スワッパ36の出力ポートDから供給された冗長2進数と第2のシフタ37から供給された冗長2進数との加算を実行する。RB加算器38における加算結果W1 は、レジスタ39に格納される。ここで、1<W1 <23 であることに注意する。
【0040】第2ステージでは、仮数処理部において、レジスタ39からW1 が、第2のB−RB変換器32からXM2の冗長2進数変換結果が各々RB乗算器33に供給され、U2 =W1 ×XM2の乗算が実行される。ここで、1<U2 <24 である。詳しくは、1<W1 <2ならば1<U2 <22 であり、2≦W1 <22 ならば2≦U2 <23 であり、22 ≦W1 <23 ならば22 ≦U2 <24 である。一方、RB−B変換器40は、レジスタ39の保持データW1 を2進数に変換し、該変換により得られた2進数の小数点より2桁上位及び3桁上位の桁に基づくシフト量信号S2 を第1のシフタ34に供給する。この際、1<W1 <2ならば、S2 =0となり、第1のシフタ34においてU2 に右シフト処理は施されず、V2 =U2 となる。この場合、1<U2 <22 であるから、1<V2 <22 である。また、2≦W1 <22 ならば、S2 =1となり、第1のシフタ34においてU2 に右1桁シフト処理が施され、該処理の結果がV2 となる。この場合、2≦U2 <23 であるから、1≦V2 <22 である。また、22 ≦W1 <23 ならば、S2 =2となり、第1のシフタ34においてU2 に右2桁シフト処理が施され、該処理の結果がV2 となる。この場合、22 ≦U2 <24 であるから、1≦V2 <22である。つまり、いずれにしても1≦V2 <22 を満たすV2 がスワッパ36の一方の入力ポートに供給される。一方、指数処理部では、第1のセレクタ50がレジスタ56の出力を選択する。3入力加算器52は、該レジスタ56の出力とXE2とS2 とを加算する。この結果、仮数の右シフト処理が実行されなかった場合にはレジスタ56の出力にXE2が、仮数の右1桁シフト処理が実行された場合にはレジスタ56の出力にXE2+1が、仮数の右2桁シフト処理が実行された場合にはレジスタ56の出力にXE2+2が各々加算される。つまり、仮数シフト処理のシフト量に応じて、指数の加算結果に補正が施される。そして、3入力加算器52の出力とYE2とのうちの小さくない方がレジスタ56に格納される。仮数処理部では、スワッパ36、第2のシフタ37及びRB加算器38によりV2 とYM2との桁合わせ加算が実行され、その加算結果W2 がレジスタ39に格納される。ここで、1<W2 <23 であることに注意する。以下同様にして第mステージまで進む。
【0041】第mステージでは、Um =Wm-1 ×XMmの乗算とWm-1 の2進数への変換とが並行して実行され、Um から第1のシフタ34により得られたVm がスワッパ36に供給される。そして、Vm とYMmとの桁合わせ加算により得られたWm がレジスタ39に格納される。ここに、1<Um <24 、1≦Vm <22 かつ1<Wm <23 である。
【0042】第m+1ステージでは、仮数処理部のRB−B変換器40において、Wm の2進数への変換が実行される。更に、RB−B変換器40は、1<Wm <2ならばWm の変換結果をそのままQM として出力し、かつS2 =0とする。また、2≦Wm <22 ならばWm の変換結果に右1桁シフト処理を施し、該処理の結果をQM として出力し、かつS2 =1とする。また、22 ≦Wm <23 ならばWm の変換結果に右2桁シフト処理を施し、該処理の結果をQM として出力し、かつS2=2とする。この結果、1≦QM <2となる。一方、指数処理部では、RB−B変換器40から供給されたシフト量信号S2 に基づき、レジスタ56の保持データに補正が施され、該補正の結果がQE として出力される。この際、第1及び第3のセレクタ51,53は、いずれも0を選択する。
【0043】以上のとおり、図7の仮数処理部によれば、第kステージ(k=1,…,m)において、1≦Uk <24 、1≦Vk <22 かつ1<Wk <23 である。したがって、RB乗算器33、RB加算器38及びレジスタ39が扱うべきデータの桁数は演算の繰り返し回数mに依存せず一定である。つまり、演算の繰り返し回数mが大きい場合でも、小さいハードウェアで式(3)の繰り返し算術演算の仮数処理を高速実行できる。
【0044】なお、図7の仮数処理部において、RB−B変換器40が変換により得られた2進数の小数点よりn桁上位の桁及びn+1桁上位の桁に基づいて(n≧4)、シフト量信号S2 を生成するようにしてもよい。RB−B変換器40が2ステージに1回の割合でレジスタ39の保持データを2進数に変換し、該変換により得られた2進数の小数点より2桁ないし5桁上位の4つの桁に基づくシフト量信号S2 (S2 =0,1,2,3又は4)を第1のシフタ34に供給するようにしてもよい。また、図8の指数処理部は、図2又は図5に対応する形に変形可能である。
【0045】(実施例3)図9及び図10は、本発明の第3の実施例に係る正規化された浮動小数点数のための繰り返し算術演算装置の構成を示す図である。図9は仮数処理部を、図10は指数処理部を各々示している。
【0046】本実施例の装置は、 R=X1 ×Y1 +X2 ×Y2 +…+Xm ×Ym (4)
で示される繰り返し算術演算を実行するものである。ここに、入力データXk ,Yk (k=1,…,m)及び演算結果Rは、正規化された浮動小数点数である。XMk及びXEk(k=1,…,m)は、Xk の仮数及び指数をそれぞれ表わす2進数である。YMk及びYEk(k=1,…,m)は、Yk の仮数及び指数をそれぞれ表わす2進数である。RM 及びRE は、Rの仮数及び指数をそれぞれ表わす2進数である。入力データの仮数XMk,YMk(k=1,…,m)は、1≦XMk<2及び1≦YMk<2を満たしている。また、出力データの仮数RM は、1≦RM <2を満たすように調整される。
【0047】図9の仮数処理部は、外部から供給された2進数XMk(k=1,…,m)を順次冗長2進数に変換するための第1のB−RB変換器60と、外部から供給された2進数YMk(k=1,…,m)を順次冗長2進数に変換するための第2のB−RB変換器61と、RB乗算器62と、該RB乗算器62の出力Uk と他の冗長2進数とのスワッピングのためのスワッパ63と、該スワッパ63の一方の出力に右シフト処理を施すための第1のシフタ64と、RB加算器65と、該RB加算器65の出力Vk に右1桁シフト処理を施すための第2のシフタ66と、セレクタ67と、第2のシフタ66から出力された冗長2進数Wk を保持するためのレジスタ68と、RB−B変換器69とを備えたものである。第1のB−RB変換器60は、RB乗算器62の一方の入力ポートに冗長2進数を供給する。第2のB−RB変換器61は、RB乗算器62の他方の入力ポートに冗長2進数を供給する。RB乗算器62の出力Uk は、スワッパ63の一方の入力ポートに供給される。スワッパ63の他方の入力ポートには、レジスタ68の保持データが供給される。スワッパ63、第1のシフタ64及びRB加算器65は、図7の場合と同様に、指数処理部からの符号信号SGN及び絶対値信号ABSに従って仮数の桁合わせ加算を実行するものである。RB−B変換器69は、レジスタ68から供給された冗長2進数を2進数に変換するだけでなく、該変換により得られた2進数の小数点より3桁上位の桁に基づいてシフト量信号S3 を出力する機能を備えている。該特定の桁が0ならばS3 =0、該特定の桁が1ならばS3 =1とされる。シフト量信号3 は、セレクタ67を介して第2のシフタ66に供給される。このシフト量信号S3 は、図10の指数処理部にも供給される。セレクタ67は、SGN=0ならばシフト量信号S3 を、SGN=1ならば0を各々所要のシフト量として第2のシフタ66に供給する。第2のシフタ66は、セレクタ67から指定されたシフト量が0ならばVk をそのままWk として出力し、1ならばVk に右1桁シフト処理を施した結果をWk として出力する。SGN=1の場合にはレジスタ68の出力に第1のシフタ64によって右シフト処理が施されるから、Vk に対する過剰シフトを防止するために、第2のシフタ66では右シフト処理を行なわないようになっている。RB−B変換器69は、仮数の最終結果に正規化のための右シフト処理を施すことによりRM を求める機能をも持っており、この処理の際にもシフト量信号S3 を出力するものである。
【0048】図10の指数処理部は、第1の2入力加算器70と、第1のセレクタ71と、第2の2入力加算器72と、比較器73と、第2のセレクタ74と、レジスタ75とを備えたものである。第1の2入力加算器70は、外部から供給された2つの2進数XEk,YEk(k=1,…,m)の加算を実行するものである。第2の2入力加算器72は、レジスタ75から供給された2進数と仮数処理部から供給されたシフト量信号S3 (S3 =0又は1)との加算を実行し、該加算の結果を比較器73の一方の入力ポートと第2のセレクタ74の一方の入力ポートとに供給する。第1のセレクタ71は、第1の2入力加算器70から供給された2進数と0とのいずれかを比較器73の他方の入力ポートと第2のセレクタ74の他方の入力ポートとに供給する。比較器73は、第2の2入力加算器72から供給された2進数Aと第1のセレクタ71から供給された2進数Bとを比較し、A≧BならばSGN=0とし、A<BならばSGN=1とする。このようにして生成された符号信号SGNは、仮数処理部と第2のセレクタ74とに供給される。また、比較器73は、|A−B|を絶対値信号ABSとして仮数処理部に供給する。第2のセレクタ74は、比較器73からの符号信号SGNに従って、第2の2入力加算器72の出力と第1のセレクタ71の出力とのいずれかをレジスタ75に供給する。この際、SGN=0ならば第2の2入力加算器72の出力が、SGN=1ならば第1のセレクタ71の出力がそれぞれ選択される。指数出力データREは、レジスタ75から出力される。
【0049】図9の仮数処理部及び図10の指数処理部の動作を並行して説明する。
【0050】第1ステージでは、仮数処理部において、第1のB−RB変換器60からXM1の冗長2進数変換結果が、第2のB−RB変換器61からYM1の冗長2進数変換結果が各々RB乗算器62に供給され、U1 =XM1×YM1の乗算が実行される。ここに、1≦U1 <22 である。レジスタ68の保持データは予め0にリセットされるので、第1ステージでレジスタ68からスワッパ63の一方の入力ポート及びRB−B変換器69に供給されるデータは0であり、必ずS3 =0となる。スワッパ63の他方の入力ポートにはRB乗算器62からU1 が供給される。一方、指数処理部では、第1の2入力加算器70によりXE1+YE1の加算が実行される。第1のセレクタ71は、第1の2入力加算器70の出力XE1+YE1を選択する。レジスタ75の保持データは予め0にリセットされるので、第1ステージでレジスタ75から第2の2入力加算器72の一方の入力ポートに供給されるデータは0である。また、S3 =0であるから、第2の2入力加算器72は0を出力する。比較器73は、0とXE1+YE1との大小を比較し、SGN=1とするとともに、|XE1+YE1|を絶対値信号ABSとして仮数処理部に供給する。レジスタ75にはXE1+YE1が格納される。SGN=1であるから、仮数処理部のスワッパ63は、U1 をRB加算器65に、0を第1のシフタ64にそれぞれ供給する。この結果、RB加算器65においてV1 =U1 +0の加算が実行され、その加算結果V1 が第2のシフタ66に供給される。ここで、1≦V1 <22 であることに注意する。SGN=1であるからセレクタ67は0を選択する。したがって、W1 =V1 である。第2のシフタ66の出力W1 はレジスタ68に格納される。ここで、1≦W1 <22 である。
【0051】第2ステージでは、仮数処理部のRB乗算器62において、U2 =XM2×YM2の乗算が実行される。ここに、1≦U2 <22 である。レジスタ68からW1 が、RB乗算器62からU2 が各々スワッパ63に供給される。一方、RB−B変換器69は、レジスタ68の保持データW1 を2進数に変換し、該変換により得られた2進数の小数点より3桁上位の桁に基づくシフト量信号S3 を出力する。この場合には1≦W1 <22 であるから、S3 =0である。一方、指数処理部では、第1の2入力加算器70によりXE2+YE2の加算が実行される。第1のセレクタ71は、第1の2入力加算器70の出力XE2+YE2を選択する。第2の2入力加算器72は、レジスタ75の出力XE1+YE1とシフト量信号S3 (=0)との加算を実行し、XE1+YE1を出力する。比較器73は、XE1+YE1≧XE2+YE2ならばSGN=0とし、XE1+YE1<XE2+YE2ならばSGN=1とする。また、比較器73は、|(XE1+YE1)−(XE2+YE2)|を絶対値信号ABSとして仮数処理部に供給する。第2のセレクタ74は、XE1+YE1とXE2+YE2とのうちの小さくない方がレジスタ75に格納されるように、比較器73からの符号信号SGNに従って2つの入力のうちの一方を選択する。仮数処理部のスワッパ63は、SGN=0ならば、W1 をRB加算器65に、U2 を第1のシフタ64にそれぞれ供給する。また、SGN=1ならば、スワッパ63は、W1 を第1のシフタ64に、U2 をRB加算器65にそれぞれ供給する。第1のシフタ64は、仮数の桁合わせのために、スワッパ63から供給された冗長2進数に絶対値信号ABSで指定された量の右シフト処理を施し、該シフト処理の結果をRB加算器65に供給する。RB加算器65は、スワッパ63の出力ポートDから供給された冗長2進数と第1のシフタ64から供給された冗長2進数との加算を実行する。RB加算器65における加算結果V2 は、第2のシフタ66に供給される。ここで、W1 及びU2 のうちのいずれか一方には第1のシフタ64により既に右シフト処理が施されているが、いずれにしても1<V2 <23 である。S3 =0であるから、符号信号SGNの如何にかかわらず第2のシフタ66にはセレクタ67からシフト量0が指定される。したがって、W2 =V2 である。第2のシフタ66の出力W2 はレジスタ68に格納される。ここで、1<W2 <23 である。
【0052】第3ステージでは、仮数処理部のRB乗算器62において、U3 =XM3×YM3の乗算が実行される。ここに、1≦U3 <22 である。レジスタ68からW2 が、RB乗算器62からU3 が各々スワッパ63に供給される。一方、RB−B変換器69は、レジスタ68の保持データW2 を2進数に変換し、該変換により得られた2進数の小数点より3桁上位の桁に基づくシフト量信号S3 を出力する。この際、1<W2 <22 ならばS3 =0となり、22 ≦W2 <23 ならばS3 =1となる。一方、指数処理部では、第1の2入力加算器70によりXE3+YE3の加算が実行され、レジスタ75の保持データとXE3+YE3とのうちの小さくない方がレジスタ75に格納される。比較器73は、符号信号SGNと絶対値信号ABSとを仮数処理部に供給する。仮数処理部のスワッパ63、第1のシフタ64及びRB加算器65は、W2 とU3 との桁合わせ加算を実行し、その結果V3 を第2のシフタ66に供給する。この際、SGN=0ならば、第1のシフタ64によりU3 に右シフト処理が施される。しかも、1<W2 <22 ならば1<V3 <23 であり、22 ≦W2 <23 ならば22 <V3 <24 である。また、SGN=0の場合には、RB−B変換器69から出力されたシフト量信号S3 (=0又は1)が第2のシフタ66に供給される。したがって、1<W2 2 ならば、第2のシフタ66において右1桁シフト処理は実行されず、W3 =V3 となる。この場合、1<V3 <23 であるから、1<W3 <23 である。また、22 ≦W2<23 ならば、第2のシフタ66においてV3 に右1桁シフト処理が施され、該処理の結果がW3 となる。この場合、22 <V3 <24 であるから、2<W3 <23 である。SGN=1の場合には、第1のシフタ64によりW2 に右シフト処理が施される結果、1<V3 <23 である。この場合、セレクタ67は0を選択するから、第2のシフタ66において右1桁シフト処理は実行されず、W3 =V3 となる。したがって、1<W3 <23 である。つまり、いずれにしても1<W3 <23 を満たすW3 がレジスタ68に格納される。以下同様にして第mステージまで進む。
【0053】第mステージでは、Um =XMm×YMmの乗算とWm-1 の2進数への変換とが並行して実行される。そして、Wm-1 とUm との桁合わせ加算によりVm が得られ、Vm のシフト処理により得られたWm がレジスタ68に格納される。ここに、1≦Um <22 、1<Vm <24 かつ1<Wm <23 である。
【0054】第m+1ステージでは、仮数処理部のRB−B変換器69において、Wm の2進数への変換が実行される。更に、RB−B変換器69は、1<Wm <2ならばWm の変換結果をそのままRM として出力し、かつS3 =0とする。また、2≦Wm <22 ならばWm の変換結果に右1桁シフト処理を施し、該処理の結果をRM として出力し、かつS3 =1とする。また、22 ≦Wm <23 ならばWm の変換結果に右2桁シフト処理を施し、該処理の結果をRM として出力し、かつS3=2とする。この結果、1≦RM <2となる。一方、指数処理部では、RB−B変換器69から供給されたシフト量信号S3 に基づき、レジスタ75の保持データに補正が施され、該補正の結果がRE として出力される。この際、第1のセレクタ71は0を選択する。
【0055】以上のとおり、図9の仮数処理部によれば、第kステージ(k=1,…,m)において、1≦Uk <22 、1≦Vk <24 かつ1≦Wk <23 である。したがって、RB加算器65及びレジスタ68が扱うべきデータの桁数は演算の繰り返し回数mに依存せず一定である。つまり、演算の繰り返し回数mが大きい場合でも、小さいハードウェアで式(4)の繰り返し算術演算の仮数処理を高速実行できる。
【0056】なお、図9の仮数処理部において、RB−B変換器69が変換により得られた2進数の小数点よりn(n≧4)桁上位の桁に基づいて、シフト量信号S3 を生成するようにしてもよい。RB−B変換器69が2ステージに1回の割合でレジスタ68の保持データを2進数に変換し、該変換により得られた2進数の小数点より3桁上位の桁及び4桁上位の桁に基づくシフト量信号S3 (S3 =0,1又は2)をセレクタ67を介して第2のシフタ66に供給するようにしてもよい。また、図10の指数処理部は、図2又は図5に対応する形に変形可能である。
【0057】(実施例4)図11及び図12は、本発明の第4の実施例に係る正規化された浮動小数点数のための繰り返し算術演算装置の構成を示す図である。図11は仮数処理部を、図12は指数処理部を各々示している。
【0058】本実施例の装置は、 S=X1 +X2 +…+Xm (5)
で示される繰り返し加算を実行するものである。ここに、入力データXk (k=1,…,m)及び演算結果Sは、正規化された浮動小数点数である。XMk及びXEk(k=1,…,m)は、Xk の仮数及び指数をそれぞれ表わす2進数である。SM 及びSE は、Sの仮数及び指数をそれぞれ表わす2進数である。入力データの仮数XMk(k=1,…,m)は、1≦XMk<2を満たしている。また、出力データの仮数SM は、1≦SM <2を満たすように調整される。
【0059】図11の仮数処理部は、図9の構成から第2のB−RB変換器61及びRB乗算器62を削除したものである。つまり、図11の構成では、B−RB変換器60の出力Uk がスワッパ63の一方の入力ポートに直接入力される。しかも、本実施例のRB−B変換器69は、レジスタ68から供給された冗長2進数を2進数に変換し、かつ該変換により得られた2進数の小数点より2桁上位の桁に基づいてシフト量信号S4 を出力する。該特定の桁が0ならばS4 =0、該特定の桁が1ならばS4 =1とされる。
【0060】図12の指数処理部は、図10の構成から第1の2入力加算器70を削除したものである。外部から供給された2進数XEk(k=1,…,m)は、第1のセレクタ71の一方の入力ポートに直接入力される。
【0061】図11の仮数処理部によれば、第1及び第2ステージではS4 =0であり、第3ステージから後はS4 =0又は1となる。第3の実施例の説明から容易にわかるように、第kステージ(k=1,…,m)におけるスワッパ63の一方の入力Uk 、RB加算器65の出力Vk 及び第2のシフタ66の出力Wk は、1≦Uk<2、1≦Vk <23 かつ1≦Wk <22 を満たす。したがって、RB加算器65及びレジスタ68が扱うべきデータの桁数は演算の繰り返し回数mに依存せず一定である。つまり、演算の繰り返し回数mが大きい場合でも、小さいハードウェアで式(5)の繰り返し加算の仮数処理を高速実行できる。
【0062】なお、図11の仮数処理部において、RB−B変換器69が変換により得られた2進数の小数点よりn(n≧3)桁上位の桁に基づいて、シフト量信号S4 を生成するようにしてもよい。RB−B変換器69が2ステージに1回の割合でレジスタ68の保持データを2進数に変換し、該変換により得られた2進数の小数点より2桁上位の桁及び3桁上位の桁に基づくシフト量信号S4 (S4 =0,1又は2)をセレクタ67を介して第2のシフタ66に供給するようにしてもよい。図12の指数処理部は、図2又は図5に対応する形に変形可能である。
【0063】
【発明の効果】以上説明してきたとおり、本発明によれば、SD演算器とレジスタとの間に右シフト処理のためのシフタを挿入し、繰り返しの各段階における中間結果を示すSD数から2進数への変換の結果に応じてシフト量を決定し、中間結果を示すSD数に逐次右シフト処理を施す構成を採用したので、SD演算器及びレジスタが扱うべきデータの桁数が演算の繰り返し回数に依存せず一定となる結果、正規化された浮動小数点数の繰り返し算術演算を小さいハードウェアで高速実行できる効果がある。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013