JPH08212052A - 正規化データ生成回路 - Google Patents

正規化データ生成回路

Info

Publication number
JPH08212052A
JPH08212052A JP7016320A JP1632095A JPH08212052A JP H08212052 A JPH08212052 A JP H08212052A JP 7016320 A JP7016320 A JP 7016320A JP 1632095 A JP1632095 A JP 1632095A JP H08212052 A JPH08212052 A JP H08212052A
Authority
JP
Japan
Prior art keywords
output
bit
input data
signal
decimal point
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.)
Pending
Application number
JP7016320A
Other languages
English (en)
Inventor
Takeshi Kasuya
武 糟谷
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP7016320A priority Critical patent/JPH08212052A/ja
Publication of JPH08212052A publication Critical patent/JPH08212052A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 ビット処理命令を用いることなく正規化デー
タを生成でき、高速性に優れた正規化データ生成回路の
提供。 【構成】 下位側に向かって、入力データの先頭ビット
と論理状態の異なるビットが最初に現れるビット位置を
検出し、入力データの小数点の位置から該ビット位置ま
での距離を表す情報を出力する情報出力手段と、該情報
出力手段1の出力に基づいて前記入力データをシフトす
るシフト手段2と、を備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、正規化データ生成回路
に関し、特に、固定小数点形式や浮動小数点形式のディ
ジタル・データに適用する正規化データ生成回路に関す
る。例えば、2を基底とした浮動小数点形式のデータ・
フォーマットは、「S・M・E」の形式で表される。こ
こに、Sは符号ビットMは仮数、Eは指数である。Mは
一般に、「1.b1 2 3 ・・・ bm 」の形、すなわち
1以上2以下の範囲に「正規化」される。浮動小数点形
式の仮数部は、Mの小数点以下のビット列「b1 2
3 ・・・ bm 」で与えられる。
【0002】いま、正規化前のMの値が、仮に「0.0
100110」であったとすると、正規化後のMの値は
「1.0011000」となり、仮数部は「00110
00」となる。これは、正規化前のMを2ビット右シフ
トし、上位の1ビットを取り除いたことに他ならない。
【0003】
【従来の技術】従来、正規化データの生成は、概略以下
のようにして行なわれていた。すなわち、正規化前のデ
ータを取り込み、次いで、正規化のためのビットシフト
値(冒頭の例では2ビット右シフト)を「ビット処理命
令」により取得し、そのシフト値でデータをシフトして
正規化後のデータを得ていた。
【0004】又は、複数のデータに対し一括的に正規化
を行なう場合には、それぞれのデータ毎に「ビット処理
命令」によりシフト値を取得し、最も大きな値を有する
データのシフト値で、すべてのデータをシフトしてい
た。
【0005】
【発明が解決しようとする課題】しかしながら、かかる
従来の生成手法は、専ら「ビット処理命令」によるソフ
ト処理で行なうというものであったため、正規化データ
の生成に時間がかかり、高速性を追及できないという問
題点があった。
【0006】
【目的】そこで、本発明は、ビット処理命令を用いるこ
となく正規化データを生成でき、高速性に優れた正規化
データ生成回路の提供を目的とする。
【0007】
【課題を解決するための手段】請求項1記載の発明は、
上記目的を達成するためその原理図を図1に示すよう
に、下位側に向かって、入力データの先頭ビットと論理
状態の異なるビットが最初に現れるビット位置を検出
し、前記入力データの小数点の位置から該ビット位置ま
での距離を表す情報を出力する情報出力手段1と、該情
報出力手段1の出力に基づいて前記入力データをシフト
するシフト手段2と、を備えたことを特徴とする。
【0008】又は、請求項2記載の発明は、上記目的を
達成するためその原理図を図2に示すように、下位側に
向かって、入力データの先頭ビットと論理状態の異なる
ビットが最初に現れるビット位置を検出し、前記入力デ
ータの小数点の位置から該ビット位置までの距離を表す
情報を出力する情報出力手段10と、該情報出力手段1
0の出力と後述の記憶情報とを比較して値の小さい方を
選択する選択手段11と、前記距離の最大値に相当する
値を初期値として記憶し、該記憶した値を前記記憶情報
として出力するとともに、該記憶した値を前記選択手段
11の選択結果で更新する記憶手段12と、該記憶手段
12の出力に基づいて前記入力データをシフトするシフ
ト手段13と、を備えたことを特徴とする。
【0009】
【作用】入力データを、例えば「0000.00010
000」と仮定する。但し、ピ、リオド(.)は小数点
の位置である。下位側に向かって、入力データの先頭ビ
ットと論理状態の異なるビット(この例では“1”)が
最初に現れるビット位置は、上位側から8ビット目であ
り、小数点位置からの距離は、小数点第1位を「0」と
すると「3」である。したがって、請求項1又は2記載
の発明では、シフト手段によって「3」ビットだけ左シ
フトした正規化後のデータ「0000.1000000
0」が得られる。
【0010】また、請求項2記載の発明では、入力デー
タ毎のシフト値の中で最小のものが記憶手段に記憶さ
れ、この記憶値によってシフト手段のシフト量が決定さ
れるから、複数のデータに対する一括的な正規化処理が
可能になる。
【0011】
【実施例】以下、本発明の実施例を図面に基づいて説明
する。図3〜図9は本発明に係る正規化データ生成回路
の一実施例を示す図である。まず、構成を説明する。図
3において、20はデータ・セレクタ(以下「SE
L」)、21はデータメモリ(以下「RAM」)、22
はプライオリティ・エンコーダ(以下「PRE」)、2
3は比較器(以下「CMP」)、24は制御部(以下
「CNT」)、25はシフト値・セレクタ(以下「RG
SEL」)、26はシフトレジスタ(以下「SFT
R」)、27はバレルシフタ(以下「BSFT」)であ
る。
【0012】ここで、各部の概略機能を説明すると、S
EL20は、入力データINと正規化後のデータOUT
(BSFT27の出力データ)の一方を選択するもの、
RAM21は、SEL20によって選択されたIN又は
OUTをアドレスを付して複数格納するものである。な
お、図ではRAM(ランダム・アクセス・メモリ)を用
いているが、これに限るものではない。例えば、レジス
タ・ファイルで構成しても構わない。
【0013】PRE22は、発明の要旨に記載の「情報
出力手段」としての機能を有し、RAM21に格納され
たINの先頭ビット(符号ビット;S)を除くビットの
中で、下位側に向かって、先頭ビットと論理状態の異な
るビット(S=“0”であれば“1”又はS=“1”で
あれば“0”)が最初に現れるビット位置(便宜的に
「特異ビット位置」と呼ぶ)を検出するとともに、IN
の小数点位置から特異ビット位置までの距離を表す情報
を出力するものである。
【0014】図4はINのフォーマットとPRE22の
出力値との対応図である。INは、D11〜D0 までの1
2ビットであり、最上位のビットD11は符号ビットであ
る。この例の場合、小数点の位置はビットD7 とD8
間である。いま、INを「0000.0001000
0」と仮定すると(以下「仮定パターン1」)、特異ビ
ットはD4 となり、PRE22から「3」が出力され
る。
【0015】又は、INを「0000.0000011
1」と仮定すると(以下「仮定パターン2」)、特異ビ
ットはD2 となり、PRE22から「5」が出力され
る。又は、INを「0000.00101010」と仮
定すると(以下「仮定パターン3」)、特異ビットはD
5 となり、PRE22から「2」が出力される。本例の
場合、PRE22の出力の最大値は「7」であり、PR
E22の出力フォーマットは符号ビット(S)を含めて
少なくとも4ビットあればよい。図5はPRE22の出
力フォーマット(SFTR26の出力フォーマットも兼
ねる)である。最上位ビットPR3 は符号ビットであ
り、この符号ビットを除く3ビットPR2 〜PR0 で出
力値を表す。例えば、仮定パターン1の場合には「00
11」、仮定パターン2の場合には「0101」、仮定
パターン3の場合には「0010」となる。
【0016】CMP23は、PRE22の出力とSFT
R26の出力とを比較するもの、CNT24は、CMP
23の比較結果やPRE22の出力の符号ビット(PR
3 )及びSFTR26の出力の符号ビット(SF3 )に
基づいて、RGSEL25に対する切換制御信号SNO
Pを発生するもので、SNOPは、PRE22の出力が
SFTR26の出力よりも小さいときにアクティブ、こ
の逆のときにインアクティブになる。また、RGSEL
25は、SNOPがアクティブのときに、PRE22の
出力を選択する一方、SNOPがインアクティブのとき
にはSFTR26の出力を選択するもので、このRGS
EL25は、上述のCMP23及びCNT24ととも
に、発明の要旨に記載の「選択手段」としての機能を有
している。すなわち、RGSEL25は、PRE22の
出力がSFTR26の出力よりも小さいときにPRE2
2の出力を選択し、この逆に、SFTR26の出力がP
RE22の出力よりも小さいときにSFTR26の出力
を選択するものである。なお、かかる選択動作は、外部
からの信号RGによって禁止できるようになっている。
例えば、信号RGがアクティブのときには上記選択動作
を許容するが、インアクティブのときにはPRE25の
出力だけを選択するようになっている。これは、信号R
Gがインアクティブのときに、SNOPをアクティブに
固定することによって達成できる。
【0017】SFTR26は、RGSEL25の出力を
記憶するするもので、その記憶値の初期値は、PRE2
2の出力の最大値(ここでは「7」)若しくはそれ以上
に設定されており、発明の要旨に記載の「記憶手段」と
して機能するものである。BSFT27(シフト手段)
は、いわゆるPシフタ(一度にPビットまでのシフトが
できるシフタ;P≧2)の一種であり、SFTR26の
出力に基づいてINをPビット左シフト又は右シフトし
たデータ(正規化データOUT)を生成し出力するもの
である。
【0018】なお、図6及び図7は、CMP23、CN
T24及びRGSEL25の好ましい構成例である。図
6において、CMP23は、SFTR26の出力(SF
3 〜SF0 )の反転データを生成するNOTゲート23
a〜23dと、この反転データに+1(キャリーイン;
I )した値、すなわちSFTR26の出力(SF3
SF0 )の2の補数とPRE22の出力(PR3 〜PR
0 )とを加算……言い換えればPRE22の出力(PR
3 〜PR0 )からSFTR26の出力(SF3〜S
0 )を減算……する4ビット加算器23eと、を有し
ている。CNT24は、PRE22の符号ビット(PR
3 )を反転するNOTゲート24aと、NOTゲート2
4aの出力とSFTR26の出力の符号ビット(S
3 )との論理和をとるORゲート24bと、PRE2
2の符号ビット(PR3 )とSFTR26の符号ビット
(SF3 )との排他的論理和をとるXORゲート24c
と、XORゲート24cとCMP23の4ビット加算器
23eのキャリーアウト(CO )との論理和をとるOR
ゲート24dと、ORゲート24bの出力とORゲート
24dの論理積をとるANDゲート24eと、信号RG
を反転するNOTゲート24fと、NOTゲート24f
の出力とANDゲート24eの出力との論理積をとるA
NDゲート24gと、を有している。また、図7におい
て、RGSEL25は、信号SNOPを反転するNOT
ゲート25aと、PRE22の出力(PR3 〜PR0
とNOTゲート25aの出力との論理積をとるANDゲ
ート25bと、SFTR26の出力(SF3 〜SF0
の出力と信号SNOPとの論理積をとるANDゲート2
5cと、ANDゲート25bとANDゲート25cとの
論理和をとるORゲート25dと、を有している。
【0019】ここで、RGSEL25は、前述したよう
に、信号SNOPの状態に応じて、PRE22の出力
(PR3 〜PR0 )とSFTR26の出力(SF3 〜S
0 )とを選択するものであるが、図7の構成で、この
ような動作が得られるか検証してみる。なお、以下の説
明において、Sは各ゲートの出力信号を表し、その添え
字はゲートに付した符号に対応する。例えば、S
25d は、ORゲート25dの出力信号である。
【0020】RGSEL25の出力は信号S25d で与え
られ、この信号S25d は信号S25b又は信号S25c であ
る。二つのANDゲート25b、25cは、信号SNO
Pの論理に応じて相補的にオン/オフするスイッチと見
做すことができる。すなわち、信号SNOPが“1”で
あれば、左側のANDゲート25bがオフ、右側のAN
Dゲート25cがオンとなり、一方、信号SNOPが
“0”であれば、この逆に、左側のANDゲート25b
がオン、右側のANDゲート25cがオフとなる。左側
のANDゲート25bは、PRE22の出力(PR3
PR0 )をスイッチするもの、右側のANDゲート25
cは、SFTR26の出力(SF3 〜SF 0 )をスイッ
チするものである。したがって、信号SNOPを“1”
にした場合には、SFTR26の出力(SF3 〜S
0 )を選択でき、又は、信号SNOPを“0”にした
場合には、PRE22の出力(PR3 〜PR0 )を選択
できるから、図7の構成によるRGSEL25は、信号
SNOPの状態に応じて、PRE22の出力(PR3
PR0 )とSFTR26の出力(SF3 〜SF0 )とを
選択するという動作が得られるのである。なお、図7の
構成において、信号SNOPのアクティブ状態とは
“0”のことを言う。
【0021】信号SNOPはCNT24で作られる。図
6の構成において、信号SNOP=信号S24g である。
この信号S24g は、信号S24f が“0”(すなわち信号
RGが“1”)のときに“0”に固定される。したがっ
て、信号RGを“1”にしておけば、信号SNOPが
“0”(アクティブ)となって、RGSEL25でPR
E22の出力が選択され続けるから、一つの入力データ
INに対する正規化処理を行なうことができる。なお、
図6の構成において、信号RGのインアクティブ状態と
は“1”のことである。
【0022】信号RGをアクティブ(“0”)にする
と、信号S24f が“1”となって、ANDゲート24g
がオンし、信号SNOP=信号S24e となる。信号S
24e は、信号S24b 又は信号S24d と同一論理である。
信号S24b は、PRE22の出力の符号ビット(P
3 )が“0”のとき(すなわち出力が正のとき)に
“1”となり、そうでないときには、SFTR26の出
力の符号ビット(PR3 )の状態と同じになる。すなわ
ち、信号S24d は、PRE22の出力が正のとき、又
は、SFTR26の出力が負のときに“1”となる。ま
た、信号S24d は、PRE22の出力の符号ビット(P
3 )とSFTR26の出力の符号ビット(SF3 )と
が“1”と“0”又は“0”と“1”の関係になったと
き、若しくは、CMP23の4ビット加算器23eで桁
上り(CO =“1”)が生じたときに“1”となる。
【0023】以下、PRE22の出力(PR3 〜P
0 )と、SFTR26の出力(SF3〜SF0 )との
組み合わせに応じた、4ビット加算器23eの演算結果
(特にキャリーアウトCO )のリストを示す。なお、リ
スト中の「マーク」は、両出力の大小関係を表してい
る。具体的には、右開き不等号(<)で「PR3 〜PR
0 <SF3 〜SF0 」の関係を、左開き不等号(>)で
「PR3 〜PR0 >SF3 〜SF0 」の関係を、等号
(=)で「PR3 〜PR0 =SF3 〜SF0 」の関係を
表している。 (1)PR3 〜PR0 =「0000」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 0000+1111+1=0000 1 = 0001(1110) 0000+1110+1=1111 0 < 0010(1101) 0000+1101+1=1110 0 < 0011(1100) 0000+1100+1=1101 0 < 0100(1011) 0000+1011+1=1100 0 < 0101(1010) 0000+1010+1=1011 0 < 0110(1001) 0000+1001+1=1010 0 < 0111(1000) 0000+1000+1=1001 0 < 1000(0111) 0000+0111+1=1000 0 > 1001(0110) 0000+0110+1=0111 0 > 1010(0101) 0000+0101+1=0110 0 > 1011(0100) 0000+0100+1=0101 0 > 1100(0011) 0000+0011+1=0100 0 > 1101(0010) 0000+0010+1=0011 0 > 1110(0001) 0000+0001+1=0010 0 > 1111(0000) 0000+0000+1=0001 0 > (2)PR3 〜PR0 =「0001」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 0001+1111+1=0001 1 > 0001(1110) 0001+1110+1=0000 1 = 0010(1101) 0001+1101+1=1111 0 < 0011(1100) 0001+1100+1=1110 0 < 0100(1011) 0001+1011+1=1101 0 < 0101(1010) 0001+1010+1=1100 0 < 0110(1001) 0001+1001+1=1011 0 < 0111(1000) 0001+1000+1=1010 0 < 1000(0111) 0001+0111+1=1001 0 > 1001(0110) 0001+0110+1=1000 0 > 1010(0101) 0001+0101+1=0111 0 > 1011(0100) 0001+0100+1=0110 0 > 1100(0011) 0001+0011+1=0101 0 > 1101(0010) 0001+0010+1=0100 0 > 1110(0001) 0001+0001+1=0011 0 > 1111(0000) 0001+0000+1=0010 0 > (3)PR3 〜PR0 =「0010」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 0010+1111+1=0010 1 > 0001(1110) 0010+1110+1=0001 1 > 0010(1101) 0010+1101+1=0000 1 = 0011(1100) 0010+1100+1=1111 0 <※3 0100(1011) 0010+1011+1=1110 0 < 0101(1010) 0010+1010+1=1101 0 < 0110(1001) 0010+1001+1=1100 0 < 0111(1000) 0010+1000+1=1011 0 < 1000(0111) 0010+0111+1=1010 0 > 1001(0110) 0010+0110+1=1001 0 > 1010(0101) 0010+0101+1=1000 0 > 1011(0100) 0010+0100+1=0111 0 > 1100(0011) 0010+0011+1=0110 0 > 1101(0010) 0010+0010+1=0101 0 > 1110(0001) 0010+0001+1=0100 0 > 1111(0000) 0010+0000+1=0011 0 > (4)PR3 〜PR0 =「0011」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 0011+1111+1=0011 1 > 0001(1110) 0011+1110+1=0010 1 > 0010(1101) 0011+1101+1=0001 1 > 0011(1100) 0011+1100+1=0000 1 = 0100(1011) 0011+1011+1=1111 0 < 0101(1010) 0011+1010+1=1110 0 < 0110(1001) 0011+1001+1=1101 0 < 0111(1000) 0011+1000+1=1100 0 <※1 1000(0111) 0011+0111+1=1011 0 > 1001(0110) 0011+0110+1=1010 0 > 1010(0101) 0011+0101+1=1001 0 > 1011(0100) 0011+0100+1=1000 0 > 1100(0011) 0011+0011+1=0111 0 > 1101(0010) 0011+0010+1=0110 0 > 1110(0001) 0011+0001+1=0101 0 > 1111(0000) 0011+0000+1=0100 0 > (5)PR3 〜PR0 =「0100」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 0100+1111+1=0100 1 > 0001(1110) 0100+1110+1=0011 1 > 0010(1101) 0100+1101+1=0010 1 > 0011(1100) 0100+1100+1=0001 1 > 0100(1011) 0100+1011+1=0000 1 = 0101(1010) 0100+1010+1=1111 0 < 0110(1001) 0100+1001+1=1110 0 < 0111(1000) 0100+1000+1=1101 0 < 1000(0111) 0100+0111+1=1100 0 > 1001(0110) 0100+0110+1=1011 0 > 1010(0101) 0100+0101+1=1010 0 > 1011(0100) 0100+0100+1=1001 0 > 1100(0011) 0100+0011+1=1000 0 > 1101(0010) 0100+0010+1=0111 0 > 1110(0001) 0100+0001+1=0110 0 > 1111(0000) 0100+0000+1=0101 0 > (6)PR3 〜PR0 =「0101」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 0101+1111+1=0101 1 > 0001(1110) 0101+1110+1=0100 1 > 0010(1101) 0101+1101+1=0011 1 > 0011(1100) 0101+1100+1=0010 1 >※2 0100(1011) 0101+1011+1=0001 1 > 0101(1010) 0101+1010+1=0000 1 = 0110(1001) 0101+1001+1=1111 0 < 0111(1000) 0101+1000+1=1110 0 < 1000(0111) 0101+0111+1=1101 0 > 1001(0110) 0101+0110+1=1100 0 > 1010(0101) 0101+0101+1=1011 0 > 1011(0100) 0101+0100+1=1010 0 > 1100(0011) 0101+0011+1=1001 0 > 1101(0010) 0101+0010+1=1000 0 > 1110(0001) 0101+0001+1=0111 0 > 1111(0000) 0101+0000+1=0110 0 > (7)PR3 〜PR0 =「0110」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 0110+1111+1=0110 1 > 0001(1110) 0110+1110+1=0101 1 > 0010(1101) 0110+1101+1=0100 1 > 0011(1100) 0110+1100+1=0011 1 > 0100(1011) 0110+1011+1=0010 1 > 0101(1010) 0110+1010+1=0001 1 > 0110(1001) 0110+1001+1=0000 1 = 0111(1000) 0110+1000+1=1111 0 < 1000(0111) 0110+0111+1=1110 0 > 1001(0110) 0110+0110+1=1101 0 > 1010(0101) 0110+0101+1=1100 0 > 1011(0100) 0110+0100+1=1011 0 > 1100(0011) 0110+0011+1=1010 0 > 1101(0010) 0110+0010+1=1001 0 > 1110(0001) 0110+0001+1=1000 0 > 1111(0000) 0110+0000+1=0111 0 > (8)PR3 〜PR0 =「0111」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 0111+1111+1=0111 1 > 0001(1110) 0111+1110+1=0110 1 > 0010(1101) 0111+1101+1=0101 1 > 0011(1100) 0111+1100+1=0100 1 > 0100(1011) 0111+1011+1=0011 1 > 0101(1010) 0111+1010+1=0010 1 > 0110(1001) 0111+1001+1=0001 1 > 0111(1000) 0111+1000+1=0000 1 = 1000(0111) 0111+0111+1=1111 0 > 1001(0110) 0111+0110+1=1110 0 > 1010(0101) 0111+0101+1=1101 0 > 1011(0100) 0111+0100+1=1100 0 > 1100(0011) 0111+0011+1=1011 0 > 1101(0010) 0111+0010+1=1010 0 > 1110(0001) 0111+0001+1=1001 0 > 1111(0000) 0111+0000+1=1000 0 > (9)PR3 〜PR0 =「1000」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 1000+1111+1=1000 1 < 0001(1110) 1000+1110+1=0111 1 < 0010(1101) 1000+1101+1=0110 1 < 0011(1100) 1000+1100+1=0101 1 < 0100(1011) 1000+1011+1=0100 1 < 0101(1010) 1000+1010+1=0011 1 < 0110(1001) 1000+1001+1=0010 1 < 0111(1000) 1000+1000+1=0001 1 < 1000(0111) 1000+0111+1=0000 1 = 1001(0110) 1000+0110+1=1111 0 > 1010(0101) 1000+0101+1=1110 0 > 1011(0100) 1000+0100+1=1101 0 > 1100(0011) 1000+0011+1=1100 0 > 1101(0010) 1000+0010+1=1011 0 > 1110(0001) 1000+0001+1=1010 0 > 1111(0000) 1000+0000+1=1001 0 > (10)PR3 〜PR0 =「1001」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 1001+1111+1=1001 1 < 0001(1110) 1001+1110+1=1000 1 < 0010(1101) 1001+1101+1=0111 1 < 0011(1100) 1001+1100+1=0110 1 < 0100(1011) 1001+1011+1=0101 1 < 0101(1010) 1001+1010+1=0100 1 < 0110(1001) 1001+1001+1=0011 1 < 0111(1000) 1001+1000+1=0010 1 < 1000(0111) 1001+0111+1=0001 1 < 1001(0110) 1001+0110+1=0000 1 = 1010(0101) 1001+0101+1=1111 0 > 1011(0100) 1001+0100+1=1110 0 > 1100(0011) 1001+0011+1=1101 0 > 1101(0010) 1001+0010+1=1100 0 > 1110(0001) 1001+0001+1=1011 0 > 1111(0000) 1001+0000+1=1010 0 > (11)PR3 〜PR0 =「1010」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 1010+1111+1=1010 1 < 0001(1110) 1010+1110+1=1001 1 < 0010(1101) 1010+1101+1=1000 1 < 0011(1100) 1010+1100+1=0111 1 < 0100(1011) 1010+1011+1=0110 1 < 0101(1010) 1010+1010+1=0101 1 < 0110(1001) 1010+1001+1=0100 1 < 0111(1000) 1010+1000+1=0011 1 < 1000(0111) 1010+0111+1=0010 1 < 1001(0110) 1010+0110+1=0001 1 < 1010(0101) 1010+0101+1=0000 1 = 1011(0100) 1010+0100+1=1111 0 > 1100(0011) 1010+0011+1=1110 0 > 1101(0010) 1010+0010+1=1101 0 > 1110(0001) 1010+0001+1=1100 0 > 1111(0000) 1010+0000+1=1011 0 > (12)PR3 〜PR0 =「1011」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 1011+1111+1=1011 1 < 0001(1110) 1011+1110+1=1010 1 < 0010(1101) 1011+1101+1=1001 1 < 0011(1100) 1011+1100+1=1000 1 < 0100(1011) 1011+1011+1=0111 1 < 0101(1010) 1011+1010+1=0110 1 < 0110(1001) 1011+1001+1=0101 1 < 0111(1000) 1011+1000+1=0100 1 < 1000(0111) 1011+0111+1=0011 1 < 1001(0110) 1011+0110+1=0010 1 < 1010(0101) 1011+0101+1=0001 1 < 1011(0100) 1011+0100+1=0000 1 = 1100(0011) 1011+0011+1=1111 0 > 1101(0010) 1011+0010+1=1110 0 > 1110(0001) 1011+0001+1=1101 0 > 1111(0000) 1011+0000+1=1100 0 > (13)PR3 〜PR0 =「1100」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 1100+1111+1=1100 1 < 0001(1110) 1100+1110+1=1011 1 < 0010(1101) 1100+1101+1=1010 1 < 0011(1100) 1100+1100+1=1001 1 < 0100(1011) 1100+1011+1=1000 1 < 0101(1010) 1100+1010+1=0111 1 < 0110(1001) 1100+1001+1=0110 1 < 0111(1000) 1100+1000+1=0101 1 < 1000(0111) 1100+0111+1=0100 1 < 1001(0110) 1100+0110+1=0011 1 < 1010(0101) 1100+0101+1=0010 1 < 1011(0100) 1100+0100+1=0001 1 < 1100(0011) 1100+0011+1=0000 1 = 1101(0010) 1100+0010+1=1111 0 > 1110(0001) 1100+0001+1=1110 0 > 1111(0000) 1100+0000+1=1101 0 > (14)PR3 〜PR0 =「1101」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 1101+1111+1=1101 1 < 0001(1110) 1101+1110+1=1100 1 < 0010(1101) 1101+1101+1=1011 1 < 0011(1100) 1101+1100+1=1010 1 < 0100(1011) 1101+1011+1=1001 1 < 0101(1010) 1101+1010+1=1000 1 < 0110(1001) 1101+1001+1=0111 1 < 0111(1000) 1101+1000+1=0110 1 < 1000(0111) 1101+0111+1=0101 1 < 1001(0110) 1101+0110+1=0100 1 < 1010(0101) 1101+0101+1=0011 1 < 1011(0100) 1101+0100+1=0010 1 < 1100(0011) 1101+0011+1=0001 1 < 1101(0010) 1101+0010+1=0000 1 = 1110(0001) 1101+0001+1=1111 0 > 1111(0000) 1101+0000+1=1110 0 > (15)PR3 〜PR0 =「1110」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 1110+1111+1=1110 1 < 0001(1110) 1110+1110+1=1101 1 < 0010(1101) 1110+1101+1=1100 1 < 0011(1100) 1110+1100+1=1011 1 < 0100(1011) 1110+1011+1=1010 1 < 0101(1010) 1110+1010+1=1001 1 < 0110(1001) 1110+1001+1=1000 1 < 0111(1000) 1110+1000+1=0111 1 < 1000(0111) 1110+0111+1=0110 1 < 1001(0110) 1110+0110+1=0101 1 < 1010(0101) 1110+0101+1=0100 1 < 1011(0100) 1110+0100+1=0011 1 < 1100(0011) 1110+0011+1=0010 1 < 1101(0010) 1110+0010+1=0001 1 < 1110(0001) 1110+0001+1=0000 1 = 1111(0000) 1110+0000+1=1111 0 > (16)PR3 〜PR0 =「1111」のとき、 SF3 〜SF0 (反転出力) 演算式(PR+反転出力+CI ) CO マ-ク ─────────────────────────────────── 0000(1111) 1111+1111+1=1111 1 < 0001(1110) 1111+1110+1=1110 1 < 0010(1101) 1111+1101+1=1101 1 < 0011(1100) 1111+1100+1=1100 1 < 0100(1011) 1111+1011+1=1011 1 < 0101(1010) 1111+1010+1=1010 1 < 0110(1001) 1111+1001+1=1001 1 < 0111(1000) 1111+1000+1=1000 1 < 1000(0111) 1111+0111+1=0111 1 < 1001(0110) 1111+0110+1=0110 1 < 1010(0101) 1111+0101+1=0101 1 < 1011(0100) 1111+0100+1=0100 1 < 1100(0011) 1111+0011+1=0011 1 < 1101(0010) 1111+0010+1=0010 1 < 1110(0001) 1111+0001+1=0001 1 < 1111(0000) 1111+0000+1=0000 1 = 前述したように、複数の入力データINに対して正規化
処理をする場合には、各入力データ毎のシフト値のうち
最小のものをSFTR26に格納するが、それには、R
GSEL25によって、PRE22の出力(PR3 〜P
0 )とSFTR26の出力(SF3 〜SF0 )のうち
小さい方を選択する必要がある。CNT24で作られる
信号SNOPは、そのための制御信号であり、この信号
SNOPは、「PR3 〜PR0 <SF3 〜SF0 」又は
「PR3 〜PR0 =SF3 〜SF 0 」の場合に“0”、
「PR3 〜PR0 >SF3 〜SF0 」の場合に“1”に
ならなければならない。
【0024】図6の構成で、このような信号動作が得ら
れるかを検証してみる。例えば、上記(1)に注目する
と、(1)はPR3 〜PR0 が「0000」の場合であ
り、右端の「マーク」で示すように、PR3 〜PR0
SF3 〜SF0 とが等しい場合(=)、PR3 〜PR0
が小さい場合(<)、SF3 〜SF0 が小さい場合
(>)の三つのパターンに分かれる。なお、等しい場合
(=)は、RGSEL25によってどちらを選択しても
支障がないから(すなわちSNOPは“0”でも“1”
でも構わないから)説明を省く。
【0025】まず、PR3 〜PR0 が小さい場合
(<)、例えば、SF3 〜SF0 が「0001」の場合
を考える。反転出力は、図6のCMP23のNOTゲー
ト23a〜23dの出力である。CMP23の4ビット
加算器23eは、この場合、リストにも示すように「0
000」+「1110」+「1」の計算を行う。計算式
の第1項目はPR3 〜PR0 の値、第2項目は反転出
力、第3項目は定数(キャリーイン)である。計算結果
は「1111」であり、キャリーは発生しない(CO
0)。これを図6に当てはめてみると、いま、PR3
SF3 は“0”であるから、信号S24a とS24b
“1”、信号S24c が“0”になる。ここで、CO
“0”であるから、信号S24d が“0”になり、結局、
信号SNOPの状態が、意図したとおり“0”になる。
【0026】一方、SF3 〜SF0 が小さい場合
(>)、例えば、SF3 〜SF0 が「1000」の場合
には、信号S24a 、S24b 及びS24c が“1”になり、
O が“0”であっても、信号S24d が“1”になるか
ら、結局、信号SNOPの状態が、意図したとおり
“1”になる。なお、信号RGを“1”にすると、信号
SNOPの状態が“0”に固定され、RGSEL25で
PRE22の出力が選択され続けるから、一つの入力デ
ータINに対して正規化処理を行なう場合でも支障がな
い。
【0027】次に、作用を説明する。一つの入力データ
INを正規化する場合には、まず、信号RGをインアク
ティブ(“1”)にし、信号SNOPを“0”にしてR
GSEL25をPRE22の出力選択状態に固定する。
入力データINを、例えば、冒頭の仮定パターン1
(「0000.00010000」)とすると、符号ビ
ットを除く上位ビットで最初に“1”が立つ特異ビット
はD4 であるから、図4より、PRE22から「3」
(PR3 〜PR0 =「0011」)が出力される。そし
て、この「3」がRGSEL25を介してSFTR26
にセット(SF3 〜SF0 =「0011」)され、次い
で、BSFT27によって、SFTR26のセット値に
応じた入力データINのビットシフト操作が行なわれ
る。すなわち、この場合には、SFTR26に「3」が
セットされているから、入力データINに対して「3」
ビットの左シフトが行なわれ、シフト後のデータが正規
化データOUTとして出力されることになる。
【0028】一方、複数の入力データを一括的に正規化
する場合には、まず、信号RGをアクティブ(“0”)
にし、RGSEL25の選択動作を許容する。複数の入
力データの順番を、例えば、冒頭の仮定パターン1、
2、3の順とすると、最初のPRE22の出力は、一つ
の入力データに対する正規化処理の場合と同様に「3」
(PR3 〜PR0 =「0011」)となる。
【0029】いま、SFTR26の出力値は初期値の
「7」(SF3 〜SF0 =「0111」)であり、
「3」<「7」であるから(リストの※1 参照)、信号
SNOPはアクティブ(“0”)になる。したがって、
RGSEL25は、この信号SNOPに従って、PRE
22の出力(「3」)を選択し、SFTR26には初期
値に代えて、この「3」がセットされる。次に、2番目
の入力データは、仮定パターン2(「0000.000
00111」)である。この入力データの特異ビットは
2 であるから、図4より、PRE22から「5」(P
3 〜PR0 =「0101」)が出力される。
【0030】このとき、SFTR26の出力値は「3」
(SF3 〜SF0 =「0011」)であり、「5」>
「3」であるから(リストの※2 参照)、信号SNOP
はインアクティブ(“1”)となり、RGSEL25は
SFTR26の出力(「3」)を選択する。したがっ
て、SFTR26のセット値は「3」のまま変化しな
い。次に、3番目の入力データは、仮定パターン3
(「0000.00101010」)である。この入力
データの特異ビットはD5 であるから、図4より、PR
E22から「2」(PR3 〜PR0 =「0010」)が
出力される。ここで、SFTR26の出力値は「3」
(SF3 〜SF0 =「0011」)であり、「2」<
「3」であるから(リストの※3 参照)、信号SNOP
は再びアクティブ(“0”)となり、RGSEL25は
PRE22の出力(「2」)を選択する。したがって、
SFTR26のセット値が「3」から「2」へと更新さ
れる。
【0031】すべての入力データについて、以上の選択
動作を繰り返すと、最終的に、入力データ毎のシフト値
の中で最小の値のものがSFTR26に残ることにな
る。BSFT27は、この最後に残ったシフト値(上記
の例では「2」)に基づいて、それぞれの入力データに
対するシフト操作を実行する。したがって、上記の例で
は、1番目の入力データ「0000.0001000
0」、2番目の入力データ「0000.0000011
1」及び3番目の入力データ「0000.001010
10」に対して「2」ビットの左シフト操作が行なわ
れ、結局、順に「0000.01000000」、「0
000.00011100」及び「0000.1010
1000」といった正規化データが生成される。
【0032】以上、説明したように、本実施例では、下
位側に向かって、入力データの先頭ビットと論理状態の
異なるビットが最初に現れるビット位置を検出し、入力
データの小数点の位置から該ビット位置までの距離を表
す情報に基づいて、該入力データをシフトするようにし
たので、冒頭で述べた「ビット処理命令」が不要とな
り、そのシフト操作のほとんどをハード的に行なうこと
ができる。したがって、正規化データの生成時間を短縮
して高速化を図ることができる。
【0033】なお、上記の実施例では、入力データIN
の小数点以下を8ビット(図4参照)としているが、こ
れに限るものではない。それ以下でも以上でも構わない
(例えば、図8、図9参照)。但し、8ビット以上にし
た場合には、PRE22、SFTR26、RGSEL2
5及びCMP23のビット数が4ビットでは不足する。
すなわち、入力データINの小数点以下が8ビットの場
合には、シフト値の最大値は「7」であり、符号ビット
も含めて4ビット(図5参照)で良いが、例えば、図8
のように、小数点以下をD9 〜D0 までの10ビットと
した場合には、符号ビットも含めて少なくとも5ビット
(図10のSF4 〜SF0 参照)が必要である。
【0034】
【発明の効果】請求項1又は2記載の発明によれば、ビ
ット処理命令を用いることなく正規化データを生成で
き、高速性に優れた正規化データ生成回路を提供でき
る。
【図面の簡単な説明】
【図1】請求項1記載の発明の原理図である。
【図2】請求項2記載の発明の原理図である。
【図3】一実施例の構成図である。
【図4】入力データのフォーマット図である。
【図5】PREの出力又はSFTRの出力フォーマット
図である。
【図6】CMP及びCNTの構成図である。
【図7】RGSELの構成図である。
【図8】入力データの他のフォーマット図である。
【図9】入力データのさらに他のフォーマット図であ
る。
【図10】図8に対応したPREの出力又はSFTRの
出力フォーマット図である。
【符号の説明】
1:情報出力手段 2:シフト手段 10:情報出力手段 11:選択手段 12:記憶手段 13:シフト手段 22:PRE(情報出力手段) 23:CMP(選択手段) 24:CNT(選択手段) 25:RGSEL(選択手段) 26:SFTR(記憶手段) 27:BSFT(シフト手段)

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】下位側に向かって、入力データの先頭ビッ
    トと論理状態の異なるビットが最初に現れるビット位置
    を検出し、前記入力データの小数点の位置から該ビット
    位置までの距離を表す情報を出力する情報出力手段と、 前記情報出力手段の出力に基づいて前記入力データをシ
    フトするシフト手段と、を備えたことを特徴とする正規
    化データ生成回路。
  2. 【請求項2】下位側に向かって、入力データの先頭ビッ
    トと論理状態の異なるビットが最初に現れるビット位置
    を検出し、前記入力データの小数点の位置から該ビット
    位置までの距離を表す情報を出力する情報出力手段と、 前記情報出力手段の出力と後述の記憶情報とを比較して
    値の小さい方を選択する選択手段と、 前記距離の最大値に相当する値を初期値として記憶し、
    該記憶した値を前記記憶情報として出力するとともに、
    該記憶した値を前記選択手段の選択結果で更新する記憶
    手段と、 該記憶手段の出力に基づいて前記入力データをシフトす
    るシフト手段と、を備えたことを特徴とする正規化デー
    タ生成回路。
JP7016320A 1995-02-03 1995-02-03 正規化データ生成回路 Pending JPH08212052A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7016320A JPH08212052A (ja) 1995-02-03 1995-02-03 正規化データ生成回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7016320A JPH08212052A (ja) 1995-02-03 1995-02-03 正規化データ生成回路

Publications (1)

Publication Number Publication Date
JPH08212052A true JPH08212052A (ja) 1996-08-20

Family

ID=11913203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7016320A Pending JPH08212052A (ja) 1995-02-03 1995-02-03 正規化データ生成回路

Country Status (1)

Country Link
JP (1) JPH08212052A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011161859A1 (ja) 2010-06-22 2011-12-29 日本電気株式会社 半導体集積回路及び指数算出方法
WO2012157132A1 (ja) 2011-05-16 2012-11-22 日本電気株式会社 演算処理装置及び演算処理方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011161859A1 (ja) 2010-06-22 2011-12-29 日本電気株式会社 半導体集積回路及び指数算出方法
US8862647B2 (en) 2010-06-22 2014-10-14 Nec Corporation Semiconductor integrated circuit and exponent calculation method
WO2012157132A1 (ja) 2011-05-16 2012-11-22 日本電気株式会社 演算処理装置及び演算処理方法
US9519457B2 (en) 2011-05-16 2016-12-13 Nec Corporation Arithmetic processing apparatus and an arithmetic processing method

Similar Documents

Publication Publication Date Title
JPH05216624A (ja) 演算装置
KR20080028271A (ko) 비트필드 조작회로
JPH07168753A (ja) モジュロ加算回路およびその動作方法
JP2005100403A (ja) 電力消耗を減少させるための分岐予測器および実現方法
US4999800A (en) Floating point adder with pre-shifter
JPH10289096A (ja) 論理回路及び浮動小数点演算装置
US5479365A (en) Exponentiation remainder operation circuit
US7016930B2 (en) Apparatus and method for performing operations implemented by iterative execution of a recurrence equation
JP2511527B2 (ja) 浮動小数点演算器
JPH08212052A (ja) 正規化データ生成回路
US6269385B1 (en) Apparatus and method for performing rounding and addition in parallel in floating point multiplier
JPH09222991A (ja) 加算方法および加算器
JPH10283164A (ja) 除算回路
JP2509279B2 (ja) 浮動小数点数一固定小数点数変換装置
JP2766133B2 (ja) パラレル・シリアル・データ変換回路
JP4159565B2 (ja) ベクトル積和演算回路
JP4372822B2 (ja) パリティ予測回路及びこれを使用した論理演算回路
EP1041720B1 (en) Binary zero determination signal generating circuit
KR100385233B1 (ko) 데이터 프로세싱 시스템의 익스포넌트 유닛
KR100192968B1 (ko) 라운딩 오프 에러를 최소화하기 위한 라운딩 장치
JP2845662B2 (ja) ピーク/ボトムホールド回路
KR100203742B1 (ko) 멀티플렉스를 이용한 가산기
US20080307032A1 (en) Divider Circuit
JP3284717B2 (ja) バレルシフタ
KR960013762B1 (ko) 2의 보수 포맷 데이타의 클리핑 및 라운딩 회로

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040127