JPH02310621A - 情報処理装置 - Google Patents
情報処理装置Info
- Publication number
- JPH02310621A JPH02310621A JP13134689A JP13134689A JPH02310621A JP H02310621 A JPH02310621 A JP H02310621A JP 13134689 A JP13134689 A JP 13134689A JP 13134689 A JP13134689 A JP 13134689A JP H02310621 A JPH02310621 A JP H02310621A
- Authority
- JP
- Japan
- Prior art keywords
- register
- multiplier
- data
- arithmetic
- bits
- 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
- 230000010365 information processing Effects 0.000 claims description 12
- 230000015556 catabolic process Effects 0.000 abstract 1
- 238000006731 degradation reaction Methods 0.000 abstract 1
- 230000000593 degrading effect Effects 0.000 abstract 1
- 238000000034 method Methods 0.000 description 26
- 230000006870 function Effects 0.000 description 12
- 230000000694 effects Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000000717 retained effect Effects 0.000 description 3
- 230000015654 memory Effects 0.000 description 2
- 241001655798 Taku Species 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はデータを処理する情報処理装置に係り、特に高
精度の乗算、又は積和演算を高速に実行する回路構成方
法に関する。
精度の乗算、又は積和演算を高速に実行する回路構成方
法に関する。
近年のディジタル信号処理技術の著しい進歩にともない
、さまざまな情報処理機器にディジタル信号処理プロセ
ッサが使われるようになっている。
、さまざまな情報処理機器にディジタル信号処理プロセ
ッサが使われるようになっている。
これらの情報処理装置では、乗算や積和演算が非常に多
くの頻度でくり返し実行されるため、通常のプロセッサ
と異なり、ハードウェアで乗算器を持ち、処理速度を飛
躍的に高めているのが特徴となっている。これらのプロ
セッサでは、あらかじめ設定された精度での演算は高速
に実行することができるようになっているが、同一のプ
ロセッサで単精度、倍精度を自由に使い分け、しかも双
方共高速に実行可能なアーキテクチャになっているもの
は見栄けられない、しかしながら、処理内容によっては
1部分的に高精度の演算が必要になるものがあるが、そ
のような場合、従来の情報処理装置の機能では、対応が
困難である。
くの頻度でくり返し実行されるため、通常のプロセッサ
と異なり、ハードウェアで乗算器を持ち、処理速度を飛
躍的に高めているのが特徴となっている。これらのプロ
セッサでは、あらかじめ設定された精度での演算は高速
に実行することができるようになっているが、同一のプ
ロセッサで単精度、倍精度を自由に使い分け、しかも双
方共高速に実行可能なアーキテクチャになっているもの
は見栄けられない、しかしながら、処理内容によっては
1部分的に高精度の演算が必要になるものがあるが、そ
のような場合、従来の情報処理装置の機能では、対応が
困難である。
同一の情報処理装置内で単精度と倍精度の演算処理を行
なう場合、倍精度用のハードウェアを搭載して単精度演
算を行なう時にはそのハードウェアの一部分を使用する
方式が基本的に単精度1倍精度共同様の速度で実行する
ことができ、性能面では非常に有効である。しかし倍精
度演算用ハードウェアは単精度用の2〜4倍の規模を必
要とし。
なう場合、倍精度用のハードウェアを搭載して単精度演
算を行なう時にはそのハードウェアの一部分を使用する
方式が基本的に単精度1倍精度共同様の速度で実行する
ことができ、性能面では非常に有効である。しかし倍精
度演算用ハードウェアは単精度用の2〜4倍の規模を必
要とし。
単精度専用演算器よりも1回の演算に必要な時間は長く
なり、またコスト面で不利となる。また、一般的に倍精
度演算が必要な部分は、処理全体のごく一部分であり、
比率としては単精度で済む部分の方が圧倒的に多いこと
が予想されることから、倍精度演算では速度性能効果の
大きい倍精度用演算器も、処理全体の速度で見ると、必
ずしも有効とは言えない場合が多い。
なり、またコスト面で不利となる。また、一般的に倍精
度演算が必要な部分は、処理全体のごく一部分であり、
比率としては単精度で済む部分の方が圧倒的に多いこと
が予想されることから、倍精度演算では速度性能効果の
大きい倍精度用演算器も、処理全体の速度で見ると、必
ずしも有効とは言えない場合が多い。
そこでハードウェアとしては単精度用の演算器を搭載し
、倍精度演算が必要な時には複数ステップに分けて実行
する方式が考えられる。例えばnビット×nビットの被
乗数1乗数から2nビツトの演算結果を出力する単精度
乗算器を用いて2nX2n→4nの倍精度乗算を実行す
る場合、第6図に示すように4つの部分積を求め、後に
桁合せをしながら加算をして最終的に倍精度の乗算結果
を求めることになる。このことから、単精度演算器で倍
精度演算を行なうためには、桁合せのためのシフト処理
が必要であることがわかる。
、倍精度演算が必要な時には複数ステップに分けて実行
する方式が考えられる。例えばnビット×nビットの被
乗数1乗数から2nビツトの演算結果を出力する単精度
乗算器を用いて2nX2n→4nの倍精度乗算を実行す
る場合、第6図に示すように4つの部分積を求め、後に
桁合せをしながら加算をして最終的に倍精度の乗算結果
を求めることになる。このことから、単精度演算器で倍
精度演算を行なうためには、桁合せのためのシフト処理
が必要であることがわかる。
従来の情報処理装置を見てみると1例えば1985アイ
・イー・イー・イー・インターナショナル・ソリッド・
ステート・サーキツツ・コンファレンスのダイジェスト
・オブ・テクニカル・ペーパーの90〜91頁(198
51EEE International 5olid
−3tate C1rcuits Confere
nce、Digest ofTechnical P
apers pp 90〜91 )に示されているよう
に、乗算器出力と算術論理演算器(ALU)入力との間
に、ある限定されたビット数のシフト可能な回路を備え
たものが提案されている。しかしこのシフト回路は入力
データのスケーリング等を目的としたものであり1倍精
度演算に必要となるビット数のシフトは、一度累積器レ
ジスタ(アキュムレータ)に転送してから算術論理演算
器(ALU)のシフト機能か、又は別に設けられている
シフタ回路を何回も使用しなければならず。
・イー・イー・イー・インターナショナル・ソリッド・
ステート・サーキツツ・コンファレンスのダイジェスト
・オブ・テクニカル・ペーパーの90〜91頁(198
51EEE International 5olid
−3tate C1rcuits Confere
nce、Digest ofTechnical P
apers pp 90〜91 )に示されているよう
に、乗算器出力と算術論理演算器(ALU)入力との間
に、ある限定されたビット数のシフト可能な回路を備え
たものが提案されている。しかしこのシフト回路は入力
データのスケーリング等を目的としたものであり1倍精
度演算に必要となるビット数のシフトは、一度累積器レ
ジスタ(アキュムレータ)に転送してから算術論理演算
器(ALU)のシフト機能か、又は別に設けられている
シフタ回路を何回も使用しなければならず。
倍精度乗算、積和演算を実行させるのに好適な回路構成
とは言えない0例えば第6図に示す倍精度乗算を実行す
る場合、AXD、BXCの部分積は、上位nビットはA
XCに、下位nビットはBXDの部分積に加算しなけれ
ばならないが、上記公知例の構成では±nビットのシフ
トを1命令で実行することができず、しかも2nビツト
長のアキュムレータは1本しかないため、上位20ビツ
トと下位2nビツトを一度に求めることができず、同じ
演算を重複して行なう必要もあり、1回の倍精度演算を
実行するのに非常に多くの処理ステップ数を必要とする
問題がある。
とは言えない0例えば第6図に示す倍精度乗算を実行す
る場合、AXD、BXCの部分積は、上位nビットはA
XCに、下位nビットはBXDの部分積に加算しなけれ
ばならないが、上記公知例の構成では±nビットのシフ
トを1命令で実行することができず、しかも2nビツト
長のアキュムレータは1本しかないため、上位20ビツ
トと下位2nビツトを一度に求めることができず、同じ
演算を重複して行なう必要もあり、1回の倍精度演算を
実行するのに非常に多くの処理ステップ数を必要とする
問題がある。
上記従来技術では、その処理装置が扱かつているデータ
ビット長を超える高精度のデータ演算器 −理につ
いては充分考慮されておらず、可能ではあるが処理速度
性能が著しく低下してしまうという問題があった。
ビット長を超える高精度のデータ演算器 −理につ
いては充分考慮されておらず、可能ではあるが処理速度
性能が著しく低下してしまうという問題があった。
本発明はその処理装置が扱かつているデータビット長を
超える高精度のデータ演算処理が必要な場合でも、処理
速度性能を大きく低tさせることなく実行できる手段を
提供することを目的としている。
超える高精度のデータ演算処理が必要な場合でも、処理
速度性能を大きく低tさせることなく実行できる手段を
提供することを目的としている。
〔課題を解決するための手段J
上記目的を達成するため、乗算結果を算術論理演算回路
へ入力するバスの途中、あるいは算術論理演算回路の出
力をアキュムレータ・レジスタへ入力するパスの途中、
あるいはアキュムレータ・レジスタから算術論理演算回
路へ入力するパスの途中のいずれか1つに、左右シフト
回路を具備したものである。
へ入力するバスの途中、あるいは算術論理演算回路の出
力をアキュムレータ・レジスタへ入力するパスの途中、
あるいはアキュムレータ・レジスタから算術論理演算回
路へ入力するパスの途中のいずれか1つに、左右シフト
回路を具備したものである。
上記シフト回路は指定されたパラメータにより、入力デ
ータを右又は左へ指定されているビット数だけシフトし
たデータを出力する。シフト191路から出力されたデ
ータは、ALUへ入力される。その結果、一度アキュム
レータへ乗算結果を送ってからシフトを行ない、その後
に改めて算術演算処理を行なうという手間をかける必要
がなくなる。
ータを右又は左へ指定されているビット数だけシフトし
たデータを出力する。シフト191路から出力されたデ
ータは、ALUへ入力される。その結果、一度アキュム
レータへ乗算結果を送ってからシフトを行ない、その後
に改めて算術演算処理を行なうという手間をかける必要
がなくなる。
以下1本発明の実施例を、図面により説明する。
第1図は本発明の一例を示したブロック図である6図中
、101,102はnビットの被乗数、乗数を格納して
いるデータメモリ、103,104゜108.109,
111は複数の入力の内の1つを選択して出力するマル
チプレクサ、105は乗算器、106,112,113
は2nビツト以上のビット長のレジスタ、107はスル
ーと、nビット左シフトと、nビット右シフトとの機能
を持つシフト回路、110は算術論理演算回路である。
、101,102はnビットの被乗数、乗数を格納して
いるデータメモリ、103,104゜108.109,
111は複数の入力の内の1つを選択して出力するマル
チプレクサ、105は乗算器、106,112,113
は2nビツト以上のビット長のレジスタ、107はスル
ーと、nビット左シフトと、nビット右シフトとの機能
を持つシフト回路、110は算術論理演算回路である。
本実施例では乗算器と算術論理演算器は並列に動作する
ものとし、第4図(A)と第6図を使って20ビツト長
のデータを乗算して4nビツト長の結果を得る倍精度乗
算の一実現例を示す。
ものとし、第4図(A)と第6図を使って20ビツト長
のデータを乗算して4nビツト長の結果を得る倍精度乗
算の一実現例を示す。
第6図に示されるように、2nビツト長データの乗算結
果は、4nビツト長となり、上位2nビツトと下位2n
ビツトは別々にレジスタへ格納される。いま、レジスタ
112を上位、113を下位2nビツトの格納先とする
と、第4図(A)のような処理手順が考えられる。
果は、4nビツト長となり、上位2nビツトと下位2n
ビツトは別々にレジスタへ格納される。いま、レジスタ
112を上位、113を下位2nビツトの格納先とする
と、第4図(A)のような処理手順が考えられる。
ステップ1でまず101,102から被乗数、乗数の下
位データB、Dをそれぞれ読み出し、103.104を
経て乗算器105へ入力して、乗算結果をレジスタ10
6に格納する。ステップ2では、101,102からそ
れぞれ被乗数1乗数の上位データA、Cを読み出し、1
03,104を経て乗算器105へ入力して乗算結果を
レジスタ106に格納する。これに先行して、ステップ
1で得られたレジスタ106の内容を、107゜109
.110,111を経てレジスタ113へ転送する。こ
のときシフタ107では0シフト機能が使われる。ステ
ップ3では101から被乗数の上位データAを、102
から乗数の下位データDを読み出し、103,104を
経て乗算器105に入力し、乗算結果をレジスタ106
に格納する。
位データB、Dをそれぞれ読み出し、103.104を
経て乗算器105へ入力して、乗算結果をレジスタ10
6に格納する。ステップ2では、101,102からそ
れぞれ被乗数1乗数の上位データA、Cを読み出し、1
03,104を経て乗算器105へ入力して乗算結果を
レジスタ106に格納する。これに先行して、ステップ
1で得られたレジスタ106の内容を、107゜109
.110,111を経てレジスタ113へ転送する。こ
のときシフタ107では0シフト機能が使われる。ステ
ップ3では101から被乗数の上位データAを、102
から乗数の下位データDを読み出し、103,104を
経て乗算器105に入力し、乗算結果をレジスタ106
に格納する。
これに先行して、ステップ2で得られたレジスタ106
の内容を、107,109,110,111を経てレジ
スタ112へ転送する。このときもシフタ107では0
シフト機能が使われる。ステップ4ではステップ3で得
られたレジスタ106の内容をシフタ107で+nシフ
ト(nビットの左シフト)して109を経てALUII
Oへ入力し、同時にレジスタ113の内容を108を経
て110へ入力し、加算して結果を再び113へ格納す
る。
の内容を、107,109,110,111を経てレジ
スタ112へ転送する。このときもシフタ107では0
シフト機能が使われる。ステップ4ではステップ3で得
られたレジスタ106の内容をシフタ107で+nシフ
ト(nビットの左シフト)して109を経てALUII
Oへ入力し、同時にレジスタ113の内容を108を経
て110へ入力し、加算して結果を再び113へ格納す
る。
このステップでは乗算器105は動作せず、レジスタ1
06の内容は保持される。また、加算の結果として桁上
がりのキャリーが生じることがあるが、それはそのステ
ップで補正する。ステップ5では101から被乗数の下
位データB、102から乗数の上位データCを読み出し
、103,104を経て乗算器105へ入力し1乗算結
果をレジスタ106に格納する。これに先行して、ステ
ップ4で保持されていたレジスタ106の内容をシフタ
107で−nシフト(nビットの算術右シフト)して1
09を経て110へ入力し、同時にレジスタ112の内
容を108を経て110へ入力し、加算すると共に、ス
テップ4での加算でキャリーが生じていた場合は、その
分も加算してその結果を再び112に格納する。ステッ
プ6ではステップ5で得られたレジスタ106の内容を
シフタ107で+nシフト(nビットの左シフト)して
109を経て110へ入力し、同時にレジスタ113の
内容を108を経て110へ入力し、加算して結果を再
び113へ格納する。このステップでは乗算器105は
動作せず、レジスタ126の内容は保持される。また、
加算の結果として桁上がりのキャリーが生じることがあ
るが、それは次のステップで補正する。なお、このステ
ップで倍精度乗算の下位2nビット分の乗算結果がレジ
スタ113で生成されたことになる。ステップ7ではス
テップ6で保持されていたレジスタ106の内容B、C
をシフタ127で−nシフト(nビットの算術右シフト
)して109を経て110へ入力し、同時にレジスタ1
12の内容を108を経て110へ入力し、加算すると
共に、ステップ6での加算でキャリーが生じていた場合
は、その分も加算してその結果を再び112に格納する
。
06の内容は保持される。また、加算の結果として桁上
がりのキャリーが生じることがあるが、それはそのステ
ップで補正する。ステップ5では101から被乗数の下
位データB、102から乗数の上位データCを読み出し
、103,104を経て乗算器105へ入力し1乗算結
果をレジスタ106に格納する。これに先行して、ステ
ップ4で保持されていたレジスタ106の内容をシフタ
107で−nシフト(nビットの算術右シフト)して1
09を経て110へ入力し、同時にレジスタ112の内
容を108を経て110へ入力し、加算すると共に、ス
テップ4での加算でキャリーが生じていた場合は、その
分も加算してその結果を再び112に格納する。ステッ
プ6ではステップ5で得られたレジスタ106の内容を
シフタ107で+nシフト(nビットの左シフト)して
109を経て110へ入力し、同時にレジスタ113の
内容を108を経て110へ入力し、加算して結果を再
び113へ格納する。このステップでは乗算器105は
動作せず、レジスタ126の内容は保持される。また、
加算の結果として桁上がりのキャリーが生じることがあ
るが、それは次のステップで補正する。なお、このステ
ップで倍精度乗算の下位2nビット分の乗算結果がレジ
スタ113で生成されたことになる。ステップ7ではス
テップ6で保持されていたレジスタ106の内容B、C
をシフタ127で−nシフト(nビットの算術右シフト
)して109を経て110へ入力し、同時にレジスタ1
12の内容を108を経て110へ入力し、加算すると
共に、ステップ6での加算でキャリーが生じていた場合
は、その分も加算してその結果を再び112に格納する
。
このステップ倍精度乗算の上位2nビット分の乗算結果
がレジスタ112で生成されたことになる。
がレジスタ112で生成されたことになる。
なお、このステップでの乗算器の動作は、次の倍精度乗
算のステップlを並列に行なうこともできる1本処理手
順は第1図で示した実施例によって実現できる手順の1
例を示したものであり、この手順によって本発明を制限
するものではない、さらに第1図中のシフタ107は1
09と110の間にあっても効果は変わらないし、第1
図中の各マルチプレクサは本発明に特に必要なものでも
なし)。
算のステップlを並列に行なうこともできる1本処理手
順は第1図で示した実施例によって実現できる手順の1
例を示したものであり、この手順によって本発明を制限
するものではない、さらに第1図中のシフタ107は1
09と110の間にあっても効果は変わらないし、第1
図中の各マルチプレクサは本発明に特に必要なものでも
なし)。
第211!lは本発明の第2の実施例を示したブロック
図である0図中のシフタ207が算術論理演算回路21
0とマルチプレクサ211の間に移動したもので、残り
の部分については第1図と同じである。
図である0図中のシフタ207が算術論理演算回路21
0とマルチプレクサ211の間に移動したもので、残り
の部分については第1図と同じである。
第2図の実施例による倍精度乗算の処理手順の1例を第
4図(H)に示す。
4図(H)に示す。
ステップlでまず201から被乗数の上位データA、2
02から乗数の下位データDを読み出し、203.20
4を経て乗算器205へ入力し、乗算結果をレジスタ2
06に格納する。ステップ2では、ステップ1で得られ
たレジスタ206の内容を、209,210,207,
211を経てレジスタ213へ転送する。このときシフ
タ207では、0シフト機能が使われる。このステップ
では乗算器205は動作せず、レジスタ206の内容は
そのまま保持する。ステップ3では201から被乗数の
下位データ8.202から乗数の上位データCを読み出
し、203,204を経て乗算器20層へ入力し、乗算
結果をレジスタ206へ格納する。これに先行して、ス
テップ2で保持されていたレジスタ206の内容を、2
09,210゜207.211を経てレジスタ212へ
転送する。
02から乗数の下位データDを読み出し、203.20
4を経て乗算器205へ入力し、乗算結果をレジスタ2
06に格納する。ステップ2では、ステップ1で得られ
たレジスタ206の内容を、209,210,207,
211を経てレジスタ213へ転送する。このときシフ
タ207では、0シフト機能が使われる。このステップ
では乗算器205は動作せず、レジスタ206の内容は
そのまま保持する。ステップ3では201から被乗数の
下位データ8.202から乗数の上位データCを読み出
し、203,204を経て乗算器20層へ入力し、乗算
結果をレジスタ206へ格納する。これに先行して、ス
テップ2で保持されていたレジスタ206の内容を、2
09,210゜207.211を経てレジスタ212へ
転送する。
このときシフタ207では0シフト機能が使われる。ス
テップ4ではステップ3で得られたレジスタ206の内
容を209を経て210へ入力し、同時にレジスタ21
3の内容を208を経て210へ入力し、加算した結果
をシフタ207で+nシフト(nビットの左シフト)し
て211を経て再びレジスタ213へ格納する。このス
テップでは乗算器205は動作せず、レジスタ206の
内容は保持する。ステップ5では201,202から被
乗数、乗数の下位データB、Dを読み出し、203.2
04を経て乗算器205へ入力し、乗算結果をレジスタ
206へ格納する。これに先行して、ステップ4で保持
されていたレジスタ206の内容を209を経て210
へ入力し、同時にレジスタ212の内容を208を経て
210へ入力し、加算した結果をシフト207で−nシ
フト(nビットの算術右シフト)して211を経て再び
レジスタ212へ格納する。ステップ6では201.2
02から被乗数、乗数の上位データA。
テップ4ではステップ3で得られたレジスタ206の内
容を209を経て210へ入力し、同時にレジスタ21
3の内容を208を経て210へ入力し、加算した結果
をシフタ207で+nシフト(nビットの左シフト)し
て211を経て再びレジスタ213へ格納する。このス
テップでは乗算器205は動作せず、レジスタ206の
内容は保持する。ステップ5では201,202から被
乗数、乗数の下位データB、Dを読み出し、203.2
04を経て乗算器205へ入力し、乗算結果をレジスタ
206へ格納する。これに先行して、ステップ4で保持
されていたレジスタ206の内容を209を経て210
へ入力し、同時にレジスタ212の内容を208を経て
210へ入力し、加算した結果をシフト207で−nシ
フト(nビットの算術右シフト)して211を経て再び
レジスタ212へ格納する。ステップ6では201.2
02から被乗数、乗数の上位データA。
Cを読み出し、203,204を経て乗算器206へ入
力し、乗算結果をレジスタ206へ格納する。
力し、乗算結果をレジスタ206へ格納する。
これに先行して、ステップ5で得られたレジスタ206
の内容を209を経て210へ入力し、同時にレジスタ
213の内容を208を経て21(Jへ入力し、加算し
た結果を20’/、211を経て再ヒレシスタ213へ
格納する。このときシフタ20?ではOシフトが使われ
る。このステップでは倍精度乗算の下位20ビット分の
乗算結果がレジスタ213で生成されたことになる。ま
た、加算の結果として桁上がりのキャリーが生じること
があるが、それは次のステップで補正する。ステップ7
ではステップ6で得られたレジスタ206の内容を20
9を経て210へ入力し、同時にレジスタ212の内容
を208を経て210へ入力し、加算すると共に、ステ
ップ6での加算でキャリーが生じていた場合には、その
分も加算してその結果を207.211を経て再びレジ
スタ212へ格納する。このステップで倍精度乗算の上
位2nビット分の乗算結果がレジスタ212で生成され
たことになる。なお、このステップで次の倍精度乗算の
ステップ1を並列に行なうこともできる0本処理手順は
第2図で示した実施例によって実現できる手順の1例を
示したものであり、この手順によって本発明を制限する
ものではない、さらに第2図中のシフタ207は211
と212゜213の間にあっても効果は炭わらないし、
第2図中の各マルチプレクサは本発明に特に必要なもの
ではない。
の内容を209を経て210へ入力し、同時にレジスタ
213の内容を208を経て21(Jへ入力し、加算し
た結果を20’/、211を経て再ヒレシスタ213へ
格納する。このときシフタ20?ではOシフトが使われ
る。このステップでは倍精度乗算の下位20ビット分の
乗算結果がレジスタ213で生成されたことになる。ま
た、加算の結果として桁上がりのキャリーが生じること
があるが、それは次のステップで補正する。ステップ7
ではステップ6で得られたレジスタ206の内容を20
9を経て210へ入力し、同時にレジスタ212の内容
を208を経て210へ入力し、加算すると共に、ステ
ップ6での加算でキャリーが生じていた場合には、その
分も加算してその結果を207.211を経て再びレジ
スタ212へ格納する。このステップで倍精度乗算の上
位2nビット分の乗算結果がレジスタ212で生成され
たことになる。なお、このステップで次の倍精度乗算の
ステップ1を並列に行なうこともできる0本処理手順は
第2図で示した実施例によって実現できる手順の1例を
示したものであり、この手順によって本発明を制限する
ものではない、さらに第2図中のシフタ207は211
と212゜213の間にあっても効果は炭わらないし、
第2図中の各マルチプレクサは本発明に特に必要なもの
ではない。
第2図の実施例は第1図の実施例に比べてシフト回路の
位置の違いから、処理手順が少し異なるだけで第4図の
処理ステップ数は同じであるが、命令コード上、加算動
作時のソースレジスタとデスティネーションレジスタと
を別々に指定できるとすれば、処理ステップ数を第1図
の実施例よりも低減することができる効果がある。その
処理手順の1例を第5図の(A)に示す、ステップ1は
第1510(B)のステップ1と同じである。ステップ
2では201から被乗数の下位データB。
位置の違いから、処理手順が少し異なるだけで第4図の
処理ステップ数は同じであるが、命令コード上、加算動
作時のソースレジスタとデスティネーションレジスタと
を別々に指定できるとすれば、処理ステップ数を第1図
の実施例よりも低減することができる効果がある。その
処理手順の1例を第5図の(A)に示す、ステップ1は
第1510(B)のステップ1と同じである。ステップ
2では201から被乗数の下位データB。
202から乗数の上位データCを読み出し、203゜2
04を経て乗算器205へ入力して乗算結果をレジスタ
206へ格納する。これに先行して、ステップ1で得ら
れたレジスタ206の内容を209゜210.207,
211を経てレジスタ213へ転送する。このときシフ
タ207では0278機能が使われる。ステップ3では
ステップ2で得られたレジスタ206の内容を、209
を経て210へ入力し、同時にレジスタ213の内容を
208を経て210へ入力し、加算した結果をシフタ2
07で−nシフト(nビットの算術右シフト)して21
1を経て加算前とは別のレジスタ212へ格納する。こ
のステップでは乗算器205は動作せず、レジスタ20
6の内容は保持される。ステップ4では201,202
から被乗数、乗数の下位データB、Dを読み出し、20
3,204を経て乗算器205へ入力し、*算結果をレ
ジスタ206へ格納する。これに先行して、ステップ3
で保持されていたレジスタ206の内容を209を経て
210へ入力し、1illi1時にレジスタ213の内
容を208を経て210へ入力し、加算した結果をシフ
タ207で+nシフト(nビットの左シフト)して21
1を経て再びレジスタ213へ格納する。ステップ5は
第4図(B)のステップ6と同じであり、ステップ6も
同図のステップ7と同じである。このように、第5図(
A)の処理手順例は、第4図(H)の例に比べて1ステ
ップ分の処理ステップ数を低減することができる。
04を経て乗算器205へ入力して乗算結果をレジスタ
206へ格納する。これに先行して、ステップ1で得ら
れたレジスタ206の内容を209゜210.207,
211を経てレジスタ213へ転送する。このときシフ
タ207では0278機能が使われる。ステップ3では
ステップ2で得られたレジスタ206の内容を、209
を経て210へ入力し、同時にレジスタ213の内容を
208を経て210へ入力し、加算した結果をシフタ2
07で−nシフト(nビットの算術右シフト)して21
1を経て加算前とは別のレジスタ212へ格納する。こ
のステップでは乗算器205は動作せず、レジスタ20
6の内容は保持される。ステップ4では201,202
から被乗数、乗数の下位データB、Dを読み出し、20
3,204を経て乗算器205へ入力し、*算結果をレ
ジスタ206へ格納する。これに先行して、ステップ3
で保持されていたレジスタ206の内容を209を経て
210へ入力し、1illi1時にレジスタ213の内
容を208を経て210へ入力し、加算した結果をシフ
タ207で+nシフト(nビットの左シフト)して21
1を経て再びレジスタ213へ格納する。ステップ5は
第4図(B)のステップ6と同じであり、ステップ6も
同図のステップ7と同じである。このように、第5図(
A)の処理手順例は、第4図(H)の例に比べて1ステ
ップ分の処理ステップ数を低減することができる。
第3図は本発明の第3の実施例を示したブロック図であ
る0図中のシフト回路307が、レジスタ312,31
3とマルチプレクサ308の間に移動したもので、残り
の部分については第1図。
る0図中のシフト回路307が、レジスタ312,31
3とマルチプレクサ308の間に移動したもので、残り
の部分については第1図。
第2図と同様である。第3図の実施例による倍精度乗算
の処理手順の一例を第4図(C)に示す。
の処理手順の一例を第4図(C)に示す。
ステップ1でまず301から被乗数の上位データA、3
02から乗数の下位データDを読み出し、303.30
4を経て乗算器305へ入力し1乗算結果をレジスタ3
06へ格納する。ステップ2では、、ステップ1で得ら
れたレジスタ306の内容を、309,310,311
を経てレジスタ313へ転送する。このステップでは乗
算器305は動作せず、レジスタ306の内容は保持す
る。
02から乗数の下位データDを読み出し、303.30
4を経て乗算器305へ入力し1乗算結果をレジスタ3
06へ格納する。ステップ2では、、ステップ1で得ら
れたレジスタ306の内容を、309,310,311
を経てレジスタ313へ転送する。このステップでは乗
算器305は動作せず、レジスタ306の内容は保持す
る。
ステップ3では301から被乗数の下位データB、30
2から乗数の上位データCを読み出し、303゜304
を経て乗算器305へ入力し1乗算結果をレジスタ30
6へ格納する。これに先行して、ステップ2で保持され
ていたレジスタ306の内容を、309,310,31
1を経てレジスタ312へ転送する。ステップ4ではス
テップ3で得られたレジスタ306の内容を309を経
て310へ入力し、同時にレジスタ313の内容を30
7゜308を経て310へ入力し、加算した結果を31
1を経て再びレジスタ313へ格納する。このときシフ
タ307では0278機能が使われる。
2から乗数の上位データCを読み出し、303゜304
を経て乗算器305へ入力し1乗算結果をレジスタ30
6へ格納する。これに先行して、ステップ2で保持され
ていたレジスタ306の内容を、309,310,31
1を経てレジスタ312へ転送する。ステップ4ではス
テップ3で得られたレジスタ306の内容を309を経
て310へ入力し、同時にレジスタ313の内容を30
7゜308を経て310へ入力し、加算した結果を31
1を経て再びレジスタ313へ格納する。このときシフ
タ307では0278機能が使われる。
このステップでは乗算器305は動作せず、レジスタ3
06の内容は保持する。ステップ5では301.302
から被乗数2乗数の下位データB。
06の内容は保持する。ステップ5では301.302
から被乗数2乗数の下位データB。
Dを読み出し、303,304を経て乗算器305へ入
力し1乗算結果をレジスタ306へ格納する。
力し1乗算結果をレジスタ306へ格納する。
これに先行して、ステップ4で保持されていたレジスタ
306の内容を309を経て310へ入力し、同時にレ
ジスタ312の内容を307,308を経て310へ入
力し、加算した結果を311を経て再びレジスタ312
へ格納する。このときシフタ307では0シフト機能が
使われる。ステップ6では301,302から被乗数、
乗数の上位データA、Cを読み出し、303,304を
経て乗算器305へ入力し、乗算結果をレジスタ306
へ入力する。これに先行して、ステップ5で得られたレ
ジスタ306の内容を309を経て310へ入力し、同
時にレジスタ313の内容をシフタ307で+nシフト
(nビットの左シフト)して308を経て310へ入力
し、加算した結果を311を経て再びレジスタ313へ
格納する。このステップでは倍精度乗算の下位20ビッ
ト分の乗算結果がレジスタ313で生成されたことにな
る。また、加算の結果として桁上がりのキャリーが生じ
ることがあるが、それは次のステップで補正する。ステ
ップ7ではステップ6で得られたレジスタ306の内容
を309を経て310へ入力し、同時にレジスタ312
の内容をシフタ307で−nシフト(nビットの算術右
シフト)して308を経て310へ入力し、加算すると
共に。
306の内容を309を経て310へ入力し、同時にレ
ジスタ312の内容を307,308を経て310へ入
力し、加算した結果を311を経て再びレジスタ312
へ格納する。このときシフタ307では0シフト機能が
使われる。ステップ6では301,302から被乗数、
乗数の上位データA、Cを読み出し、303,304を
経て乗算器305へ入力し、乗算結果をレジスタ306
へ入力する。これに先行して、ステップ5で得られたレ
ジスタ306の内容を309を経て310へ入力し、同
時にレジスタ313の内容をシフタ307で+nシフト
(nビットの左シフト)して308を経て310へ入力
し、加算した結果を311を経て再びレジスタ313へ
格納する。このステップでは倍精度乗算の下位20ビッ
ト分の乗算結果がレジスタ313で生成されたことにな
る。また、加算の結果として桁上がりのキャリーが生じ
ることがあるが、それは次のステップで補正する。ステ
ップ7ではステップ6で得られたレジスタ306の内容
を309を経て310へ入力し、同時にレジスタ312
の内容をシフタ307で−nシフト(nビットの算術右
シフト)して308を経て310へ入力し、加算すると
共に。
ステップ6での加算でキャリーが生じていた場合には、
その分も加算してその結果を311を経て再びレジスタ
312へ格納する。このステップで倍精度乗算の上位2
nビット分の乗算結果がレジスタ312で生成されたこ
とになる。なお、このステップで次の倍精度乗算のステ
ップ1を並列に行なうこともできる。本処理手順は第3
図で示した実施例によって実現できる手順の1例を示し
たものであり、この手順によって本発明を制限するもの
ではない、さらに第3図中のシフタ307は308と3
10の間にあっても効果は変わらないし、第3図中の各
マルチプレクサは本発明に特に必要なものではない。
その分も加算してその結果を311を経て再びレジスタ
312へ格納する。このステップで倍精度乗算の上位2
nビット分の乗算結果がレジスタ312で生成されたこ
とになる。なお、このステップで次の倍精度乗算のステ
ップ1を並列に行なうこともできる。本処理手順は第3
図で示した実施例によって実現できる手順の1例を示し
たものであり、この手順によって本発明を制限するもの
ではない、さらに第3図中のシフタ307は308と3
10の間にあっても効果は変わらないし、第3図中の各
マルチプレクサは本発明に特に必要なものではない。
第3図の実施例は第1図、第2図の実施例と比べてシフ
タの位置が違い、処理手順が少し異なるが、第4図の処
理ステップ数は同じである。しかし第2図の実施例の場
合と同様に、命令コード上加算動作時のソースレジスタ
とデスティネーションレジスタとを別々に指定できると
すれば、処理ステップ数を第1図の実施例だけでなく、
第2図の実施例よりもさらに低減できる効果がある。そ
の処理手順の1例を第5図(B)に示す、ステップ1は
第4図(C)のステップlと同じである。
タの位置が違い、処理手順が少し異なるが、第4図の処
理ステップ数は同じである。しかし第2図の実施例の場
合と同様に、命令コード上加算動作時のソースレジスタ
とデスティネーションレジスタとを別々に指定できると
すれば、処理ステップ数を第1図の実施例だけでなく、
第2図の実施例よりもさらに低減できる効果がある。そ
の処理手順の1例を第5図(B)に示す、ステップ1は
第4図(C)のステップlと同じである。
ステップ2では301から被乗数の下位データB、30
2から乗数の上位データCを読み出し、303゜304
を経て乗算器305へ入力して乗算結果をレジスタ30
6へ格納する。これに先行して、ステップ1で得られた
レジスタ306の内容を309゜310.311を経て
レジスタ312へ転送する。
2から乗数の上位データCを読み出し、303゜304
を経て乗算器305へ入力して乗算結果をレジスタ30
6へ格納する。これに先行して、ステップ1で得られた
レジスタ306の内容を309゜310.311を経て
レジスタ312へ転送する。
ステップ3では301,302から被乗数、乗数の下位
データB、Dを読み出し、303,304を経て乗算器
305へ入力し、乗算結果をレジスタ306へ格納する
。これに先行して、ステップ2で得られたレジスタ30
6の内容を309を経て310へ入力し、同時にレジス
タ312の内容を307,308を経て310へ入力し
、加算した結果を311を経て再びレジスタ312へ格
納する。このときシフタ307では0シフト機能が使わ
れる。ステップ4は第4図(C)のステップ6と同じで
あり、ステップ5は第4図(C)のステップ7と同じで
ある。このように、第5図(13)の処理手順例は、第
4図(C)の例に比べて2ステップ分の処理ステップ数
を低減することができ、これは第2図の実施例において
第5図(A)で示した処理手順よりも短かいという利点
がある。
データB、Dを読み出し、303,304を経て乗算器
305へ入力し、乗算結果をレジスタ306へ格納する
。これに先行して、ステップ2で得られたレジスタ30
6の内容を309を経て310へ入力し、同時にレジス
タ312の内容を307,308を経て310へ入力し
、加算した結果を311を経て再びレジスタ312へ格
納する。このときシフタ307では0シフト機能が使わ
れる。ステップ4は第4図(C)のステップ6と同じで
あり、ステップ5は第4図(C)のステップ7と同じで
ある。このように、第5図(13)の処理手順例は、第
4図(C)の例に比べて2ステップ分の処理ステップ数
を低減することができ、これは第2図の実施例において
第5図(A)で示した処理手順よりも短かいという利点
がある。
なお、第3図の実施例で示した第4図(C)、第5図(
B)の処理手順例では、第4図(C)のステップ5.第
5図(B)のステップ3でレジスタ312に格納される
加算結果が桁上がりキャリーを生じる場合があるが、そ
の後のシフタ307によるnビットの算術右シフトでは
そのキャリー情報も必要となるため、少なくとも上位2
nビット分を格納するレジスタ312は1ビット以上の
拡張ビットを持つ等の対応で、キャリー情報を保持する
ことが必要である。
B)の処理手順例では、第4図(C)のステップ5.第
5図(B)のステップ3でレジスタ312に格納される
加算結果が桁上がりキャリーを生じる場合があるが、そ
の後のシフタ307によるnビットの算術右シフトでは
そのキャリー情報も必要となるため、少なくとも上位2
nビット分を格納するレジスタ312は1ビット以上の
拡張ビットを持つ等の対応で、キャリー情報を保持する
ことが必要である。
上記各実施例の左右シフト回路は、±nビット−のシフ
ト機能とOシフトのみを記しているが、それらのビット
数のシフトを含む任意ビット数のシフトが可能なシフト
回路が使われていても、本発明に含まれることは言うま
でもない。
ト機能とOシフトのみを記しているが、それらのビット
数のシフトを含む任意ビット数のシフトが可能なシフト
回路が使われていても、本発明に含まれることは言うま
でもない。
本発明によれば、例えば倍精度乗算や倍精度積和演算の
場合では、事実上、ALUでのシフト処理を省略するこ
とができるので、演算に要する処理時間を低減すること
ができるという効果がある。
場合では、事実上、ALUでのシフト処理を省略するこ
とができるので、演算に要する処理時間を低減すること
ができるという効果がある。
第1図は本発明の第1の実施例を示したブロック図、第
2図は第2の実施例を示したブロック図。 第3図は第3の実施例を示したブロック図、第4図(A
)4よ第1図の実施例による倍精度乗算の処理手順の一
例、第4図(B)および第5図(A)は第2図の実施例
による倍精度乗算の処理手順の例、第4図(C)および
第5図(B)は第3図の実施例による倍精度乗算の処理
手順の例、第6図は倍精度乗算フローを示す図である。 101.102,201,202,301,302・・
・データメモリ、103,104,108,109゜1
11.203,204,208,209,211゜30
3.304,308,309,311・・・マルチプレ
クサ、105,205,305・・・乗算器。 106.112,113,206,212,213゜3
06、312.313−1/ジスタ、lo7゜207.
307・・・シフト回路、IIQ、21Q。 310・・・算術論理演算回路。 ゛・、υ 拓 1 面 ■ 2 回 ¥1 φ 口 G9ン (C) 壬 5 図 (A) 廼 6 口
2図は第2の実施例を示したブロック図。 第3図は第3の実施例を示したブロック図、第4図(A
)4よ第1図の実施例による倍精度乗算の処理手順の一
例、第4図(B)および第5図(A)は第2図の実施例
による倍精度乗算の処理手順の例、第4図(C)および
第5図(B)は第3図の実施例による倍精度乗算の処理
手順の例、第6図は倍精度乗算フローを示す図である。 101.102,201,202,301,302・・
・データメモリ、103,104,108,109゜1
11.203,204,208,209,211゜30
3.304,308,309,311・・・マルチプレ
クサ、105,205,305・・・乗算器。 106.112,113,206,212,213゜3
06、312.313−1/ジスタ、lo7゜207.
307・・・シフト回路、IIQ、21Q。 310・・・算術論理演算回路。 ゛・、υ 拓 1 面 ■ 2 回 ¥1 φ 口 G9ン (C) 壬 5 図 (A) 廼 6 口
Claims (1)
- 【特許請求の範囲】 1、nビット以上のビット長を持つ乗数、被乗数を入力
とし、2nビット以上の演算結果を出力する乗算器と、
2nビット以上のビット長を持つデータを演算する算術
論理演算器と、2nビット以上のビット長を持つ複数の
レジスタを少なくとも具備し、該乗算器出力は該算術論
理演算回路の一方の入力となり、該レジスタの出力は該
算術論理演算回路の他方の入力となり、該算術論理演算
回路の出力は該レジスタの入力となる情報処理装置であ
つて、nビットの左右シフト機能を持つ回路を具備する
ことを特徴とした情報処理装置。 2、請求項1記載の情報処理装置の中にあるnビットの
左右シフト回路が該算術演算回路の入力と該乗算器の出
力との間に存在することを特徴とする情報処理装置。 3、請求項1記載の情報処理装置の中にあるnビットの
左右シフト回路が該算術論理演算回路の出力と該レジス
タの入力との間に存在することを特徴とする情報処理装
置。 4、請求項1記載の情報処理装置の中にあるnビットの
左右シフト回路が該レジスタの出力と該算術論理演算回
路の入力との間に存在することを特徴とする情報処理装
置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13134689A JPH02310621A (ja) | 1989-05-26 | 1989-05-26 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP13134689A JPH02310621A (ja) | 1989-05-26 | 1989-05-26 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH02310621A true JPH02310621A (ja) | 1990-12-26 |
Family
ID=15055791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP13134689A Pending JPH02310621A (ja) | 1989-05-26 | 1989-05-26 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH02310621A (ja) |
-
1989
- 1989-05-26 JP JP13134689A patent/JPH02310621A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6009451A (en) | Method for generating barrel shifter result flags directly from input data | |
US5422805A (en) | Method and apparatus for multiplying two numbers using signed arithmetic | |
JP2662196B2 (ja) | 演算結果正規化方法及び装置 | |
JP3589719B2 (ja) | 算術演算の結果として生じる正および負のオーバーフローのハードウェアによる効率的な取り扱い方法 | |
US6115729A (en) | Floating point multiply-accumulate unit | |
US4866652A (en) | Floating point unit using combined multiply and ALU functions | |
EP1049025B1 (en) | Method and apparatus for arithmetic operations | |
US5184318A (en) | Rectangular array signed digit multiplier | |
JPH02196328A (ja) | 浮動小数点演算装置 | |
JPS60229140A (ja) | 倍精度乗算器 | |
US5426600A (en) | Double precision division circuit and method for digital signal processor | |
US6009450A (en) | Finite field inverse circuit | |
US4594680A (en) | Apparatus for performing quadratic convergence division in a large data processing system | |
EP0264048B1 (en) | Thirty-two bit bit-slice | |
US5144576A (en) | Signed digit multiplier | |
JP3476960B2 (ja) | 算術論理演算装置及び制御方法 | |
US5363322A (en) | Data processor with an integer multiplication function on a fractional multiplier | |
US5337265A (en) | Apparatus for executing add/sub operations between IEEE standard floating-point numbers | |
US5206826A (en) | Floating-point division cell | |
JP3579087B2 (ja) | 演算器およびマイクロプロセッサ | |
JPH02310621A (ja) | 情報処理装置 | |
JPH0820942B2 (ja) | 高速乗算器 | |
US20020178202A1 (en) | Floating point multiplier for delimited operands | |
EP1197874B1 (en) | Signal processor and product-sum operating device for use therein with rounding function | |
JP3547309B2 (ja) | 演算装置 |