JP3245884B2 - シフト加減算装置 - Google Patents

シフト加減算装置

Info

Publication number
JP3245884B2
JP3245884B2 JP11828591A JP11828591A JP3245884B2 JP 3245884 B2 JP3245884 B2 JP 3245884B2 JP 11828591 A JP11828591 A JP 11828591A JP 11828591 A JP11828591 A JP 11828591A JP 3245884 B2 JP3245884 B2 JP 3245884B2
Authority
JP
Japan
Prior art keywords
data
output
overflow
shifter
adder
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
Application number
JP11828591A
Other languages
English (en)
Other versions
JPH04346125A (ja
Inventor
美加子 安留
勝彦 上田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP11828591A priority Critical patent/JP3245884B2/ja
Publication of JPH04346125A publication Critical patent/JPH04346125A/ja
Application granted granted Critical
Publication of JP3245884B2 publication Critical patent/JP3245884B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データのシフト処理を
伴う高精度の加減算処理を高速に実行するシフト加減算
装置に関するものである。
【0002】
【従来の技術】近年、数値演算の分野ではデータ処理量
の増大に伴って、数値演算を高速に、かつ小規模なハー
ドウエアを用いて処理することが必要となってきてい
る。固定小数点データを扱う場合には特に、オーバーフ
ローによる演算精度の低下が問題となるため、演算器で
オーバーフローが発生した場合には、オーバーフローの
方向に応じて自動的にデータを最小値もしくは最大値に
設定する機能を付加することによって演算精度を保って
いた。この従来のシフト加減算装置としてはたとえば松
下電子工業株式会社 MN1901/MN1909ユー
ザーズマニュアル6ページ記載のブロック図に示されて
いる。
【0003】以下図面を参照しながら、上記した従来の
シフト加減算装置の一例について説明する。実際には他
にも入出力部等の回路が存在するが、説明の簡単化のた
めに、シフト加減算に関する部分のみを本発明との相違
点を明確にするために構成を若干変えて示している。
【0004】図4は従来のシフト加減算装置のブロック
図を示すものである。ここでは、際上位ビット(27
重みを持つビット)を符号ビットとする2の補数体系の
8ビットデータ(27から20までの重みを持つデータで
表現する)を例に挙げて説明する。図4において、1、
2は8ビットの入力データを格納するレジスタ、3は
(図5)に示すようにレジスタ2出力を左または右に算
術シフトし、8ビットのデータを出力するシフタで、右
シフト時には上位側から符号ビットを挿入してシフトを
実行する。4は、加算器7に対して加算または減算の実
行を指示する演算モード制御回路で、減算の実行時には
最下位ビットへのキャリーを1にし、加算の時には0に
する。5は、演算モード制御回路4が加算またはレジス
タ1からシフタ3出力の減算を指示した場合にはレジス
タ1の出力をそのまま出力し、演算モード制御回路4が
シフタ3出力からレジスタ1の減算を指示した場合には
シフタ1の出力の1の補数をとって出力する補数器、6
は、演算モード制御回路4が加算またはシフタ3出力か
らレジスタ1の減算を指示した場合にはシフタ3の出力
をそのまま出力し、演算モード制御回路4がレジスタ1
からシフタ3出力の減算を指示した場合にはシフタ
出力の1の補数をとって出力する補数器、7は演算モー
ド制御回路4出力の最下位ビットへのキャリー(C)と
補数器5と補数器6との加算を実行する加算器、8は、
シフタ3の出力が最上位ビットを符号ビットとする8ビ
ットデータで表現できない場合にレジスタ2の符号によ
って正、負方向のオーバーフローを検出し、シフタでオ
ーバーフローが発生しない時に加算器6の出力が最上位
ビットを符号とする8ビットデータで表現できない場合
に加算器6の出力の符号によって、正、負方向のオーバ
ーフローを検出するオーバーフロー検出回路、9は、オ
ーバーフロー検出回路7がシフタ3または加算器6の負
方向へのオーバーフローを検出した場合には最小値
(X’FF’)を出力し、シフタ3または加算器6の正
方向のオーバーフローを検出した場合には最大値(X’
7F)を出力する最大値最小値回路である。
【0005】以上のように構成された従来のシフト加減
算装置について、以下その動作について説明する。 <演算>まずレジスタ2に格納されたデータに対してシ
フタ3で、nビットのシフトを実行する。シフト結果は
図5に示すように、8ビットのデータとして出力され
る。
【0006】補数器5では、演算モード制御回路4が加
算またはレジスタ1からシフタ3出力の減算を指示した
場合にはレジスタ1の出力をそのまま出力し、演算モー
ド制御回路4がシフタ3出力からレジスタ1の減算を指
示した場合にはレジスタ1の出力の1の補数をとって出
力される。
【0007】一方、補数器6では、演算モード制御回路
4が加算またはシフタ3出力からレジスタ1の減算を指
示した場合にはシフタ3の出力をそのまま出力し、演算
モード制御回路4がレジスタ1からシフタ3出力の減算
を指示した場合にはシフタ1の出力の1の補数をとって
出力される。
【0008】また、演算モード制御回路4で、減算を指
示する場合には最下位ビットへのキャリー(C)を1に
セットする。
【0009】次に、加算器7で、補数器5の出力と、補
数器6の出力と演算モード制御回路4の出力である最下
位ビットへのキャリー(C)を加算する。 <最大値最小値設定>オーバーフロー検出回路8は、次
に示す場合にオーバーフローを検出する。1)シフタ3の
オーバーフロー 左シフトを実行した際に27ビットより上位側に符号ビッ
ト以外のビットがシフトアウトされた場合(シフト結果
の27ビット以上のビットの排他的論理和が1) 例1)・正方向のオーバーフロー 00100001 を左に3ビットシフトすると、00100001000 27ビット以上のビットが 0010となるため、オーバーフ
ロー ・負方向のオーバーフロー 10100001 を左に3ビットシフトすると、10100001000 27ビット以上のビットが 1010となるため、オーバーフ
ロー 2)加算器のオーバーフロー 加算を実行した際に27を符号とするデータで結果が表現
できない場合(27からのキャリーと26からのキャリーの
排他的論理和が1) 例2)・正方向のオーバーフロー 01000000 + 01000000 = 10000000 27からのキャリーが0、26からのキャリーが1 ・負方向のオーバーフロー 10000000 + 11111111 = 101111111 27からのキャリーが1、26からのキャリーが0 最大値最小値回路9は、オーバーフロー検出回路が正方
向のオーバーフローを検出した場合には、最大値(b'011
11111')を出力し、負方向のオーバーフローを検出した
場合には最小値(b'11111111')を出力し、その他の場合
には加算器の出力をそのまま出力する。
【0010】
【発明が解決しようとする課題】しかしながら上記のよ
うな構成では、演算モードにかかわらず一旦シフタでオ
ーバーフローが発生するとシフタに入力したデータの符
号によって加算器の出力側に付加した最大値最小値設定
回路8が最大値または最小値を出力するので、シフト付
きの減算を実行した時にシフタでオーバーフローが発生
した場合には、例3に示すように、シフト演算結果が正
の方向にオーバーフローしたにもかかわらず、最小値を
出力したり、例4に示すように負の方向にオーバーフロ
ーしたにもかかわらず、最大値を出力する場合があっ
た。また、例5に示すようにシフタで発生したオーバー
フローが加算器での演算によってオーバーフローしない
値になる場合にも、最大値または最小値を出力してしま
うという問題点を有していた。
【0011】 例3)・b'10111111'を左に2ビットシフト → b'1011111100' シフト演算結果は負の方向にオーバーフロー ・b'00000100'からシフト結果を減算 → b'00000100' - b'1011111100' = b'0100001000' 演算結果は正の方向にオーバーフロー 例4)・b'01111111'を左に2ビットシフト → b'0111111100 シフト演算結果は正の方向にオーバーフロー ・b'00000100'からシフト結果を減算 → b'00000100' - b'0111111100' = b'1000001000' シフト演算結果は負の方向にオーバーフロー 例5)・b'10000000'を左に1ビットシフト → b'100000000' シフト演算結果は負の方向にオーバーフロー ・b'01111111'とシフト結果を加算 → b'01111111' + b'100000000' = b'111111111' シフト演算結果、27ビットを符号とする8ビットデータ
で表現可能(オーバーフローしない) 本発明は上記問題点に鑑み、オーバーフローに対して正
確に最大値または最小値を設定するシフト加減算装置を
提供することを目的とする。
【0012】また、シフタで右シフトを実行した場合に
は、下位ビット側に桁落ちした(シフトアウトされた)
データを無視して加減算を実行するため、常に切捨てが
実行されるという問題点を有していた。
【0013】本発明は上記問題点に鑑み、右シフト時に
桁落ちしたデータが最下位ビットの1/2より大きい場合
には切上げを実行し、それ未満の時には切捨てを実行
し、ちょうど1/2の時はゼロ方向への丸めを実行するシ
フト加減算装置を提供することを目的とする。
【0014】
【課題を解決するための手段】上記問題点を解決するた
めに、本願請求項1記載のシフト加減算装置は、mビッ
トからなる2つのデータA、Bを入力とし、前記データ
Bを算術シフトし上位側に1ビット付加したm+1ビッ
トで構成されるデータB’として出力するシフタと、前
記データAと前記データB’を入力とし加算または減算
を行いmビットのデータを出力する加減算器と、前記加
減算器に演算モードを指示する演算モード制御回路と、
前記シフタでの算術左シフト結果がオーバーフローしm
+1ビットでは正しく表現出来なくなった場合または前
記加減算器での演算結果がオーバーフローしmビットで
は正しく表現出来なくなった場合にこれを検出するオー
バーフロー検出回路と、前記オーバーフロー検出回路が
前記シフタでのオーバーフローを検出し前記演算モード
制御回路が前記データA+前記データB’または前記デ
ータB’− 前記データAを指示した場合で前記データ
Bが正数の場合には前記加減算器での演算結果にかかわ
らず最大値を出力することを指示し、前記オーバーフロ
ー検出回路が前記シフタでのオーバーフローを検出し前
記演算モード制御回路が前記データA+前記データB’
または前記データB’− 前記データAを指示した場合
で前記データBが負数の場合には前記加減算器での演算
結果にかかわらず最小値を出力することを指示し、前記
オーバーフロー検出回路が前記シフタでのオーバーフロ
ーを検出し前記演算モード制御回路が前記データA−前
記データB’を指示した場合で前記データBが正数の場
合には前記加減算器での演算結果にかかわらず最小値を
出力することを指示し、前記オーバーフロー検出回路が
前記シフタでのオーバーフローを検出し前記演算モード
制御回路が前記データA−前記データB’を指示した場
合でデータBが負数の場合には前記加減算器での演算結
果にかかわらず最大値を出力することを指示し、前記オ
ーバーフロー検出回路が前記シフタでのオーバーフロー
を検出せず前記加減算器で正方向へのオーバーフローを
検出した場合には最大値を出力することを指示し、前記
オーバーフロー検出回路が前記シフタでのオーバフロー
を検出せず前記加減算器での負方向へのオーバーフロー
を検出した場合には最小値を出力することを指示する最
大値最小値指示回路と、前記加減算器出力に接続され、
前記最大値最小値指示 回路から最大値もしくは最小値出
力の指示があった場合にはその指示に応じてmビットで
表現される最大値、最小値を出力し、指示がない場合に
は前記加減算器での演算結果を出力する最大値最小値回
という構成を備えたものである。また請求項2記載の
シフト加減算装置は、シフト加減算装置において前記加
減算器が最下位ビットにキャリーイン入力を持つ加算器
と前記シフタ出力に接続され1の補数処理を行う補数器
とから構成され、さらに前記シフタで算術右シフトを実
行した時に下位側にシフトアウトされて切り捨てられた
ビットの最上位ビットが1の場合には丸め処理を指示す
る丸め指示回路と、前記演算モード制御回路が前記デー
タA+前記データB’の演算すなわち前記補数器に対し
ては補数処理をしないことを指示しかつ前記丸め指示回
路が丸めを指示した場合、及び前記演算モード制御回路
が前記データA−前記データB’の演算すなわち前記補
数器に対して補数処理をすることを指示しかつ前記丸め
指示回路が丸めを指示しない場合にのみ前記キャリーイ
ン入力を1とする論理回路とを有することを特徴とする
ものである。
【0015】
【作用】本発明は上記した構成によってシフタでオーバ
ーフローが発生した場合には、加算器で加算を実行する
か減算を実行するかによって最大値最小値指示回路が最
大値最小値回路が出力する値を指示するするため、常に
シフト加減算結果のオーバフローに対応した値が出力さ
れることとなる。
【0016】また、シフタは上位側に1ビット以上のデ
ータを付加したデータを出力し、この出力と他のデータ
の加算または減算を実行するため、一旦シフタで発生し
たオーバーフローがその後に連続する加減算によって、
オーバーフローしない値にもどる場合も正確に演算を実
行することとなる。
【0017】
【実施例】以下本発明の一実施例のシフト加減算装置に
ついて、図面を参照しながら説明する。図1は本発明の
実施例におけるシフト加減算装置の構成図を示すもので
ある。図1において、図4と同一構成要素については同
一番号を付す。ここでは、従来例と同様に、最上位ビッ
ト(27の重みを持つビット)を符号ビットとする2の
補数体系の8ビットデータ(27から20までの重みを持
つデータで表現する)を例に挙げて説明する。図1にお
いて、3aは図2に示すようにレジスタ2出力を左また
は右に算術シフトし、9ビットのデータを出力するシフ
タで、右シフト時には上位側から符号ビットを挿入して
シフトを実行する。7aは補数器5の出力を上位側に1
ビット符号拡張した9ビットのデータと補数器6の出力
である9ビットのデータと、演算モード制御回路4出力
の最下位からのキャリービットを加算する加算器、8a
は、シフタ3の出力が最上位ビットを符号ビットとする
9ビットデータで表現できない場合にレジスタ2の符号
によって正、負方向のオーバーフローを検出し、シフタ
でオーバーフローが発生しない時に加算器7aの出力が
最上位ビットを符号とする8ビットデータで表現できな
い場合に加算器7aの出力の符号によって、正、負方向
のオーバーフローを検出するオーバーフロー検出回路、
10はオーバーフロー検出回路8aがシフタのオーバー
フローを検出し、演算モード制御回路4が加算またはシ
フタ3a出力からレジスタ1の減算を指示した場合でレ
ジスタ2の出力が正数の場合には最大値を出力すること
を指示し、シフタオーバーフロー検出回路8aがシフタ
のオーバーフローを検出し、演算モード制御回路4が加
算またはシフタ3出力からレジスタ1の減算を指示した
場合でレジスタ2出力が負数の場合には最小値を出力す
ることを指示し、オーバーフロー検出回路8aがシフタ
のオーバーフローを検出し、演算モード制御回路4がレ
ジスタ1からシフタ3出力の減算を指示した場合でレジ
スタ2出力が正数の場合には最小値を出力することを指
示し、オーバーフロー検出回路8aがシフタのオーバー
フローを検出し、演算モード制御回路がレジスタ1から
シフタ3出力の減算を指示した場合でレジスタ2出力が
負数の場合には最大値を出力することを指示し、オーバ
ーフロー検出回路8aがシフタのオーバーフローを検出
しない場合に加算器のオーバーフローを検出し、加算器
7出力が正数の場合には最大値を出力することを指示
し、オーバーフロー検出回路8aがシフタのオーバーフ
ローを検出しない場合に加算器のオーバーフローを検出
し、加算器出力が負数の場合には最小値を出力すること
を指示する最小値最大値指示回路、11は最大値最小値
指示回路10出力が最大値を出力することを指示した場
合には最大値(x’7F’)を出力し、最大値最小値指
示回路10出力が最小値を出力することを指示した場合
には最小値(x’FF’)を出力する最大値最小値回路
である。
【0018】以上のように構成されたシフト加減算装置
について動作を説明する前に、本発明の最大値最小値設
定について説明する。 <最大値最小値設定>2つの入力A、Bに対して、Bを
シフトして(以下では、シフト結果をB’とする)Aと
加減算する場合A±B’またはB’−Aについて説明す
る。
【0019】2つのデータの範囲は −27≦A≦27−1 −27≦B≦27−1 であり、Bに対してnビットシフトを実行したデータ
B’は (−27)×2n≦B’≦(27−1)×2n である。(−∞<n<∞) したがって、−∞<B’<∞ 以上のデータ範囲より、A±B’またはB’−Aを精度
を落とすことなく演算しておき、その演算結果に対して
データを8ビットで表現するための最大値最小値設定を
行うためには、無限の精度のシフタと加減算器が必要と
なる。
【0020】ところが演算を詳細に調査すると、以下の
結果が得られる。 (1)B’で正方向のオーバーフローが発生した場合 a)A+B’に関して A≧0ならば、演算結果は常に正のオーバーフロー A<0ならば、−27≦Aであるため、B’≦27+27
−1 すなわちB’≦28−1ならば、シフタで一旦オーバー
フローが発生しても、その後の加減算によってオーバー
フローしないデータにもどる場合がある。
【0021】 B’>28−1ならば、常に正のオーバーフロー b)A−B’に関して A<0ならば、演算結果は常に負のオーバーフロー A≧0ならば、A≦27−1であるため、B’≦27−1
+27 すなわちB’≦28−1ならば、シフタで一旦オーバー
フローが発生しても、その後の加減算によってオーバー
フローしないデータにもどる場合がある。
【0022】 B’>28−1ならば、常に負のオーバーフロー c)B’−Aに関して A<0ならば、演算結果は常に正のオーバーフロー A≧0ならば、A≦27−1であるため、B’≦27−1
+27−1 すなわちB’≦28−1ならば、シフタで一旦オーバー
フローが発生しても、その後の加減算によってオーバー
フローしないデータにもどる場合がある。
【0023】B’>28ならば、常に正のオーバー
フロー (2)B’で負方向のオーバーフローが発生した場合 a)A+B’に関して A<0ならば、演算結果は常に負のオーバーフロー A≧0ならば、A≦27−1であるため B’≧−(27−1)−27 すなわちB’≧−28+1ならば、シフタで一旦オーバ
ーフローが発生しても、その後の加減算によってオーバ
ーフローしないデータにもどる場合がある。
【0024】 B’<−28+1ならば、常に負のオーバーフロー b)A−B’に関して A≧0ならば、演算結果は常に正のオーバーフロー A<0ならば、A≧−27であるため、B’≧−(27
7−1) すなわちB’≧−28+1ならば、シフタで一旦オーバ
ーフローが発生しても、その後の加減算によってオーバ
ーフローしないデータにもどる場合がある。
【0025】 B’<−28+1ならば、常に正のオーバーフロー c)B’−Aに関して A≧0ならば、演算結果は常に負のオーバーフロー A<0ならば、A≧−27であるため、B’≧−27−2
7 すなわちB’≧−28ならば、シフタで一旦オーバーフ
ローが発生しても、その後の加減算によってオーバーフ
ローしないデータにもどる場合がある。
【0026】 B’<−28ならば、常に負のオーバーフロー 以上の結果より、次の事実が得られる。 ・シフト結果を少なくとも上位側に1ビット付加して2
8まで保持したデータに対して加減算を実行することに
よって、シフタで発生したオーバーフローがその後の加
減算によってオーバーフローしないデータにもどる場合
も正確に実現可能である。 ・シフタで28ビットより上位にオーバーフローが発生
した場合には、オーバーフローを発生したデータの符号
(シフタでのオーバーフローの方向)と、演算モード
(A−B’かA+B’かB’−Aか)によって、加算器
の出力の符号を一意に決定できるため、加算器出力に対
する最大値最小値設定が正確に実現可能である。
【0027】以下上記の事実に基づいて図1及び図2を
用いてシフト加減算装置の動作を説明する。 <演算>まずレジスタ2に格納されたデータに対してシ
フタ3aで、nビットのシフトを実行する。シフト結果
は図2に示すように、9ビットのデータとして出力され
る。
【0028】補数器5では、演算モード制御回路4が加
算またはレジスタ1からシフタ3a出力の減算を指示し
た場合にはレジスタ1の出力をそのまま出力し、演算モ
ード制御回路4が シフタ3a出力からレジスタ1の
減算を指示した場合にはシフタ1の出力の1の補数をと
って出力される。
【0029】一方補数器6では、演算モード制御回路4
が加算またはシフタ3a出力からレジスタ1の減算を指
示した場合にはシフタ3aの出力をそのまま出力し、演
算モード制御回路4がレジスタ1からシフタ3a出力の
減算を指示した場合にはシフタ1の出力の1の補数をと
って出力される。
【0030】また、演算モード制御回路4で減算を指示
した場合には最下位ビットへのキャリーを1にセットす
る。
【0031】次に、加算器7aで、補数器5の出力と、
補数器6の出力と演算モード制御回路4出力の最下位ビ
ットへのキャリーを加算する。 <最大値最小値指示>オーバーフロー検出回路8aは、
次に示す場合にオーバーフローを検出する。1)シフタ3
aのオーバーフロー左シフトを実行した際に28ビットよ
り上位側に符号ビット以外のビットがシフトアウトされ
た場合(シフト結果の28ビット以上のビットの排他的論
理和が1)。
【0032】 例6)・正方向のオーバーフロー 00100001 を左に3ビットシフトすると、00100001000 28ビット以上のビットが 001 となるため、オーバーフロー ・負方向のオーバーフロー 10100001 を左に3ビットシフトすると、10100001000 28ビット以上のビットが 101 となるため、オーバーフロー ・ただし、00100001 を左に2ビットシフトしても 0010000100となり、28ビット以上のビットが 00 であるため、オーバーフ ローではない。 2)加算器のオーバーフロー 加算を実行した最に27を符号とするデータで結果が表
現できない場合 (出力の28ビットと、出力の27ビットとの排他的論理
和が1) また、最大値最小値指示回路10は、オーバーフロー検
出回路8aが検出したオーバーフローに対して次の条件
で最大値を出力することを指示する。以下では、シフタ
3a出力をB’とし、レジスタ1出力をAとする。
【0033】・演算モード制御回路4がA+B’または
B’−Aを指示した場合でシフタで正のオーバーフロー
(Bが正数)発生 ・演算モード制御回路4がA−B’を指示した場合でシ
フタで負のオーバーフロー(Bが負数)発生 ・シフタでオーバーフローを発生しない場合に加算器7
aで正のオーバフロー発生
【0034】 ・演算モード制御回路4がA+B’またはのB’−Aを
指示した場合でシフタで負のオーバーフロー(Bが負
数)発生 ・演算モード制御回路4がA−B’を指示した場合でシ
フタで正のオーバーフロー(Bが正数)発生 ・シフタでオーバーフローを発生しない場合に加算器7
aで負のオーバーフロー発生 <最大値最小値設定>最大値最小値回路11は、最大値
最小値指示回路が最大値を指示した場合には、最大値
(b'01111111')を出力し、最小値を指示した場合には最
小値(b'11111111')を出力し、その他の場合には加算器
の出力をそのまま出力する。
【0035】以上のように本実施例によれば、シフタが
有効桁数より上位側に1ビット以上データを多く出力す
る構成にし、シフタで発生したオーバーフローに関して
は加算器での演算モードとオーバーフローの方向を考慮
して、最大値最小値設定を行う最大値最小値回路を設け
ることにより、小さいハードウエアで無限大の精度でシ
フト加減算を実行した後に最大値最小値設定を行うのと
同様の演算結果を得ることができる。
【0036】以下本発明の第2の実施例について図面を
参照しながら説明する。図3は本発明の第2の実施例を
示すシフト加減算装置の構成図である。図3において、
図1と同一構成要素については同一番号を付す。 ここ
では、従来例と同様に、最上位ビット(27の重みを持
つビット)を符号ビットとする2の補数体系の8ビット
データ(27から20までの重みを持つデータで表現す
る)を例に挙げて説明する。図3において、7bは、後
述の丸め指示回路12の出力と演算モード制御回路4出
力の最下位ビットへのキャリーの排他的論理和とレジス
タ1と補数器6の出力を加算する加算器、12はシフタ
3aの右シフト時に下位側にシフトアウトされて切捨て
られたビットの最上位ビットすなわち、シフタ出力の2
-1に位置するビット(以下丸めビットと呼ぶ)が1の時
に丸めのための加算を指示する信号を1にし、他の場合
に0にする丸め指示回路である。
【0037】図1と異なるのは演算をレジスタ1とシフ
タ出力の加算及びレジスタ1からシフタ出力の減算に限
定するとともに、シフタの下位側にシフトアウトされた
データの最上位ビットを保持する丸め指示回路12を設
け、丸め情報を含めた加算器7bへの最下位ビットへの
キャリーを生成するために、丸め指示回路12出力と演
算モード制御回路で指示したキャリービットとの排他的
論理和をとる回路を設けた点である。
【0038】以上のように構成されたシフト加減算装置
について動作を説明する前に、本発明の丸め方式ついて
切上げ、切捨てが発生する場合のそれぞれについて例を
挙げて説明する。 <切上げ>データA 00000001 と、データB 01000101
を3ビット右にシフトしたデータB’の加減算を実行す
る場合について説明する。
【0039】データ 01000101 を3ビット右にシフトす
ると、下位3ビット 101 が切り捨てられて、00001000
がシフタ出力として得られる。101 は最下位ビット20
ビットの1/2以上の数であるため、シフタ出力を切り
上げるために最下位ビットに1を加算することになる。
【0040】 この演算は、最下位からのキャリーを1にしてデータ
AとデータBの加算を実行した場合と等価である。
【0041】
【0042】この演算は、最下位からのキャリーを0に
してデータAと、シフタ出力(B’)の反転を加算をし
た場合と等価である。 <切捨て>データA 00000001 と、データB 01000010
を3ビット右にシフトしたデータB’の加減算を実行す
る場合について説明する。
【0043】データ 01000010 を3ビット右にシフトす
ると、下位3ビット 010 が切捨てられて、00001000が
シフタ出力として得られる。010 は最下位ビット20
ットの1/2未満の数であるため、シフタ出力を切り捨
てる。 (1)加算時 この演算は、丸めなしの加算と等価である。 (2)減算時 ∧B’は、B’の1の補数を表す。
【0044】この演算は、丸めなしの減算と等価であ
る。以下上記の事実に基づいて図1及び図2を用いてシ
フト加減算装置の動作を説明する。<丸め付き演算>ま
ずレジスタ2に格納されたデータに対してシフタ3a
で、nビットのシフトを実行する。シフト結果は図2に
示すように、9ビットのデータとして出力される。
【0045】補数器6では、演算モード制御回路4が加
算を指示した場合にはシフタ3aの出力をそのまま出力
し、演算モード制御回路4がレジスタ1からシフタ3出
力の減算を指示した場合にはシフタ3aの出力の1の補
数をとって出力される。
【0046】一方、丸め指示回路12では、丸めビット
を保持し、このビットにより丸めのための加算を指示す
る。(ただし、丸めビットは左シフト時には常にゼ
ロ。)次に、演算モード制御回路4で出力した最下位ビ
ットへのキャリーと丸め指示回路12出力の排他的論理
和(以下この出力をC’とする)をとって、加算器7b
でレジスタ1と補数器6の出力とC’との加算を実行す
る。 <最大値最小値指示>第1の実施例に同じ。 <最大値最小値設定>第1の実施例に同じ。
【0047】以上のように本実施例によれば、シフタで
右シフトを実行する際に桁落ちしたデータの最上位ビッ
トと、減算時に生成する加算器の最下位ビットへのキャ
リーの2つの情報を用いて実際に加算器に入力する最下
位ビットへのキャリーを決定するだけで、大きいハード
ウエアを付加することなく丸めを含めた加減算を実行す
ることができ、常に演算の精度を最下位ビットの1/2に
保って演算を行うことができる。
【0048】なお、第1、第2の実施例において、シフ
タ3aを、8ビットのデータの上位側に1ビットのデー
タを付加した9ビットのデータを出力する構成とした
が、2ビット以上のデータを付加したデータを出力する
kビット(k>9)の構成として、シフタで発生するオ
ーバーフローを、kビット以上の排他的論理和としても
よい。
【0049】
【発明の効果】以上のように本願請求項1記載の発明に
よれば、mビットの入力データを算術シフトしその結果
を上位側に1ビット付加したm+1ビットデータで出力
するシフタと、m+1ビットの入力を持ちmビットの出
力を持つ加減算器と、前記シフタでの算術左シフト結果
がオーバーフローしm+1ビットでは正しく表現出来な
くなった場合または前記加減算器での演算結果がオーバ
ーフローしmビットでは正しく表現出来なくなった場合
にこれを検出するオーバーフロー検出回路と、前記加減
算器出力に接続され最大値もしくは最小値を出力する最
大値最小値回路と設け、前記シフタでの算術左シフトで
オーバーフローが発生した場合にはこれに続く前記加減
算器での演算処理を行ってもその結果がmビット内に収
まることは無いので直ちにオーバーフローと判断し前記
最大値最小値回路から最大値もしくは最小値を出力し、
前記シフタでオーバーフローが発生しなかった場合には
前記加減算器で演算を行いこの結果がオーバーフローし
た場合には前記最大値最小値回路から最大値もしくは最
小値を出力する。これにより前記最大値最小値回路から
出力される値は、無限ビットの出力を持つシフタとこれ
に接続され入力は無限ビット出力はmビットの加減算器
での演算を行った後にオーバーフロー判断を行い、オー
バーフローが発生した場合にはmビットで表現できる最
大値もしくは最小値を出力する場合と等価なものとなり
その効果は極めて大である。 また、請求項2の発明によ
れば、前記加減算器を1の補数器と最下位からのキャリ
ーインビットを持つ加算器で構成し、前記シフタで下位
側にシフトアウトされて切り捨てられたビットの最上位
ビットと演算モード制御回路の出力からキャリーインビ
ットを生成することにより、1ビットのキャリーイン入
力だけを持つ加算器で1の補数から2の補数を生成する
処理と丸め処理を等価的に同時に処理することが実現で
きることになりその効果は極めて大である。
【図面の簡単な説明】
【図1】本発明の第1の実施例におけるシフト加減算装
置の構成図である。
【図2】同実施例におけるシフタ入出力関係説明のため
のシフタ例を示す図である。
【図3】本発明の第2の実施例におけるシフト加減算装
置の構成図である。
【図4】従来のシフト加減算装置の構成図である。
【図5】従来のシフタ動作説明のためのシフタの入出力
図である。
【符号の説明】
1、2 レジスタ 3、3a シフタ 4 演算モード制御回路 5、6 補数器 7、7a、7b 加算器 8、8a オーバーフロー検出回路 9、11 最大値最小値回路 10 最大値最小値指示回路 12 丸め指示回路
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 7/38 G06F 7/00

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 mビットからなる2つのデータA、Bを
    入力とし、前記データBを算術シフトし上位側に1ビッ
    ト付加したm+1ビットで構成されるデータB’として
    出力するシフタと、前記データAと前記データB’を入
    力とし加算または減算を行いmビットのデータを出力す
    る加減算器と、前記加減算器に演算モードを指示する演
    算モード制御回路と、前記シフタでの算術左シフト結果
    がオーバーフローしm+1ビットでは正しく表現出来な
    くなった場合または前記加減算器での演算結果がオーバ
    ーフローしmビットでは正しく表現出来なくなった場合
    にこれを検出するオーバーフロー検出回路と、前記オー
    バーフロー検出回路が前記シフタでのオーバーフローを
    検出し前記演算モード制御回路が前記データA+前記デ
    ータB’または前記データB’− 前記データAを指示
    した場合で前記データBが正数の場合には前記加減算器
    での演算結果にかかわらず最大値を出力することを指示
    し、 前記オーバーフロー検出回路が前記シフタでのオーバー
    フローを検出し前記演算モード制御回路が前記データA
    +前記データB’または前記データB’− 前記データ
    Aを指示した場合で前記データBが負数の場合には前記
    加減算器での演算結果にかかわらず最小値を出力するこ
    とを指示し、前記オーバーフロー検出回路が前記シフタ
    でのオーバーフローを検出し前記演算モード制御回路が
    前記データA−前記データB’を指示した場合で前記デ
    ータBが正数の場合には前記加減算器での演算結果にか
    かわらず最小値を出力することを指示し、前記オーバー
    フロー検出回路が前記シフタでのオーバーフローを検出
    し前記演算モード制御回路が前記データA−前記データ
    B’を指示した場合でデータBが負数の場合には前記加
    減算器での演算結果にかかわらず最大値を出力すること
    を指示し、前記オーバーフロー検出回路が前記シフタで
    のオーバーフローを検出せず前記加減算器で正方向への
    オーバーフローを検出した場合には最大値を出力するこ
    とを指示し、前記オーバーフロー検出回路が前記シフタ
    でのオーバフローを検出せず前記加減算器での負方向へ
    のオーバーフローを検出した場合には最小値を出力する
    ことを指示する最大値最小値指示回路と、前記加減算器
    出力に接続され、前記最大値最小値指示回路から最大値
    もしくは最小値出力の指示があった場合にはその指示に
    じてmビットで表現される最大値、最小値を出力し、
    指示がない場合には前記加減算器での演算結果を出力す
    る最大値最小値回路とを有することを特徴とするシフト
    加減算装置。
  2. 【請求項2】 請求項1記載のシフト加減算装置におい
    て前記加減算器が最下位ビットにキャリーイン入力を持
    つ加算器と前記シフタ出力に接続され1の補数処理を行
    う補数器とから構成され、さらに前記シフタで算術右シ
    フトを実行した時に下位側にシフトアウトされて切り捨
    てられたビットの最上位ビットが1の場合には丸め処理
    を指示する丸め指示回路と、前記演算モード制御回路が
    前記データA+前記データB’の演算すなわち前記補数
    器に対しては補数処理をしないことを指示しかつ前記丸
    め指示回路が丸めを指示した場合、及び前記演算モード
    制御回路が前記データA−前記データB’の演算すなわ
    ち前記補数器に対して補数処理をすることを指示しかつ
    前記丸め指示回路が丸めを指示しない場合にのみ前記キ
    ャリーイン入力を1とする論理回路とを有することを特
    徴とするシフト加減算装置。
