JP3115138B2 - 演算処理装置 - Google Patents

演算処理装置

Info

Publication number
JP3115138B2
JP3115138B2 JP04336485A JP33648592A JP3115138B2 JP 3115138 B2 JP3115138 B2 JP 3115138B2 JP 04336485 A JP04336485 A JP 04336485A JP 33648592 A JP33648592 A JP 33648592A JP 3115138 B2 JP3115138 B2 JP 3115138B2
Authority
JP
Japan
Prior art keywords
shift
input
maximum possible
shifter
bit
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 - Fee Related
Application number
JP04336485A
Other languages
English (en)
Other versions
JPH06187127A (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 JP04336485A priority Critical patent/JP3115138B2/ja
Priority to EP93116713A priority patent/EP0593073A1/en
Publication of JPH06187127A publication Critical patent/JPH06187127A/ja
Priority to US08/444,739 priority patent/US5528525A/en
Application granted granted Critical
Publication of JP3115138B2 publication Critical patent/JP3115138B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マイクロプロセッサや
ディジタル信号処理プロセッサなどにおける演算処理装
置に関するものである。
【0002】
【従来の技術】従来のマイクロプロセッサやディジタル
信号処理プロセッサにおいては、入力される2つのデー
タを処理するために、1なし数ステップの演算を行って
演算結果を得ている。以下に従来の演算処理装置につい
て説明する。
【0003】図3に従来の演算処理装置の構成図を示
す。1は算術論理を行なう演算器で、演算制御信号に従
って第一の入力と第二の入力の加算、あるいは減算など
を行うものである。2はシフタで、演算器から出力され
たデータをシフタ制御信号に従ってシフトするものであ
る。3はレジスタで、シフトされたデータを一時蓄えて
おくものである。
【0004】以上のように構成された演算処理装置につ
いて、以下その動作について説明する。たとえば2つの
入力が各々X,Yで表わされるとき Z=1/4X+Y …(1) で表わされる出力Zを得ることを考える。まず第一の入
力にXを与え、第二の入力に0を与え、算術論理演算器
1に制御信号として加算処理命令を与え、シフタ2で右
2ビットシフト命令を与えることで1/4Xを得ること
ができる。そして、次のステップで第一の入力にYを、
第二の入力に先程得られた1/4Xを与え、算術論理演
算器1に再び加算処理命令を与え、シフタ2に0ビット
シフト命令を与えることで(式1)で表わされるZを得
ることができる。このように、図3に示される構成では
(式1)のZを得るのに2ステップの制御を要する。
【0005】
【発明が解決しようとする課題】しかし、上記の従来の
構成では誤差の小さい演算処理結果を得るためには入力
されるデータの性質によって、入力されるデータにシフ
ト操作を施してから演算処理を行うのか、演算処理を行
ってからシフト操作を施すのかを判別し、シフト操作を
制御する必要があるという問題点を有していた。
【0006】すなわち、シフト操作をどこで行うかとい
う観点から見ると、(式1)は、たとえば次の3つの演
算方法がある。 Z=1/4(X+4Y) …(2) Z=1/2(1/2X+2Y) …(3) Z=1/4X+Y …(4) 図3で示される演算処理装置において、たとえば(式
2)の場合、Xと左2ビットシフト操作を施したYを加
算した後、右2ビットシフト操作を施してZを得ること
を示している。(式3)の場合、右1ビットシフト操作
を施したXと、左1ビットシフト操作を施したYを加算
した後、右1ビットシフト操作を施してZを得ることを
示している。(式4)の場合は(式1)と同一であり、
シフト操作は前述した通りである。(式2)から(式
4)の演算において、(式2)、(式3)、(式4)の
順でオーバーフローの発生する度合は小さくなるが、丸
め誤差は大きくなっていく。オーバーフローが発生せ
ず、かつ誤差の小さい最適な演算結果を得るためには、
入力データの性質(どれだけのビット数の左シフト操作
を行うとオーバーフローが発生するか。)を考慮して最
適な演算処理が行われるように、シフト操作をどこで行
うかをその都度、プログラムにより決定しなければなら
ないという問題点を有していた。
【0007】本発明は上記従来の問題点を解決するもの
で、入力データの性質に応じてシフト操作が自動的に行
われ、オーバーフローの起こらない、かつ、より誤差の
小さい、最適な演算処理結果を得るための演算処理装置
を提供することを目的とする。
【0008】
【課題を解決するための手段】この目的を達成するため
に、本発明の演算処理装置は、第一の入力データの性質
からシフト可能な最大のビット数を決定する第一の最大
可能シフト数決定部と、第二の入力データの性質からシ
フト可能な最大のビット数を決定する第二の最大可能シ
フト数決定部と、前記第一の入力データの係数をあらか
じめ設定してある第一の係数レジスタと、前記第二の入
力データに対する係数をあらかじめ設定してある第二の
係数レジスタと、前記第一および第二の最大可能シフト
数決定部の出力と前記第一および第二の係数レジスタの
値から操作シフト数を決定するシフト操作数決定部と、
前記シフト操作数決定部と第一の入力に接続される第一
のシフタと、前記シフト操作数決定部と第二の入力に接
続される第二のシフタと、前記第一のシフタと前記第二
のシフタに接続されている演算器と、前記演算器と前記
シフト操作数決定部に接続される第三のシフタとで構成
され、前記第一および第二の最大可能シフト数決定部
は、入力データの上位ビットから見て最初にビットが"
1"である位置を検出する最上位ビット検出器と、入力
データの符合ビットのうち最下位のビットを検出する最
下位符合ビット検出器と、前記最上位ビット検出器と前
記最下位符合ビット検出器の入力を選択して出力するセ
レクタと、前記セレクタに接続され前記入力データの最
大可能シフト数を算出する最大可能シフト数算出器とで
構成されたものである。
【0009】
【作用】本発明はこの構成によって、シフタにおけるシ
フト操作を入力データの性質に応じて自動的に制御する
ため、オーバーフローの発生しない、かつ誤差の小さい
演算処理を行うように作用する。
【0010】
【実施例】以下図面を参照しながら、本発明の演算処理
装置の一実施例について詳細に述べる。図1は本発明の
一実施例の演算処理装置のブロック図を示すものであ
る。図1において、11は第一の最大可能シフト数決定
部で、第一の入力に接続され、第一の入力データに対し
てオーバーフローを起こさずに左に何ビットシフトでき
るかを決定する。12は第二の最大可能シフト数決定部
で、第二の入力に接続され、第二の入力データに対して
オーバーフローを起こさずに左に何ビットシフトできる
かを決定する。
【0011】13は第一の入力に対する係数が設定され
ている第一の係数レシスタで、たとえば、第一の入力に
対する係数が1/4の場合”−2”、第一の入力に対す
る係数が4の場合”2”というように左方向へのシフト
数が、あらかじめ設定されている。14は第二の入力に
対する係数が設定されている第二の係数レジスタで、設
定は第一の係数レジスタと全く同様のものである。
【0012】15はシフト操作数決定部で、第一の最大
可能シフト数決定部11、第二の最大可能シフト数決定
部12、第一の係数レジスタ13、第二の係数レジスタ
14に接続され、シフト操作数を決定する。16は第一
のシフタで、シフト操作数決定部15と第一の入力に接
続され、第一の入力データに対してシフト動作を施す。
17は第二のシフタで、シフト操作数決定部15と第二
の入力に接続され、第二の入力データに対してシフト動
作を施す。18は演算器で、第一のシフタ16および第
二のシフタ17に接続され、算術論理演算を行う。19
は第三のシフタで、演算器18とシフト操作数決定部1
5に接続され、演算器18から出力されるデータに対し
てシフト操作を施す。
【0013】20は制御信号線で、第一の最大可能シフ
ト数決定部および第二の最大可能シフト数決定部と第三
のシフタ19に接続され、第一および第二の入力が2の
補数データの場合とバイナリデータの場合とで第一およ
び第二の最大可能シフト数決定部11および12と第三
のシフタ19における処理の切替え制御を行なう。
【0014】ここで第一および第二の最大可能シフト数
決定部11および12の構成を図2を用いて詳説する。
図2において、101は最上位ビット検出器で、入力が
バイナリデータの場合に”1”である最上位のビットを
検出する。102は最下位符号ビット検出器で、入力が
2の補数データの場合に最下位の符号ビットを検出す
る。103はセレクタで、最上位ビット検出器101お
よび最下位符号ビット検出器102に接続され、制御信
号20に従って出力を切替える。104は最大可能シフ
ト数算出器で、セレクタ103に接続されセレクタ10
3の選択出力から左シフト可能な最大のビット数を算出
する。
【0015】以上のように構成された本実施例の演算処
理装置について以下その動作を説明する。便宜上第一の
入力データをX、第二の入力データをY、シフタ19か
ら出力されるデータをZとする。ここでは演算式として Z=1/4X+Y …(5) で表わされる演算処理を例にとって説明する。
【0016】演算に先立ち、前もって演算器18の機能
を制御信号により、ADD(加算)またはSUB(減
算)にしておく。また、第一、第二の係数レジスタ1
3、14にそれぞれX,Yの左方向のビットシフト数を
あらかじめ設定する必要がある。ここで係数レジスタ1
3に設定する値をaとし、係数レジスタ14に設定する
値をbとすると、(式5)で表わされる演算処理の場
合、a=−2,b=0となる。シフト操作数決定部15
で d=a−b …(6) の演算を行い、2個の入力データに対する左方向のビッ
トシフト数の差をとる。この例の場合、d=−2であ
る。
【0017】今、入力データ幅をnとし、例としてn=
8(ビット)の2の補数データX=11110000、
Y=00000110が入力されるとする。データの入
力に際して制御信号線20に、第一の最大可能シフト数
決定部11および第二の最大可能シフト数決定部12そ
して第三のシフタ19において2の補数データに対応し
た処理が行なわれるように制御信号を与える。
【0018】まず第一の最大可能シフト数決定部11の
動作について述べる。入力が2の補数データなので、最
下位符号ビット検出器102での処理結果が必要であ
る。したがってセレクタ103は、制御信号20により
最下位符号ビット検出器102の出力を選択出力するよ
うに設定される。最下位符号ビット検出器102では、
入力データの最上位ビット(以降MSBと記す)が1の
場合(負のデータの場合)、MSBから下位ビットに向
けて順に見ていって最初にビットが1から0に変化する
のがLSB(0ビット目とする)から数えて何ビット目
であるかを検出し、一方、入力データのMSBが0の場
合(正または0の場合)、MSBから下位ビットに向け
て順に見ていって最初にビットが0から1に変化するの
がLSBから数えて何ビット目であるかを検出する。こ
こで検出値をp(ビット目)とする。X=111100
00の場合にMSBから見ていくと、7ビット目から4
ビット目までがすべて1で3ビット目になって初めて0
が現れる。このとき、4ビット目が最下位の符号ビット
と考えることができるので最下位符号ビット検出器10
2の検出値はp=4となる。最大可能シフト数算出器1
04では、 k=n−p−2 …(7) で表される演算を行い、左方向に最大何ビットシフト可
能かを算出する。X=11110000の場合、算出値
はk=2(ビット)となる。次に第二の最大可能シフト
数決定部12の動作は第一の最大可能シフト数決定部1
1と全く同様である。最下位符号ビット検出器102に
おける検出値はp=3で、最大可能シフト数算出器10
4での算出値はk=3(ビット)となる。以上より、第
一の最大可能シフト数決定部11の出力をAMAX、第
二の最大可能シフト数決定部の出力をBMAXとする
と、AMAX=2、BMAX=3となる。
【0019】次にシフト操作数決定部15の動作を説明
する。前述した通り、演算に先だって第一の入力に対す
る左方向のビットシフト数と第二の入力に対する左方向
のビットシフト数の差を算出し、d=−2となってい
る。そしてd、第一の最大可能シフト数決定部11出力
値AMAX、第二の最大可能シフト数決定部12出力値
BMAXよりシフタ16、17、19に向けて出力する
シフト操作数を算出するが、その算出方法を以下に説明
する。シフト操作数決定部15からシフタ16、17、
19に向けて出力するシフト操作数をそれぞれA、B、
Cとする。AとBはA−B=dの関係を保ち、かつA≦
AMAXかつB≦BMAXを満たしながら、可能な限り
大きな値を選ぶ。この例の場合、A=1、B=3とな
る。明らかにCはA、Bが決まると一意的にきまる。
まり、 C=a−A=b−B …(8) にて決まる。 この例の場合C=−3となり結局、 Z=1/8(2X+8Y) …() の演算処理を行うことになる。
【0020】シフタ16、17、19では、シフト操作
数決定部15で算出されたそれぞれのシフト操作数A、
B、Cに基づいて、データに対してシフト操作を行う。
ただし、シフタ19で行なう右方向へのシフトは制御信
号20により、第一および第二の入力が2の補数データ
の場合には算術シフトを行い、第一および第二の入力が
バイナリデータの場合には論理シフトを行う。この例の
場合は第一および第二の入力は2の補数データなので、
シフタ19では演算器18の出力に対して右方向に3ビ
ット算術シフトを施すことになる。
【0021】次の例として8ビットのバイナリデータX
=00100101、Y=00011111が入力され
るとする。制御信号線20には、第一の最大可能シフト
数決定部11および第二の最大可能シフト数決定部12
そして第三のシフタ19において、バイナリデータに対
応した処理が行われるように制御信号を与える。入力が
バイナリデータなので、第一の最大可能シフト数決定部
11のセレクタ103は最上位ビット検出器101の出
力を選択出力する。最上位ビット検出器101では、入
力データをMSB(最上位ビット)から順に見ていって
最初に1が現れるビットを検出する。検出されたビット
をLSB(0ビット目)から数えてrビット目とする。
X=00100101の場合r=5となる。そして最大
可能シフト数算出器104では、 k=n−r−2 …(10) で表される演算を行い、左方向に最大何ビットシフト可
能かを算出する。X=00100101の場合、算出値
はk=1(ビット)となる。次に第二の最大可能シフト
数決定部12の動作は第一の最大可能シフト数決定部1
1と全く同様である。Y=00011111の場合の最
上位ビット検出器101における検出値はr=4であ
る。そして最大可能シフト数算出器104での算出値は
k=2(ビット)となる。この場合、AMAX=1、B
MAX=2となる。
【0022】シフト操作数決定部15では、前の例と全
く同様に考えてAMAX、BMAX、dの値より、シフ
タ16、17、19に対するシフト操作数をそれぞれA
=0、B=2、C=−2と算出する。従って結局、 Z=1/4(X+4Y) …(11) の演算処理を行うことになる。この例では第一および第
二の入力がバイナリデータであるから、制御信号20に
従ってシフタ19では演算器18の出力データに対して
論理右シフトが施される。
【0023】以上のように本実施例によれば、入力デー
タのシフト可能なビット数を決定する最大可能シフト数
決定部11、12と、入力データに対する係数をビット
シフト数として設定している係数レジスタ13、14
と、係数レジスタ13、14の設定値と最大可能シフト
数決定部11、12の出力からシフト操作数を決定する
シフト操作数決定部15と、演算器18の入力部にシフ
タ16、17と出力部にシフタ19を設けることで、入
力データの性質に応じて自動的に、オーバーフローが発
生しない、かつ誤差の小さい演算処理結果を得ることが
できる。
【0024】なお、本実施例ではデータおよび処理系の
ビット幅は8ビットを仮定して説明したが、これらが任
意のビット幅であっても同様のことが実現できるのは言
うまでもない。
【0025】
【発明の効果】以上、説明したように、本発明の演算処
理装置によれば、入力データの性質に応じてALUの入
出力部のシフタにおけるシフト操作を自動的に制御する
ことによって、オーバーフローの発生しない、かつ、丸
め誤差の小さい演算処理結果を得ることが可能である。
【図面の簡単な説明】
【図1】本発明の一実施例の演算処理装置のブロック図
【図2】本発明の一実施例の演算処理装置における最大
可能シフト数決定部の構成を示すブロック図
【図3】従来例の演算処理装置のブロック図
【符号の説明】
11,12 最大可能シフト数決定部 13,14 係数レジスタ 15 シフト操作数決定部 16,17,19 シフタ 18 演算器 101 最上位ビット検出器 102 最下位符号ビット検出器 103 セレクタ 104 最大可能シフト数算出器
フロントページの続き (72)発明者 西尾 歳朗 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (56)参考文献 特開 平6−131157(JP,A) 特開 昭63−228330(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 7/38 - 7/54 G06F 7/00 G06F 17/10

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 第一の入力の最大可能シフト数を決定す
    る第一の最大可能シフト数決定部と、第二の入力の最大
    可能シフト数を決定する第二の最大可能シフト数決定部
    と、前記第一の入力に対する係数があらかじめ設定され
    ている第一の係数レジスタと、前記第二の入力に対する
    係数があらかじめ設定されている第二の係数レジスタ
    と、前記第一の最大可能シフト数決定部と前記第二の最
    大可能シフト数決定部と前記第一の係数レジスタと前記
    第二の係数レジスタに接続され、シフト操作数を決定す
    るシフト操作数決定部と、前記第一の入力と前記シフト
    操作数決定部に接続され、前記第一の入力に対してシフ
    ト操作を施す第一のシフタと、前記第二の入力と前記シ
    フト操作数決定部に接続され、前記第二の入力に対して
    シフト操作を施す第二のシフタと、前記第一のシフタと
    前記第二のシフタに接続され、算術論理演算を行なう演
    算器と、前記演算器と前記シフト操作数決定部に接続さ
    れ、前記演算器の出力にシフト操作を施す第三のシフタ
    で構成され、 前記第一および第二の最大可能シフト数決定部は、入力
    データの上位ビットから見て最初にビットが"1"である
    位置を検出する最上位ビット検出器と、入力データの符
    合ビットのうち最下位のビットを検出する最下位符合ビ
    ット検出器と、前記最上位ビット検出器と前記最下位符
    合ビット検出器の入力を選択して出力するセレクタと、
    前記セレクタに接続され前記入力データの最大可能シフ
    ト数を算出する最大可能シフト数算出器 とで構成された
    演算処理装置。
JP04336485A 1992-10-16 1992-12-17 演算処理装置 Expired - Fee Related JP3115138B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP04336485A JP3115138B2 (ja) 1992-12-17 1992-12-17 演算処理装置
EP93116713A EP0593073A1 (en) 1992-10-16 1993-10-15 A processor incorporating shifters
US08/444,739 US5528525A (en) 1992-10-16 1995-05-19 Processor for determining shift counts based on input data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP04336485A JP3115138B2 (ja) 1992-12-17 1992-12-17 演算処理装置

Publications (2)

Publication Number Publication Date
JPH06187127A JPH06187127A (ja) 1994-07-08
JP3115138B2 true JP3115138B2 (ja) 2000-12-04

Family

ID=18299623

Family Applications (1)

Application Number Title Priority Date Filing Date
JP04336485A Expired - Fee Related JP3115138B2 (ja) 1992-10-16 1992-12-17 演算処理装置

Country Status (1)

Country Link
JP (1) JP3115138B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113131948B (zh) * 2020-01-10 2024-07-16 瑞昱半导体股份有限公司 具有多模式的数据移位运算装置及方法

Also Published As

Publication number Publication date
JPH06187127A (ja) 1994-07-08

Similar Documents

Publication Publication Date Title
US5027308A (en) Circuit for adding/subtracting two floating point operands
US5010508A (en) Prenormalization for a floating-point adder
JPH02201645A (ja) 例外検出回路
JPS6360417B2 (ja)
JPH04290122A (ja) 数値表現変換装置
US5303175A (en) Floating point arithmetic unit
US5528525A (en) Processor for determining shift counts based on input data
JP3115138B2 (ja) 演算処理装置
EP0044450B1 (en) Digital adder circuit
EP0520378B1 (en) Overflow detection system and its circuit for use in addition and subtraction
JPH07168696A (ja) 2進数加算器のオーバフロー,アンダフロー処理回路
JPH0546363A (ja) 除算器
US5432727A (en) Apparatus for computing a sticky bit for a floating point arithmetic unit
JP2000311079A (ja) 実数演算器
JP3111695B2 (ja) 演算処理装置
JPS62197868A (ja) パイプライン構成の直線近似変換回路
JP2555577B2 (ja) 演算装置
US5483477A (en) Multiplying circuit and microcomputer including the same
JP3950920B2 (ja) 積和演算器及びデータ処理装置
JP2856792B2 (ja) 浮動小数点数演算装置
JP2664750B2 (ja) 演算装置及び演算処理方法
JP2734274B2 (ja) 浮動小数点加減算器
JP2558799B2 (ja) 浮動小数点正規化丸め装置
JP3077880B2 (ja) スティッキービット検出回路
JPS5960637A (ja) 浮動小数点演算装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees