JP2654062B2 - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JP2654062B2
JP2654062B2 JP63076091A JP7609188A JP2654062B2 JP 2654062 B2 JP2654062 B2 JP 2654062B2 JP 63076091 A JP63076091 A JP 63076091A JP 7609188 A JP7609188 A JP 7609188A JP 2654062 B2 JP2654062 B2 JP 2654062B2
Authority
JP
Japan
Prior art keywords
bit
alu
register
bits
multiplication
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
JP63076091A
Other languages
English (en)
Other versions
JPH01251134A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP63076091A priority Critical patent/JP2654062B2/ja
Publication of JPH01251134A publication Critical patent/JPH01251134A/ja
Application granted granted Critical
Publication of JP2654062B2 publication Critical patent/JP2654062B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】 〔発明の目的〕 (産業上の利用分野) 本発明は、情報処理装置において、専用の乗数算器を
用いず、汎用演算器で加算、減算を繰り返すことによっ
て乗算を行う演算回路に関する。
(従来の技術) ここでは16ビット乗算を例にとって説明する。以下
で、1ワードは16ビットを表わすものとする。
第8図に符号なし16ビット乗算を実施するための標準
的な演算回路の一例を示す。この回路は、16ビットの被
乗数、乗数を格納するための16ビットレジスタ801、レ
ジスタ802、最終的に32ビットになる部分積を格納する
ための32ビットレジスタ803、16ビットの加算を行うALU
804、レジスタ802の最下位ビットを見てALU804を制御す
る制御回路805から構成される。レジスタ802は右へ1ビ
ットシフトする機能を持つ。
第9図に2進数の乗算の原理を、4ビットの場合を例
にして示す。この図に示されるように、2進数乗算は基
本的には10進数の乗算と同様のことを行えばよい。すな
わち乗数の各ビットについて、そのビットが“1"なら
ば、被乗数をそのビット位置まで桁移動して部分積に加
算する。そのビットが“0"ならば、0を加算する。
16ビット符号なし2進数乗算を、第8図の演算回路で
実行する手順をPAD図で表したものを第10図に示す。
まず、被乗数を被乗数レジスタ801に、乗数を乗数
レジスタ802に、0を部分積を格納するためのレジスタ8
03にそれぞれ格納する。
乗数を格納しているレジスタ802の最下位ビットが
“1"ならば、レジスタ803(部分積)の上位ワードとレ
ジスタ801(被乗数)を加算する。レジスタ802の最下位
ビットが“0"ならば、レジスタ803の上位ワードをその
まま通過させる。ALUでデータをそのまま通過させるこ
とは、第9図において0を加算することと等価である。
ALUの出力をレジスタ803の上位ワードに書き戻した
後、レジスタ803を右に1ビットシフトさせる。最上位
ビットのビット31にはALUのCARRY出力を入力する。実際
ハードウェアでは、レジスタ803の出力のビット1〜ビ
ット15をレジスタ803の入力のビット0〜ビット14に、A
LUからの出力をレジスタ803の入力のビット15〜ビット3
0に、ALUのCARRY出力をレジスタ803の入力のビット31に
それぞれ接続する経路を設けることで、上記のシフト操
作を実現している。レジスタ803、すなわち部分積を右
シフトすることは、第8図の筆算で被乗数を加算すると
きに、被乗数を左にずらして加算することと等価であ
る。
レジスタ802の乗数を1ビット右へシフトして、次
のサイクルに備える。
尚、ここで1サイクルとはALUにデータを入力し、最
終的にALUから演算結果が出力されるまでをいう。
以上〜を乗数のビット数回、すなわち16回繰り返
せば、32ビット長の積がレジスタ803に求まる。
さて、現在普及しているマイクロプロセッサには、ア
ドレス計算などを高速に行うために、内部レジスタ、AL
Uに32ビットのものを用いているものが多い。この場
合、16ビット同士の数の乗算を行うための演算回路の一
例を第11図に示す。被乗数は32ビットレジスタ1101の上
位ワード側に格納しておき、下位ワード側には0を補
う。乗数は32ビットレジスタ1102の下位ワード側に格納
する。実行手順は、第8図の回路での手順とほぼ同じで
ある。32ビット部分積レジスタ1103のシフトは、ALUか
らのデータ線を1ビット右にシフトさせ、左からALUのC
ARRY出力を入れることで行われる。ALUの上位ワードで
は、部分積の上位ワードと被乗数とで演算が行われ、AL
Uの下位ワードでは、部分積下位ワードと0とで演算が
行われる。この場合も演算サイクル数は16回であり、32
ビットALUを用いても演算サイクル数は減少しない。
(発明が解決しようとする課題) 32ビットのALU、汎用レジスタを持つマイクロプロセ
ッサで、被乗数16ビット、乗数16ビット、積32ビットの
乗算を実行する場合に、部分積の上位16ビットと被乗数
との加算はALUの上位16ビットで行われ、下位16ビット
は部分積下位16ビットと0との加算が行われる。すなわ
ち、ALUの下位16ビットは部分積の下位16ビットを常に
通過させているのと等価であり、ALU本来の機能を果た
していないといえる。しかし一方で、乗算には多くの演
算量が必要であるため、ALU上位16ビットは16回も使用
され多くの時間がかかっている。したがって、ALUの下
位16ビットを有効に利用できる手段があれば、乗算に要
する時間を短縮できる。
〔発明の構成〕
(課題を解決するための手段) 16ビット×16ビットの乗算を行い32ビットの積を求め
る場合、演算中に行われる部分積と被乗数との加算に
は、16ビットのALUがあれば十分である。したがって32
ビットALUを用いる場合には、上位16ビットと下位16ビ
ットとに分割し、上位側のALUからの出力を下位側のALU
に入力できるデータ転送経路を設け、それぞれのALUで
並列に演算を実行できるようにALUの制御系を独立にす
れば、2サイクル分の演算を1サイクルで行うことが可
能である。したがってこのようにALUを2つに分割した
場合の演算サイクル数は、分割しない場合の約1/2に短
縮できる。
(作用) 前項で述べたように、ALUを上位ワードと下位ワード
で分割し、上位側ALUの出力を下位側ALUに入力するため
のデータ転送経路を設け、2つの演算器の制御系を独立
させて並列に演算を行うことによって、1サイクル中に
2回の加算が可能である。したがって、演算サイクル数
は約1/2に短縮できる。
(実施例) 以下に本発明の実施例を図面に従って説明する。
第1図に、本発明を用いて16ビット符号なし乗算を行
うための演算回路のブロック図を示す。この回路は、16
ビットの被乗数を格納するための32ビットレジスタ10
1、16ビット乗数を格納するための16ビットレジスタ10
2、部分積を格納するたゆの32ビットレジスタ103、一般
演算の演算結果を格納するためのレジスタ104、16ビッ
トALU105、16ビットALU106からなる。
また、一般演算と乗算とでデータの流れを変えるため
に、レジスタ103への入力を選択するセレクタ107、ALU
へのデータ入力を選択するセレクタ108、セレクタ109、
一般演算と乗算とで、ALUへの演算命令を切り替えるセ
レクタ112、セレクタ113、一般演算と乗算とで、ALU105
のCARRY入力を切り替えるセレクタ114、ALU106のCARRY
入力を切り替えるセレクタ115が設けられている。
さらに、乗算時に2つのALUを独立に制御するため
に、レジスタ102の下位2ビットをデコードして、2つ
のALUにそれぞれ演算命令を送る制御回路110、制御回路
111が設けられている。
まず、一般演算の場合は、セレクタによって第2図の
ようにデータ転送経路が切り替えられる。ALU105とALU1
06は制御系が別になっているが、セレクタによってμRO
Mから両ALUに同一の演算命令が入る。また、ALU106から
のCARRY出力がALU105のCARRY入力に接続される。これに
よって、ALU105、ALU106が連結されて32ビットALUとし
て使用できる。
第3図に乗算実行時のデータ転送経路を示す。この場
合のハードウェアの特徴を以下に示す。
(1) 2つの独立した制御回路によって、ALU105とAL
U106が並列に演算を行う。
(2) ALU105の出力を、ALU106に入力する経路が設け
られている。このデータ線は、ALU105の出力のビット1
〜ビット15をALU106の入力のビット0〜ビット14に接続
し、ALU105のCARRY出力をALU106の入力のビット15に接
続する。すなわち、ALU105の出力は、1ビット右シフト
されてALU106に入力される。シフトによってあふれたビ
ット、すなわちALU105の出力のビット0は、部分積レジ
スタ103のビット14に書き込まれる。
(3) ALU106の出力を、レジスタ103の上位ワードに
書き込む経路が設けられている。このデータ線も、デー
タが1ビット右シフトされるように接続される。すなわ
ち、ALU106の出力のビット0〜ビット15がレジスタ103
のビット15〜ビット30に、ALU106のCARRY出力がレジス
タ103のビット31にそれぞれ接続される。
(4) レジスタ103の出力のビット2〜ビット15が、
レジスタ103の入力のビット0〜ビット13に書き込まれ
るようにデータ線が設けられている。すなわち、レジス
タ103の下位ワードは1サイクルで2ビット右にシフト
されることになる。ビット14、ビット15には、上で述べ
たように、ALU105の出力のビット0、ALU106の出力のビ
ット0がそれぞれ書き込まれる。
(5) 乗数のレジスタ102は、右へ2ビットシフトす
る機能を持つ。
第1図における乗算の実行手順を以下に述べる。
16ビット被乗数の下位に0を補い、32ビットにして
レジスタ101に格納する。すなわち被乗数は、レジスタ1
01の上位ワードに格納される。
乗数をレジスタ102に格納する。
レジスタ103の上位、下位ワードとも0を設定す
る。
乗数を格納しているレジスタ102の最下位ビットを
デコードする。“1"ならば部分積上位ワードと被乗数と
の加算をALU105で行う。“0"ならば部分積上位ワードを
そのまま通過させる。この時点でALU105から第1段の部
分積が出力される。
ALU105からの第1段の部分積が、右に1ビットシフ
トされた状態でALU106に入力される。
乗数レジスタ102の下位から2ビット目をデコード
する。“1"ならばALU105からの第1段の部分積と被乗数
との加算をALU106で行う。“0"ならば第1段の部分積を
そのまま通過させる。この時点でALU106からは第2段の
部分積が出力される。
ALU106からの第2段の部分積が、右に1ビットシフ
トされた状態で部分積レジスタ103の上位ワードに書き
込まれる。レジスタ103の下位ワードは2ビット右にシ
フトされる。
乗数レジスタ102を右に2ビットシフトする。
以上〜を乗数のビット数の1/2回、すなわち8回
繰り返す。
即ち、本実施例においてはにおいて乗数の最下位ビ
ットと被乗数の演算を行い、において乗数の最下位か
ら2ビット目と被乗数の演算を行っており、ALUにデー
タが入力されて最終的にALUから演算結果が出力される
1サイクルの間に2回の演算を実行している。
従来の方法では、16ビット乗算を実行するのに16サイ
クルかかっていたが、本発明の回路を使用することによ
って、8サイクルで済み、演算サイクル数が1/2に短縮
される。
さて、もう1つの実施例として、16ビット符号付き乗
算でboothのアルゴリズムを用い、1演算で2ビットデ
コードする場合の乗算回路のブロック図を第4図に示
す。このアルゴリズムは、第6図に示すように、デコー
ドされる2ビットとその上の1ビットとあわせて3ビッ
トでALUでの演算種類が決定される。また最初のデコー
ドは、乗数の最下位ビットの下に、さらにもう1ビット
“0"を追加してスタートする。デコードされるビット列
と、そのとき行われるALUでの演算との対応は第7図の
ようになる。第7図に示すように、部分積に被乗数の2
倍数を加算、あるいは減算する場合があるので、2倍数
を作るためにシフトしたときにオーバーフローによって
情報を失わないためには、ALUのビット幅としては17ビ
ット必要になる。したがってあらかじめ34ビットALUを
用意しておき、2つに分割した場合に、1つのALUが17
ビットになるようにすれば、本発明でも2ビットデコー
ドによる乗算アルゴリズムの採用が可能である。
第4図に示す乗算回路の特徴を、第1図の回路と比較
して以下に述べる。
(1) ALUでの演算が、加算と減算と通過の3通りに
拡張される。
(2) ALUには、被乗数の2倍数が入力されることが
ある。この2倍数は、ALUに入力されるときに、信号線
を左に1ビットずらすことによって作られる。信号線を
ずらすかずらさないかはセレクタによって選択される。
セレクタの詳細図を第5図に示す。
(3) 上位ALU404の出力は、2ビット右シフトされる
形で下位側ALU405に入力される。
(4) 乗数レジスタは、1サイクルに4ビット右シフ
トされる。
(5) ALUは17ビット入力になるので、部分積は第4
図の符号拡張ユニット408、409で17ビットに符号拡張さ
れる。被乗数は、セレクタ406、407で符号拡張されるか
あるいは2倍されて17ビットになる。
(6) CARRY出力は、それぞれのALUのビット16からの
CARRYが使用される。
一般演算の場合、ALUの17ビット目は使用されない。
また一般演算の場合のCARRY出力は、下位側ALUのビット
15からのCARRYを上位側ALUのCARRY入力に入力し、上位
側ALUではビット15からのCARRYをCARRY出力とする。
〔発明の効果〕
以上で述べたように、演算データのビット幅の2倍の
ビット幅を持つ演算回路で乗算を行う場合に、一般の方
法では、ALUの1/2のビットしか活用されないなどの無駄
が存在した。そこで本発明では、ALUを2つに分割し、
一方のALUの出力を他方のALUに入力するデータ転送経路
を設け、それぞれのALUの制御系を独立にして並列に動
作させる方法を示した。これによって限られた資源を有
効に活用することができる。また1サイクルで2演算を
実行することができ、演算サイクル数を1/2に短縮する
ことができる。
【図面の簡単な説明】
第1図は本発明の回路構成を示すブロック図、第2図は
第1図において一般演算を行うときのデータ転送経路を
示した図、第3図は第1図において乗算を行うときのデ
ータ転送経路を示した図、第4図は本発明を用いて2次
のboothの乗算アルゴリズムで16ビット符号付き乗算を
行う場合の乗算回路の構成を示すブロック図、第5図は
第4図におけるセレクタの詳細図、第6図は第4図の回
路で乗算を行う場合の乗数のビットデコード順を示す
図、第7図は第4図の回路で乗算を行う場合の、乗数の
デコードされるビットパターンと、そのとき行われるAL
Uでの演算との対応を示す図、第8図は従来の16ビット
乗算回路の構成を示すブロック図、第9図は2進数乗算
の基本原理を示す図、第10図は第8図の乗算回路におけ
る乗算の実行手順を示すPAD図、第11図は32ビットレジ
スタ、ALUを持つ演算回路で、16ビット乗算を行うため
の従来の回路構成を示すブロック図である。 101……被乗数を格納するための32ビットレジスタ、 102……乗数を格納するための16ビットレジスタ、 103……部分積を格納するための32ビットレジスタ、 104……一般演算の場合の演算結果を格納するためのレ
ジスタ、 105……16ビットALU(上位ワード演算用)、 106……16ビットALU(下位ワード演算用)、 107……レジスタ103への入力を選択するセレクタ、 108……ALUへのデータ入力を選択するセレクタ、 109……ALUへのデータ入力を選択するセレクタ、 110……レジスタ102の最下位ビットをデコードして、AL
U105に演算命令を送る制御回路、 111……レジスタ102の下位から2ビット目をデコードし
て、ALU106へ演算命令を送る制御回路、 112……一般演算と乗算とで、ALU105への演算命令を切
り替えるセレクタ、 113……一般演算と乗算とで、ALU106への演算命令を切
り替えるセレクタ、 114……一般演算と乗算とで、ALU105のCARRY入力を切り
替えるセレクタ、 115……ALU106のCARRY入力を切り替えるセレクタであ
る。

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】被乗数mビット、乗数nビットで、m+n
    ビットの積を求める乗算を実行する演算回路において、
    被乗数を格納する少なくともmビットの第1のレジスタ
    と、乗数を格納し、右にシフトさせる手段を有する少な
    くともnビットの第2のレジスタと、乗算の途中結果を
    格納し、右にシフトさせる手段を有する少なくともm+
    nビットの第3のレジスタと、少なくとも加算、データ
    の通過の2つの機能を有した2mビット幅の演算器と、該
    演算器を第1と第2の2つのmビット演算器に分割し、
    第1の演算器の出力を第2の演算器に入力する手段と、
    該第1の演算器と第2の演算器をそれぞれ独立に制御す
    る手段と、前記第1のレジスタから該第1、第2の演算
    器へデータを入力する手段と、前記第3のレジスタから
    該第1の演算器へデータを入力する手段と、該第2の演
    算器の出力を、前記第3のレジスタへ書き込む手段を具
    備し、乗算を実行する場合は、前記2mビットの演算器を
    第1と第2の2つのmビットの演算器に分割し、第1の
    演算器の出力を第2の演算器の入力に接続し、データが
    第1の演算器に入力され第2の演算器から出力されるま
    での1サイクル中に乗数の複数ビットデータの演算を行
    うことができることを特徴とする情報処理装置。
  2. 【請求項2】一度に乗数の複数ビットをデコードした場
    合に、前記第1と第2の演算器のビット幅がそれぞれm
    +α(ただしα≧0)必要となる場合に備え、少なくと
    も2(m+α)ビットの演算器を具備し、該演算器の第
    1と第2の2つの演算器に分割したときに、各々の演算
    器が少なくとも(m+α)のビット幅を持つことを特徴
    とする請求項1記載の情報処理装置。