JP11828591A 1991-05-23 1991-05-23 シフト加減算装置 Expired - Lifetime JP3245884B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11828591A JP3245884B2 (ja) 1991-05-23 1991-05-23 シフト加減算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11828591A JP3245884B2 (ja) 1991-05-23 1991-05-23 シフト加減算装置

Publications (2)

Publication Number Publication Date
JPH04346125A JPH04346125A (ja) 1992-12-02
JP3245884B2 true JP3245884B2 (ja) 2002-01-15

Family

ID=14732888

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11828591A Expired - Lifetime JP3245884B2 (ja) 1991-05-23 1991-05-23 シフト加減算装置

Country Status (1)

Country Link
JP (1) JP3245884B2 (ja)

Also Published As

Publication number Publication date
JPH04346125A (ja) 1992-12-02

Similar Documents

Publication Publication Date Title
EP0973089B1 (en) Method and apparatus for computing floating point data
KR920005226B1 (ko) 부동 소수점 연산장치
US4700324A (en) Digital circuit performing an arithmetic operation with an overflow
JP3178746B2 (ja) 浮動小数点数のためのフォーマット変換装置
JPH04290122A (ja) 数値表現変換装置
JP3245884B2 (ja) シフト加減算装置
JPH0690668B2 (ja) ファジイ演算装置
US5528525A (en) Processor for determining shift counts based on input data
JP2558669B2 (ja) 浮動小数点演算装置
US6571264B1 (en) Floating-point arithmetic device
JP3253660B2 (ja) 数値丸め装置および数値丸め方法
US5260890A (en) Overflow detection system and its circuit for use in addition and subtraction
US5432727A (en) Apparatus for computing a sticky bit for a floating point arithmetic unit
JPS5856032A (ja) パイプライン演算装置
JP2645422B2 (ja) 浮動小数点演算処理装置
CA2045662C (en) Binary floating point arithmetic rounding in conformance with ieee 754-1985 standard
JP2856792B2 (ja) 浮動小数点数演算装置
JPH03217938A (ja) 浮動小数点丸め正規化装置
JP2558799B2 (ja) 浮動小数点正規化丸め装置
JP2512230B2 (ja) 演算処理装置
JPS5960637A (ja) 浮動小数点演算装置
JPH0427587B2 (ja)
JPH07120265B2 (ja) 2進浮動小数点乗算における丸め処理方式
JP3124286B2 (ja) 浮動小数点数演算装置
KR940008610B1 (ko) 고속 수렴 인자 결정 방법 및 프로세서

Legal Events

Date Code Title Description
FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071102

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20081102

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20091102

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20091102

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20111102

Year of fee payment: 10

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111102

Year of fee payment: 10