JPH08292876A - 演算装置 - Google Patents
演算装置Info
- Publication number
- JPH08292876A JPH08292876A JP7098201A JP9820195A JPH08292876A JP H08292876 A JPH08292876 A JP H08292876A JP 7098201 A JP7098201 A JP 7098201A JP 9820195 A JP9820195 A JP 9820195A JP H08292876 A JPH08292876 A JP H08292876A
- Authority
- JP
- Japan
- Prior art keywords
- register
- word
- bit
- multiplication
- multiplier
- 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
Links
Abstract
(57)【要約】
【目的】 算術論理演算回路の分割により、半ワード長
の乗算2つを同時に実行可能にする。 【構成】 キャリー信号によって接続された2つのAL
Uとこの入力に接続された乗算結果レジスタと被乗数レ
ジスタとこのALUの加算制御を行なう制御信号に接続
される乗数レジスタとから構成される。シフタは演算を
2分割する場合に上位側から4分の1の位置のビットと
2分の1のビットをそれぞれ半ワード長だけ離れたビッ
ト位置にシフトする。1ワード長と半ワード長の乗算と
では、2つのALUのキャリーの接続とシフタのシフト
するビット位置及び乗数からの加算制御の信号を切り替
える。
の乗算2つを同時に実行可能にする。 【構成】 キャリー信号によって接続された2つのAL
Uとこの入力に接続された乗算結果レジスタと被乗数レ
ジスタとこのALUの加算制御を行なう制御信号に接続
される乗数レジスタとから構成される。シフタは演算を
2分割する場合に上位側から4分の1の位置のビットと
2分の1のビットをそれぞれ半ワード長だけ離れたビッ
ト位置にシフトする。1ワード長と半ワード長の乗算と
では、2つのALUのキャリーの接続とシフタのシフト
するビット位置及び乗数からの加算制御の信号を切り替
える。
Description
【0001】
【産業上の利用分野】本発明は、分割可能な構成の演算
器において繰り返して加算を行うことで2系統の乗算を
並列に実行する演算装置に関するものである。
器において繰り返して加算を行うことで2系統の乗算を
並列に実行する演算装置に関するものである。
【0002】
【従来の技術】一般に乗算は加算を繰り返すことによっ
て実行することができる。例えば、それぞれが8ビット
長の被乗数Xと乗数YについてXとYの積を求める場合
は、乗算の途中結果を格納する16ビットのレジスタを
設けておいて、このレジスタに加算結果をシフトしなが
ら格納していく。まず、レジスタには初期値として0ク
リアしておく。被乗数Xとこのレジスタの上位側の8ビ
ットに対して、乗数Yの最下位ビットが0の場合は加算
をせずにレジスタの値をそのまま通過させ1の場合には
加算を行う。この加算結果とレジスタの下位側7ビット
を合わせたものを右シフトして再度レジスタに格納する
ことで乗数Yの1ビット分の演算が実行される。これを
乗数のビット幅(8回)繰り返すことで8ビットの乗算
を行うことができる。
て実行することができる。例えば、それぞれが8ビット
長の被乗数Xと乗数YについてXとYの積を求める場合
は、乗算の途中結果を格納する16ビットのレジスタを
設けておいて、このレジスタに加算結果をシフトしなが
ら格納していく。まず、レジスタには初期値として0ク
リアしておく。被乗数Xとこのレジスタの上位側の8ビ
ットに対して、乗数Yの最下位ビットが0の場合は加算
をせずにレジスタの値をそのまま通過させ1の場合には
加算を行う。この加算結果とレジスタの下位側7ビット
を合わせたものを右シフトして再度レジスタに格納する
ことで乗数Yの1ビット分の演算が実行される。これを
乗数のビット幅(8回)繰り返すことで8ビットの乗算
を行うことができる。
【0003】以上の中の加算の演算は、通常はALUと
呼ぶ算術論理演算回路によって実行するが、この加算の
ビット幅を可変にすることで演算精度を変えたり演算速
度を変えたりすることができる。従来、2分割可能で、
倍精度の演算を高速化する例として、例えば特開昭62
−297932号公報に開示されているような演算装置
がある。この演算装置は2つのALUの間でキャリーや
シフトの演算のための接続をした例である。他の例とし
ては、特開平1−251134号公報に開示されている
ような情報処理装置では、分割可能な演算器によって半
ワード長の乗算時間を2分の1に短縮する。これは、2
分割した演算器において2つの部分積を同時に求めるこ
とで可能となる。
呼ぶ算術論理演算回路によって実行するが、この加算の
ビット幅を可変にすることで演算精度を変えたり演算速
度を変えたりすることができる。従来、2分割可能で、
倍精度の演算を高速化する例として、例えば特開昭62
−297932号公報に開示されているような演算装置
がある。この演算装置は2つのALUの間でキャリーや
シフトの演算のための接続をした例である。他の例とし
ては、特開平1−251134号公報に開示されている
ような情報処理装置では、分割可能な演算器によって半
ワード長の乗算時間を2分の1に短縮する。これは、2
分割した演算器において2つの部分積を同時に求めるこ
とで可能となる。
【0004】
【発明が解決しようとする課題】上記従来の演算装置で
は、乗算の演算精度が小さくてよい場合に効率のよい乗
算ができない。特開昭62−297932号公報の例で
は、単精度の演算装置が2倍必要になっておりハードウ
エア量が大きい。また特開平1−251134号公報4
の例では、乗算用のデータは1ワードの半分に格納して
与えており、残る半分のデータは使われないので、演算
装置に対するデータの入出力の半分しか使っておらず入
出力の効率が悪い。例えば8ビットのデータが2つずつ
外部の記憶装置に格納されている場合、16ビット長の
演算装置に対して半分ずつに切り出して与えなければな
らない。
は、乗算の演算精度が小さくてよい場合に効率のよい乗
算ができない。特開昭62−297932号公報の例で
は、単精度の演算装置が2倍必要になっておりハードウ
エア量が大きい。また特開平1−251134号公報4
の例では、乗算用のデータは1ワードの半分に格納して
与えており、残る半分のデータは使われないので、演算
装置に対するデータの入出力の半分しか使っておらず入
出力の効率が悪い。例えば8ビットのデータが2つずつ
外部の記憶装置に格納されている場合、16ビット長の
演算装置に対して半分ずつに切り出して与えなければな
らない。
【0005】本発明は、上記問題点を解決するために、
半ワード長の乗算を実行する場合に、半ワード長のデー
タが2つまとめて入出力し、2つの半ワード長の乗算を
同時に並行して実行できる演算装置を提供することを目
的とする。
半ワード長の乗算を実行する場合に、半ワード長のデー
タが2つまとめて入出力し、2つの半ワード長の乗算を
同時に並行して実行できる演算装置を提供することを目
的とする。
【0006】
【課題を解決するための手段】上記目的を達成するため
に、本発明は、演算装置において、2つの半ワードごと
の演算の可能な演算器と、被乗数Xを格納するレジスタ
と、乗数Yを格納し右シフトする機能を有するレジスタ
と、乗算の途中結果を格納する2ワード長のレジスタ
と、演算器の出力を右シフトするとともに、更に半ワー
ドごとのビット位置では1ビットシフトに代って半ワー
ド長ビットシフトを選択し、前記第3のレジスタへシフ
トした格納するシフト手段を備えている。
に、本発明は、演算装置において、2つの半ワードごと
の演算の可能な演算器と、被乗数Xを格納するレジスタ
と、乗数Yを格納し右シフトする機能を有するレジスタ
と、乗算の途中結果を格納する2ワード長のレジスタ
と、演算器の出力を右シフトするとともに、更に半ワー
ドごとのビット位置では1ビットシフトに代って半ワー
ド長ビットシフトを選択し、前記第3のレジスタへシフ
トした格納するシフト手段を備えている。
【0007】
【作用】本発明によれば、乗数Yの値に応じて演算器に
おいて被乗数と乗算の途中結果との加算を半ワードごと
に分割して実行し、さらにシフト手段において半ワード
ごとに独立にシフトされるので2つの乗算を並行して実
行することができる。
おいて被乗数と乗算の途中結果との加算を半ワードごと
に分割して実行し、さらにシフト手段において半ワード
ごとに独立にシフトされるので2つの乗算を並行して実
行することができる。
【0008】
【実施例】図1は、本発明の実施例に係る演算装置の構
成を示す図である。1ワード長の乗数Yと被乗数Xは、
レジスタX11(XH11a、XL11b)とレジスタ
Y12(YH12a、YL12b)に格納される。2ワ
ード長の乗算途中結果および乗算最終結果は、レジスタ
Z10(ZH10a、ZL10b)に格納される。ここ
では、1ワードを8ビットとして説明する。レジスタX
11とレジスタY12のビット幅は8ビット、レジスタ
Z10のビット幅は16ビットである。このときそれぞ
れのレジスタの半分の部分であるXH11a、XL11
b、YH12a、YL12bはそれぞれ4ビットであ
り、ZH10a、ZL10bはそれぞれ8ビットであ
る。1ワードの最上位ビット(MSB)をビット7と
し、最下位ビット(LSB)をビット0とする。2ワー
ド長のレジスタZ10はMSBをビット15としLSB
をビット0とする。1ワードの乗算は8ビット×8ビッ
トであり、この乗算の結果は16ビットである。また、
半ワード長の乗算の場合は4ビット×4ビットであり、
この乗算の結果は8ビットである。
成を示す図である。1ワード長の乗数Yと被乗数Xは、
レジスタX11(XH11a、XL11b)とレジスタ
Y12(YH12a、YL12b)に格納される。2ワ
ード長の乗算途中結果および乗算最終結果は、レジスタ
Z10(ZH10a、ZL10b)に格納される。ここ
では、1ワードを8ビットとして説明する。レジスタX
11とレジスタY12のビット幅は8ビット、レジスタ
Z10のビット幅は16ビットである。このときそれぞ
れのレジスタの半分の部分であるXH11a、XL11
b、YH12a、YL12bはそれぞれ4ビットであ
り、ZH10a、ZL10bはそれぞれ8ビットであ
る。1ワードの最上位ビット(MSB)をビット7と
し、最下位ビット(LSB)をビット0とする。2ワー
ド長のレジスタZ10はMSBをビット15としLSB
をビット0とする。1ワードの乗算は8ビット×8ビッ
トであり、この乗算の結果は16ビットである。また、
半ワード長の乗算の場合は4ビット×4ビットであり、
この乗算の結果は8ビットである。
【0009】演算器は2つのALU30とALU31か
らなり、それぞれALU30、31の入力A30a,3
1aと入力B30b,31bには、レジスタZ10とレ
ジスタX11からの出力が接続される。このALU30
とALU31のビット幅はそれぞれ4ビットである。レ
ジスタZ10の上位1ワードのZH10aをさらに半ワ
ードずつのZHH、ZHLにわけて、ALU30にはZ
HHとXH11aが、ALU31にはZHLとXL11
bが入力される。ALU30とALU31の加算制御の
ための信号線addh34とaddl35にはレジスタ
Y12の上位側半ワードの最下位ビット(ビット4)と
下位側半ワードの最下位ビット(ビット0)とが接続さ
れる。レジスタY12は1ビット出力するごとにその値
を右へ1ビットシフトする。
らなり、それぞれALU30、31の入力A30a,3
1aと入力B30b,31bには、レジスタZ10とレ
ジスタX11からの出力が接続される。このALU30
とALU31のビット幅はそれぞれ4ビットである。レ
ジスタZ10の上位1ワードのZH10aをさらに半ワ
ードずつのZHH、ZHLにわけて、ALU30にはZ
HHとXH11aが、ALU31にはZHLとXL11
bが入力される。ALU30とALU31の加算制御の
ための信号線addh34とaddl35にはレジスタ
Y12の上位側半ワードの最下位ビット(ビット4)と
下位側半ワードの最下位ビット(ビット0)とが接続さ
れる。レジスタY12は1ビット出力するごとにその値
を右へ1ビットシフトする。
【0010】ALU30、31においては制御信号ad
dh34、addl35に応じて、入力AH30a,A
L31aをそのまま出力CH30c,CL31cへ出力
するか、または入力AH30a,AL31aと入力BH
30b,BL31bの加算結果を出力CH30c,CL
31cに出力する。addh34,addl35の信号
はALU30、31の分割と連結に応じて切替え、分割
しない時は両方にaddl35の信号が与えられる。分
割した場合にはALUの上位側30と下位側31とにそ
れぞれaddh34,addl35が与えられる。これ
はレジスタY12からの出力を切り替えるセレクタ41
において切り替える。2つのALU30、31は、それ
ぞれキャリー32、33を生成するが、分割しない場合
には2つのALU30、31の間にはキャリー信号がセ
レクタ40接続され、分割する場合にはキャリーのセレ
クタ40が切り替えられて上位側のキャリー入力C0に
は論理値0が入力され、ALU30、31のそれぞれの
キャリー出力32、33は、ALU30、31の出力3
0c,31cとともにシフタ20へ入力され、1ビット
右シフトしたあとにレジスタZ10に格納される。
dh34、addl35に応じて、入力AH30a,A
L31aをそのまま出力CH30c,CL31cへ出力
するか、または入力AH30a,AL31aと入力BH
30b,BL31bの加算結果を出力CH30c,CL
31cに出力する。addh34,addl35の信号
はALU30、31の分割と連結に応じて切替え、分割
しない時は両方にaddl35の信号が与えられる。分
割した場合にはALUの上位側30と下位側31とにそ
れぞれaddh34,addl35が与えられる。これ
はレジスタY12からの出力を切り替えるセレクタ41
において切り替える。2つのALU30、31は、それ
ぞれキャリー32、33を生成するが、分割しない場合
には2つのALU30、31の間にはキャリー信号がセ
レクタ40接続され、分割する場合にはキャリーのセレ
クタ40が切り替えられて上位側のキャリー入力C0に
は論理値0が入力され、ALU30、31のそれぞれの
キャリー出力32、33は、ALU30、31の出力3
0c,31cとともにシフタ20へ入力され、1ビット
右シフトしたあとにレジスタZ10に格納される。
【0011】図2にシフタ20の構成を示す。本実施例
の場合シフタのビット幅は2ワード長であり、16ビッ
ト幅である。Siがシフタへの入力、Soがシフタから
の出力であり、図の中の数字は16ビットのデータバス
Si,Soの中のそれぞれのビット位置を表す。一部の
入力はキャリー信号CoutH(32)、CoutL
(33)が接続される。Soへのビット位置11、7、
3へはセレクタ42、43、44を通じて与えられる。
それぞれのセレクタへの入力はSiのビット12、8、
4のビットと、CoutL(33),ビット12,8の
ビットがそれぞれ図に示す様に接続される。
の場合シフタのビット幅は2ワード長であり、16ビッ
ト幅である。Siがシフタへの入力、Soがシフタから
の出力であり、図の中の数字は16ビットのデータバス
Si,Soの中のそれぞれのビット位置を表す。一部の
入力はキャリー信号CoutH(32)、CoutL
(33)が接続される。Soへのビット位置11、7、
3へはセレクタ42、43、44を通じて与えられる。
それぞれのセレクタへの入力はSiのビット12、8、
4のビットと、CoutL(33),ビット12,8の
ビットがそれぞれ図に示す様に接続される。
【0012】次に、以上の構成の演算装置についてその
動作を説明する。まず、1ワード(8ビット)長の乗算
時の動作について説明する。乗数Yと被乗数Xはそれぞ
れレジスタY12とレジスタX11にセットされ、レジ
スタZ10の内容は0(ゼロ)クリアされる。各セレク
タ40〜44は分割しない状態が選択される。これによ
りALU30、31は8ビットのALUとして動作し、
シフタ20も16ビットの1ビット右シフトを行い、ビ
ット位置15の最上位ビットにはALU30のキャリー
Cout32が格納される。この16ビットのシフトの
状態を図3に示す。入力Siの上位の15ビットは右シ
フトされ出力Soのビット位置14から0ビットへ出力
される。乗数についてはレジスタY12からは8ビット
の中の最下位ビットのみが使用され、addl35によ
ってALU30、31の加算の制御を行う。
動作を説明する。まず、1ワード(8ビット)長の乗算
時の動作について説明する。乗数Yと被乗数Xはそれぞ
れレジスタY12とレジスタX11にセットされ、レジ
スタZ10の内容は0(ゼロ)クリアされる。各セレク
タ40〜44は分割しない状態が選択される。これによ
りALU30、31は8ビットのALUとして動作し、
シフタ20も16ビットの1ビット右シフトを行い、ビ
ット位置15の最上位ビットにはALU30のキャリー
Cout32が格納される。この16ビットのシフトの
状態を図3に示す。入力Siの上位の15ビットは右シ
フトされ出力Soのビット位置14から0ビットへ出力
される。乗数についてはレジスタY12からは8ビット
の中の最下位ビットのみが使用され、addl35によ
ってALU30、31の加算の制御を行う。
【0013】ALU30、31においては、レジスタZ
10の上位側の出力ZH10aとレジスタX11の出力
30b,31bを、制御信号addl35の値に応じて
加算をするかまたはZH10aの値をそのまま出力す
る。ALU30、31からの出力CH30c,CL31
cとキャリー出力Cout32とレジスタZ10の下位
側ZL10bと同時にシフタ20を通じてシフトされレ
ジスタZ10に格納される。この加算とシフトをビット
幅(8回)繰り返すことで乗算の結果を格納するレジス
タZには16ビットの乗算結果が格納される。
10の上位側の出力ZH10aとレジスタX11の出力
30b,31bを、制御信号addl35の値に応じて
加算をするかまたはZH10aの値をそのまま出力す
る。ALU30、31からの出力CH30c,CL31
cとキャリー出力Cout32とレジスタZ10の下位
側ZL10bと同時にシフタ20を通じてシフトされレ
ジスタZ10に格納される。この加算とシフトをビット
幅(8回)繰り返すことで乗算の結果を格納するレジス
タZには16ビットの乗算結果が格納される。
【0014】加算の制御については、例えば乗数Yの値
が2進数で01011011であれば、下位ビットから1、2、
4、5、7回目の演算で加算を行い、値が'0'のビット
である3、6、8回目の演算では加算を行わずにレジス
タZ10の値を通過させる。以上のように、乗数の各ビ
ットについて論理値'1'に対応する部分だけシフト(乗
算と同じ)されて加算され、これを8回繰り返し実行す
ることで8ビットの乗算を実行することができる。演算
結果については、図5の(a)に示す様に被乗数Xと乗
数Yとの積がレジスタZ10に格納される。
が2進数で01011011であれば、下位ビットから1、2、
4、5、7回目の演算で加算を行い、値が'0'のビット
である3、6、8回目の演算では加算を行わずにレジス
タZ10の値を通過させる。以上のように、乗数の各ビ
ットについて論理値'1'に対応する部分だけシフト(乗
算と同じ)されて加算され、これを8回繰り返し実行す
ることで8ビットの乗算を実行することができる。演算
結果については、図5の(a)に示す様に被乗数Xと乗
数Yとの積がレジスタZ10に格納される。
【0015】次に半ワード(4ビット)長の乗算時の動
作について説明する。乗数Yと被乗数Xはそれぞれレジ
スタY12とレジスタX11にセットされる。このとき
乗数と被乗数とはそれぞれ4ビットのデータが2つずつ
であり、それぞれYH12a,YL12b,XH11
a,XL11bに格納される。レジスタZ10の内容は
0(ゼロ)クリアされる。各セレクタ40〜44は分割
する状態が選択される。これによりALU30、31は
それぞれ独立の4ビットのALUとして動作し、上位の
ALU30のキャリー入力C0のセレクタ40は論理値
0が選択される。シフタ20は、ビット位置11、7、
3のセレクタ42、43、44はそれぞれCoutL
(33),Siのビット12、8が選択され、他のビッ
トは1ビットのみの右シフトを行う。このときのシフタ
の動作状態を図4に示す。図4(a)は被乗数Xの上位
側XH11aと乗数Yの上位側YH12aとの積の中間
結果をシフトしている状態を示す。ビット15から12
の4ビットが積の上位側4ビットであり、ビット7から
4が下位側の4ビットである。この離れた位置のデータ
について連続してシフトするためセレクタ43を通じて
Siのビット12がSoのビット7となる。同様に被乗
数Xの下位側XL11bと乗数Yの下位側YL12bと
の積の中間結果をシフトしている状態を図4(b)に示
す。ここでは、ビット11から8とビット3から0を連
続してシフトするためセレクタ44を通じてSiのビッ
ト8がSoのビット3となる。乗数についてはレジスタ
Y12からは8ビットの中のビット4とビット0が使用
され、それぞれがaddh34とaddl35としてそ
れぞれALU30、31の加算の制御を行う。ここでも
乗数Yは、1回の演算ごとに右にシフトされる。
作について説明する。乗数Yと被乗数Xはそれぞれレジ
スタY12とレジスタX11にセットされる。このとき
乗数と被乗数とはそれぞれ4ビットのデータが2つずつ
であり、それぞれYH12a,YL12b,XH11
a,XL11bに格納される。レジスタZ10の内容は
0(ゼロ)クリアされる。各セレクタ40〜44は分割
する状態が選択される。これによりALU30、31は
それぞれ独立の4ビットのALUとして動作し、上位の
ALU30のキャリー入力C0のセレクタ40は論理値
0が選択される。シフタ20は、ビット位置11、7、
3のセレクタ42、43、44はそれぞれCoutL
(33),Siのビット12、8が選択され、他のビッ
トは1ビットのみの右シフトを行う。このときのシフタ
の動作状態を図4に示す。図4(a)は被乗数Xの上位
側XH11aと乗数Yの上位側YH12aとの積の中間
結果をシフトしている状態を示す。ビット15から12
の4ビットが積の上位側4ビットであり、ビット7から
4が下位側の4ビットである。この離れた位置のデータ
について連続してシフトするためセレクタ43を通じて
Siのビット12がSoのビット7となる。同様に被乗
数Xの下位側XL11bと乗数Yの下位側YL12bと
の積の中間結果をシフトしている状態を図4(b)に示
す。ここでは、ビット11から8とビット3から0を連
続してシフトするためセレクタ44を通じてSiのビッ
ト8がSoのビット3となる。乗数についてはレジスタ
Y12からは8ビットの中のビット4とビット0が使用
され、それぞれがaddh34とaddl35としてそ
れぞれALU30、31の加算の制御を行う。ここでも
乗数Yは、1回の演算ごとに右にシフトされる。
【0016】ALU30、31においては、レジスタZ
10の上位側の出力ZH10aは2つの乗算の途中結果
をZH10aの上位側4ビットと下位側の4ビットに保
持しており、これらがそれぞれ、ALU30,ALU3
1に入力される。ALU30,31では、制御信号ad
dh34,addl35の値に応じて加算をするかまた
はZH10aの値をそのまま出力する。ALU30、3
1からの出力CH30c,CL31cとキャリー出力C
out32Cout33とレジスタZ10の下位側ZL
10bと同時にシフタ20を通じてシフトされレジスタ
Z10に格納される。1回の演算で乗数の1ビット分の
演算を行ない、これを乗数のビット幅(4回)繰り返
す。この加算とシフトを半ワード長のビット幅(4回)
繰り返すことで、上位側と下位側の4ビットずつの計8
ビットの乗算結果2つをレジスタZ10に得ることがで
きる。
10の上位側の出力ZH10aは2つの乗算の途中結果
をZH10aの上位側4ビットと下位側の4ビットに保
持しており、これらがそれぞれ、ALU30,ALU3
1に入力される。ALU30,31では、制御信号ad
dh34,addl35の値に応じて加算をするかまた
はZH10aの値をそのまま出力する。ALU30、3
1からの出力CH30c,CL31cとキャリー出力C
out32Cout33とレジスタZ10の下位側ZL
10bと同時にシフタ20を通じてシフトされレジスタ
Z10に格納される。1回の演算で乗数の1ビット分の
演算を行ない、これを乗数のビット幅(4回)繰り返
す。この加算とシフトを半ワード長のビット幅(4回)
繰り返すことで、上位側と下位側の4ビットずつの計8
ビットの乗算結果2つをレジスタZ10に得ることがで
きる。
【0017】以上の半ワード長の2つの乗算についてそ
のデータの与え方と結果を図5(b)に示す。被乗数X
Hと乗数YHの8ビットの乗算結果がレジスタZ10の
(ZHH,ZLH)に格納され、被乗数XLと乗数YL
の8ビットの乗算結果がレジスタZ10の(ZHL,Z
LL)に格納される。
のデータの与え方と結果を図5(b)に示す。被乗数X
Hと乗数YHの8ビットの乗算結果がレジスタZ10の
(ZHH,ZLH)に格納され、被乗数XLと乗数YL
の8ビットの乗算結果がレジスタZ10の(ZHL,Z
LL)に格納される。
【0018】以上により、演算器の分割と連結を切替え
ることにより、被乗数Xと乗数Yについて1ワード(8
ビット)の乗算と、2つの半ワード(4ビット)の乗算
を切替えることができる。この時、演算器におけるキャ
リーの生成のセレクタと、シフタにおけるシフト位置の
変更のための4つのセレクタを追加するだけで、2種類
の乗算を実行することが可能である。また、半ワード長
の乗算については、1ワードの2つの半ワードを格納し
ておけばよく、効率よくデータを記憶装置に詰め込んで
おくことができる。
ることにより、被乗数Xと乗数Yについて1ワード(8
ビット)の乗算と、2つの半ワード(4ビット)の乗算
を切替えることができる。この時、演算器におけるキャ
リーの生成のセレクタと、シフタにおけるシフト位置の
変更のための4つのセレクタを追加するだけで、2種類
の乗算を実行することが可能である。また、半ワード長
の乗算については、1ワードの2つの半ワードを格納し
ておけばよく、効率よくデータを記憶装置に詰め込んで
おくことができる。
【0019】次に、演算結果をレジスタZ10の上位側
ZH10aと下位側ZL10bに分離して格納する方法
について説明する。図6(a)にローテイト動作のシフ
タの動作を示す。このシフタは、図2のシフタ20の出
力とレジスタZ10の間に挿入し、シフタ20の出力に
対してローテイト動作させるか、または図6(a)のシ
フトせずに通過させるかの選択を行う。乗算の最終のサ
イクル(4サイクル目)の前のサイクルまでは通過さ
せ、最終サイクルで図6(a)のシフト動作を行うこと
で、演算結果をレジスタZの上位1ワードと下位1ワー
ドのそれぞれに分けて格納することが可能となる。この
様子を図6(b)に示す。この結果、レジスタZ10の
上位側10aだけまたは下位側10bだけを取り出すこ
とで半ワード長の演算結果を得ることができる。
ZH10aと下位側ZL10bに分離して格納する方法
について説明する。図6(a)にローテイト動作のシフ
タの動作を示す。このシフタは、図2のシフタ20の出
力とレジスタZ10の間に挿入し、シフタ20の出力に
対してローテイト動作させるか、または図6(a)のシ
フトせずに通過させるかの選択を行う。乗算の最終のサ
イクル(4サイクル目)の前のサイクルまでは通過さ
せ、最終サイクルで図6(a)のシフト動作を行うこと
で、演算結果をレジスタZの上位1ワードと下位1ワー
ドのそれぞれに分けて格納することが可能となる。この
様子を図6(b)に示す。この結果、レジスタZ10の
上位側10aだけまたは下位側10bだけを取り出すこ
とで半ワード長の演算結果を得ることができる。
【0020】なお、以上に述べた分割は2分割である
が、この分割に対してさらに2分割を適用すれば4分割
も可能である。この構成は、ワード長を32ビットとし
た場合には、2分割で16ビットの乗算を2つ並行に実
行可能であり、さらに4分割では8ビットの演算を4つ
並行に実行可能になる。乗算のサイクル数は、演算ビッ
ト数に比例し、32ビットの乗算に比べて8ビットの乗
算は1/4の時間で済む。また、画像処理等の演算にお
いて8ビットのピクセルデータ等を扱う場合に並列に複
数の画素を扱うことが可能であり演算性能を大きく向上
させることが可能となる。このとき外部の記憶装置には
32ビット単位で詰め込んで格納しておけばよく、メモ
リの使用効率やデータの入出力の効率を高めることが可
能となる。
が、この分割に対してさらに2分割を適用すれば4分割
も可能である。この構成は、ワード長を32ビットとし
た場合には、2分割で16ビットの乗算を2つ並行に実
行可能であり、さらに4分割では8ビットの演算を4つ
並行に実行可能になる。乗算のサイクル数は、演算ビッ
ト数に比例し、32ビットの乗算に比べて8ビットの乗
算は1/4の時間で済む。また、画像処理等の演算にお
いて8ビットのピクセルデータ等を扱う場合に並列に複
数の画素を扱うことが可能であり演算性能を大きく向上
させることが可能となる。このとき外部の記憶装置には
32ビット単位で詰め込んで格納しておけばよく、メモ
リの使用効率やデータの入出力の効率を高めることが可
能となる。
【0021】
【発明の効果】以上説明してきたとおり、本発明によれ
ば、演算の回路を増加させることなく、ALUを分割す
ることで、1つの1ワード長の乗算を実行するモードと
2つの半ワード長の乗算を並列に実行するモードを切り
替えることが可能であり、2つの半ワード長の乗算を実
行するときには、乗数と被乗数に2つの半ワードを同時
に与えるだけでよく、外部からデータを取り込むときに
半ワード2つずつを1ワードにまとめて入れておけばよ
く、データの入出力を効率よくすることが可能となる。
ば、演算の回路を増加させることなく、ALUを分割す
ることで、1つの1ワード長の乗算を実行するモードと
2つの半ワード長の乗算を並列に実行するモードを切り
替えることが可能であり、2つの半ワード長の乗算を実
行するときには、乗数と被乗数に2つの半ワードを同時
に与えるだけでよく、外部からデータを取り込むときに
半ワード2つずつを1ワードにまとめて入れておけばよ
く、データの入出力を効率よくすることが可能となる。
【図1】本発明の実施例に係る演算装置の構成図
【図2】図1中のシフタの構成図
【図3】1ワード(8ビット)長の乗算時のシフタの動
作図
作図
【図4】半ワード(4ビット)長の乗算時のシフタの動
作図
作図
【図5】乗算の入力と出力のデータの関係を示す図
【図6】図2のシフタに追加するローテイト回路の動作
図
図
10 乗算結果レジスタ 11 被乗数レジスタ 12 乗数レジスタ 20 シフタ 30、31 ALU 40、41、42、43、44 選択回路
Claims (2)
- 【請求項1】被乗数Xを格納する第1のレジスタと、 乗数Yを格納し右にシフトさせる手段を有する第2のレ
ジスタと、 演算の途中結果を格納する上位ワードと下位ワードの2
ワードからなる第3のレジスタと、 前記第1のレジスタと前記第3のレジスタの上位ワード
の2つのデータを入力とし、入力されたデータに対して
加算またはデータの通過の機能を有し、データの半ワー
ド長の2つの演算に分割して実行する演算器と、 前記演算器の出力と第3のレジスタの下位ワードとを右
シフトさせるとともに、更に半ワードごとのビット位置
では1ビットシフトに代って半ワード長ビットシフトを
選択し、前記第3のレジスタへシフトした格納するシフ
ト手段とを備えており、 前記演算器を連結して前記第2のレジスタの値にしたが
って加算を実行し、前記シフト手段は2ワード全体を1
ビットシフトし、1ワード長の乗算を実行する第1の乗
算モードと、 前記演算器を分割し前記第2のレジスタの値にしたがっ
て半ワードごとの加算を実行し、前記シフト手段は1ワ
ードごとの2つのワードを1ビットシフトし、半ワード
長の乗算を2つ並行に実行する第2の乗算モードとを備
えたことを特徴とする演算装置。 - 【請求項2】請求項1記載の演算装置において、 シフト手段は、更に、1ワード長のローテイトを行なう
ローテイト手段を備えており、第2の演算モードにおい
て、演算の最後のステップにて上位ワードの下位側半ワ
ードと下位ワードの上位側半ワードのデータに対して前
記ローテイト手段を通過した値を前記第3のレジスタに
格納することを特徴とする演算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7098201A JPH08292876A (ja) | 1995-04-24 | 1995-04-24 | 演算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7098201A JPH08292876A (ja) | 1995-04-24 | 1995-04-24 | 演算装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08292876A true JPH08292876A (ja) | 1996-11-05 |
Family
ID=14213396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7098201A Pending JPH08292876A (ja) | 1995-04-24 | 1995-04-24 | 演算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH08292876A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6704762B1 (en) | 1998-08-28 | 2004-03-09 | Nec Corporation | Multiplier and arithmetic unit for calculating sum of product |
US8843542B2 (en) | 2009-03-26 | 2014-09-23 | Seiko Epson Corporation | Information processing device, arithmetic processing method, and electronic apparatus |
-
1995
- 1995-04-24 JP JP7098201A patent/JPH08292876A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6704762B1 (en) | 1998-08-28 | 2004-03-09 | Nec Corporation | Multiplier and arithmetic unit for calculating sum of product |
US8843542B2 (en) | 2009-03-26 | 2014-09-23 | Seiko Epson Corporation | Information processing device, arithmetic processing method, and electronic apparatus |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3479438B2 (ja) | 乗算回路 | |
US6609143B1 (en) | Method and apparatus for arithmetic operation | |
JPS6347874A (ja) | 算術演算装置 | |
US6009450A (en) | Finite field inverse circuit | |
US20140136588A1 (en) | Method and apparatus for multiplying binary operands | |
US6704762B1 (en) | Multiplier and arithmetic unit for calculating sum of product | |
US5825681A (en) | Divider/multiplier circuit having high precision mode | |
US7260711B2 (en) | Single instruction multiple data processing allowing the combination of portions of two data words with a single pack instruction | |
US5912904A (en) | Method for the production of an error correction parameter associated with the implementation of modular operations according to the Montgomery method | |
JP3660075B2 (ja) | 除算装置 | |
JPH08292876A (ja) | 演算装置 | |
JP3579087B2 (ja) | 演算器およびマイクロプロセッサ | |
JP3982965B2 (ja) | 繰り返し型乗算器とアレイ型乗算器 | |
JPS60112141A (ja) | 乗算回路 | |
KR100265358B1 (ko) | 고속의쉬프팅장치 | |
JP3610564B2 (ja) | 情報処理装置 | |
KR100251547B1 (ko) | 디지탈신호처리기(Digital Sgnal Processor) | |
JPH0784762A (ja) | 乗算回路 | |
JP4954019B2 (ja) | 演算装置 | |
JP3696307B2 (ja) | 積和演算装置 | |
KR20080052194A (ko) | 재구성형 프로세서 연산 방법 및 장치 | |
JP2000076045A (ja) | シフト機能付きalu命令を持つマイクロプロセッサ | |
JPS6152741A (ja) | シフト機能付乗算回路 | |
JP2654062B2 (ja) | 情報処理装置 | |
JPH05241793A (ja) | 倍精度乗算器 |