JP63076091A 1988-03-31 1988-03-31 情報処理装置 Expired - Fee Related JP2654062B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63076091A JP2654062B2 (ja) 1988-03-31 1988-03-31 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63076091A JP2654062B2 (ja) 1988-03-31 1988-03-31 情報処理装置

Publications (2)

Publication Number Publication Date
JPH01251134A JPH01251134A (ja) 1989-10-06
JP2654062B2 true JP2654062B2 (ja) 1997-09-17

Family

ID=13595171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63076091A Expired - Fee Related JP2654062B2 (ja) 1988-03-31 1988-03-31 情報処理装置

Country Status (1)

Country Link
JP (1) JP2654062B2 (ja)

Also Published As

Publication number Publication date
JPH01251134A (ja) 1989-10-06

Similar Documents

Publication Publication Date Title
US5001662A (en) Method and apparatus for multi-gauge computation
US6735611B2 (en) Arithmetic processor
US4903228A (en) Single cycle merge/logic unit
KR19980041798A (ko) 영상처리를 위한 명령을 지원하는 모듈 계산구조
JP3667635B2 (ja) 演算装置
US4208722A (en) Floating point data processing system
US5426600A (en) Double precision division circuit and method for digital signal processor
US6009450A (en) Finite field inverse circuit
US9372665B2 (en) Method and apparatus for multiplying binary operands
JP2002149400A (ja) 複数レジスタ指定が可能なsimd演算方式
US5957996A (en) Digital data comparator and microprocessor
US20090063606A1 (en) Methods and Apparatus for Single Stage Galois Field Operations
US5721697A (en) Performing tree additions via multiplication
US7260711B2 (en) Single instruction multiple data processing allowing the combination of portions of two data words with a single pack instruction
JP2654062B2 (ja) 情報処理装置
US6202078B1 (en) Arithmetic circuit using a booth algorithm
US5119325A (en) Multiplier having a reduced number of partial product calculations
KR100315303B1 (ko) 디지탈 신호 처리기
KR100251547B1 (ko) 디지탈신호처리기(Digital Sgnal Processor)
JPS60108932A (ja) 十進演算処理装置
JPH02304676A (ja) ディジタル信号処理装置
JPS62209621A (ja) 乗算装置
KR100246472B1 (ko) 디지탈신호처리기
SU1748152A1 (ru) Вычислительное устройство
JP3205020B2 (ja) 演算装置

Legal Events

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