JPH0876977A - 固定小数点演算装置 - Google Patents

固定小数点演算装置

Info

Publication number
JPH0876977A
JPH0876977A JP6212710A JP21271094A JPH0876977A JP H0876977 A JPH0876977 A JP H0876977A JP 6212710 A JP6212710 A JP 6212710A JP 21271094 A JP21271094 A JP 21271094A JP H0876977 A JPH0876977 A JP H0876977A
Authority
JP
Japan
Prior art keywords
bit
shift
instruction
multiplier
operand
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
Application number
JP6212710A
Other languages
English (en)
Inventor
Hideyo Tsuruta
英世 鶴田
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 Holdings Corp
Original Assignee
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP6212710A priority Critical patent/JPH0876977A/ja
Publication of JPH0876977A publication Critical patent/JPH0876977A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 回路規模を削減した固定小数点演算装置の提
供を目的とする。 【構成】 右バレルシフタ103は、制御部114の制
御によって、右シフト命令で指定されたオペランドを、
シフト数だけ右シフトする。左シフト数デコーダ104
は左シフト数fを2のべき乗数2fにデコードする。乗算
器109は、制御部114の制御によって、左シフト命
令で指定されるオペランドと、左シフトデコーダの出力
とを乗ずることによって左シフト命令を実現する。これ
により、右バレルシフタは、右バレルシフトのみを実現
すればよいので回路規模と面積を従来の約半分に削減で
きる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、情報処理装置において
固定小数点数の加減乗算やシフトなどの演算を実行する
固定小数点演算装置に関する。
【0002】
【従来の技術】近年、マイクロプロセサやマイクロコン
トローラなどの演算器において高速な演算が求められる
一方で、その回路規模の削減に対する要求が高まってい
る。演算器の回路規模がチップ全体に占める割合は高
く、演算器の回路規模を削減することによりLSIチップ
の消費電力や価格を下げることができる。
【0003】従来の固定小数点演算装置は、例えば特公
平6-1438や特開平5-265707などに開示されている。これ
らの固定小数点演算装置では、16ビット乗算器、32ビッ
ト左右バレルシフタ等の回路を備えることにより、16ビ
ット同士の演算だけでなく、それ以上のビット数の演算
を可能としている。例えば、16ビットの単精度に対する
倍精度の32ビット演算や、16ビットと24ビットとの演算
等である。16ビット乗算器、32ビット左右バレルシフタ
の代わりに、32ビット乗算器を備える構成も考えられる
が、32ビット乗算器の回路規模が大きく、その出力であ
る積が64ビットとなり32ビットデータバスのビット幅を
超え、配線によりチップ面積の増大させるので望ましく
ない。
【0004】図16は、固定小数点演算装置に用いられ
る32ビット左右バレルシフタを示す回路図である。この
回路は5段の選択器からなり、各段は32個の3入力1
出力の選択ゲートから構成される。第1、2、3、4、
5段は、前段からの32ビット入力データを、それぞれ
1、2、4、8、16ビット右シフト、左シフト、又は
シフトしないで出力する。制御信号f0〜f4はシフトビッ
ト数を表し、それぞれ各段のシフト動作を指示する。各
段のシフト動作の組み合わせにより、指定されたシフト
ビット数及びシフト方向のシフト動作が実現される。制
御信号signedは算術シフトか論理シフトかを指定する。
【0005】この構成により、32ビットの符号付きまた
は符号なし数を入力とし、これを任意の方向に任意のビ
ット数(31ビットまで)算術ないし論理バレルシフト
し、32ビットの出力を得ることができる。
【0006】
【発明が解決しようとする課題】しかしながら従来の固
定小数点演算装置によれば、任意方向へ任意ビット数シ
フト可能なバレルシフタを実装するため、回路規模が増
大するという問題があった。特に、左右バレルシフタ
は、多数の3入力1出力の選択ゲートを必要とし、ゲー
ト間の配線に要する面積も大きく、回路規模が大きいと
いう問題があった。その結果、ハードウェアが費やす素
子数,回路面積,消費電力が大きいものとなっていた。
【0007】この課題に鑑み、本発明は従来の固定小数
点演算装置に比べて、より小さい回路規模を有する固定
小数点演算装置を提供することを目的とする。
【0008】
【課題を解決するための手段】上記課題を解決するた
め、請求項1の発明に係る固定小数点演算装置は、右シ
フト命令で指定されたオペランドを、シフト数だけ右シ
フトする右バレルシフタと、左シフト数fを2のべき乗
数2fにデコードする左シフト数デコーダと、左シフト命
令で指定されるオペランドと、左シフトデコーダの出力
とを乗ずる乗算器と、シフト命令を解読し、当該命令が
左シフトを指示する場合には乗算器を用いて当該命令を
実行するよう制御し、当該命令が右シフトを指示する場
合には右バレルシフタを用いて当該命令を実行するよう
制御する制御部とを備えている。
【0009】請求項2の発明に係る固定小数点演算装置
は、2nビットまたはnビットのオペランドと演算結果
と演算中間値を保持すべき複数のレジスタからなるレジ
スタファイルと、レジスタファイルからの2nビットの
オペランドの上位nビットまたは下位nビットを選択す
るシフトオペランド上位下位選択器と、シフトオペラン
ド上位下位選択器からのnビット出力を与えられたシフ
ト数fだけ右にシフトし、2nビットの結果を前記レジ
スタファイルへ格納する右バレルシフタと、前記与えら
れたシフト数fを、2のべき乗数2fを表すnビットの2
進数にデコードして出力する左シフト数デコーダと、レ
ジスタファイルからの2nビットの乗数を保持する乗数
レジスタと、レジスタファイルからの2nビットの被乗
数を保持する被乗数レジスタと、被乗数レジスタからの
2nビットのオペランドの上位nビットまたは下位nビ
ットを選択する被乗数上位下位選択器と、乗数レジスタ
からの2nビットのオペランドの上位nビットまたは下
位nビット、または前記左シフト数デコーダのnビット
出力を選択する乗数選択器と、被乗数上位下位選択器か
らのnビット出力と乗数選択器からのnビット出力とを
乗じ、2nビットの積をレジスタファイルへ格納する乗
算器と、レジスタファイルからの二つの2nビットのオ
ペランド同士の論理和をとり2nビットの結果を前記レ
ジスタファイルへ格納するALUと、シフト命令を解読
し、当該命令が左シフトを指示する場合には乗算器を用
いて当該命令を実行するよう制御し、当該命令が右シフ
トを指示する場合には右バレルシフタを用いて当該命令
を実行するよう制御する制御部とを備えている。
【0010】請求項3の発明にかかる固定小数点演算装
置は請求項2に対して、前記制御部が、nビットオペラ
ンドの右シフト命令の場合には、右バレルシフタによ
り、nビットオペランドの左シフト命令の場合には、乗
算器により、2nビットオペランドの右シフト命令でシ
フト数fがnビット以上の場合には、右バレルシフタに
より、2nビットオペランドの右シフト命令でシフト数
fがnビット未満の場合には、右バレルシフタとALU
の演算の組み合わせにより、2nビットオペランドの左
シフト命令でシフト数fがnビット以上の場合には、右
バレルシフタと乗算器の演算の組み合わせにより、2n
ビットオペランドの左シフト命令でシフト数fがnビッ
ト未満の場合には、右バレルシフタと乗算器とALUの
演算の組み合わせにより、当該命令を実行させるように
構成されている。
【0011】請求項4の発明に係る固定小数点演算装置
は、2nビットまたはnビットのオペランドと演算結果
と演算中間値を保持すべき複数のレジスタからなるレジ
スタファイルと、レジスタファイルからの2nビットの
オペランドを与えられたシフト数fだけ右にシフトし、
2nビットの結果を前記レジスタファイルへ格納する右
バレルシフタと、前記与えられたシフト数fを、2のべ
き乗数2fを表すnビットの2進数にデコードして出力す
る左シフト数デコーダと、レジスタファイルからの2n
ビットの乗数を保持する乗数レジスタと、レジスタファ
イルからの2nビットの被乗数を保持する被乗数レジス
タと、被乗数レジスタからの2nビットのオペランドの
上位nビットまたは下位nビットを選択する被乗数上位
下位選択器と、乗数レジスタからの2nビットのオペラ
ンドの上位nビットまたは下位nビット、または前記左
シフト数デコーダのnビット出力を選択する乗数選択器
と、被乗数上位下位選択器からのnビット出力と乗数選
択器からのnビット出力とを乗じ、2nビットの積をレ
ジスタファイルへ格納する乗算器と、レジスタファイル
からの二つの2nビットのオペランド同士の論理和をと
り2nビットの結果を前記レジスタファイルへ格納する
ALUと、シフト命令を解読し、当該命令が左シフトを
指示する場合には乗算器を用いて当該命令を実行するよ
う制御し、当該命令が右シフトを指示する場合には右バ
レルシフタを用いて当該命令を実行するよう制御する制
御部とを備えている。
【0012】請求項5の発明にかかる固定小数点演算装
置は請求項4に対して、前記制御部が、nビットオペラ
ンドの右シフト命令の場合には、右バレルシフタによ
り、nビットオペランドの左シフト命令の場合には、乗
算器により、2nビットオペランドの右シフト命令の場
合には、右バレルシフタにより、2nビットオペランド
の左シフト命令でシフト数fがnビット以上の場合に
は、右バレルシフタと乗算器の演算の組み合わせによ
り、2nビットオペランドの左シフト命令でシフト数f
がnビット未満の場合には、右バレルシフタと乗算器と
ALUの演算の組み合わせにより、当該命令を実行させ
るように構成されている。
【0013】請求項6の発明に係る固定小数点演算装置
は、2nビットまたはnビットのオペランドと演算結果
と演算中間値を保持すべき複数のレジスタからなるレジ
スタファイルと、レジスタファイルからの2nビットの
オペランドの上位nビットまたは下位nビットを選択す
るシフトオペランド上位下位選択器と、シフトオペラン
ド上位下位選択器からのnビット出力を与えられたシフ
ト数fだけ右にシフトし、2nビットの結果を前記レジ
スタファイルへ格納する右バレルシフタと、前記与えら
れたシフト数fを、2のべき乗数2fを表す2nビットの
2進数にデコードして出力する左シフト数デコーダと、
レジスタファイルからの2nビットの乗数を保持する乗
数レジスタと、レジスタファイルからの2nビットの被
乗数を保持する被乗数レジスタと、乗数レジスタからの
2nビットのオペランド、または左シフト数デコーダの
2nビット出力を選択する乗数選択器と、被乗数レジス
タからの2nビット出力と乗数選択器からの2nビット
出力とを乗じ、4nビットの積をレジスタファイルへ格
納する乗算器と、レジスタファイルからの二つの2nビ
ットのオペランド同士の論理和をとり2nビットの結果
を前記レジスタファイルへ格納するALUと、シフト命
令を解読し、当該命令が左シフトを指示する場合には乗
算器を用いて当該命令を実行するよう制御し、当該命令
が右シフトを指示する場合には右バレルシフタを用いて
当該命令を実行するよう制御する制御部とを備えてい
る。
【0014】請求項7の発明にかかる固定小数点演算装
置は請求項6に対して、前記制御部が、nビットオペラ
ンドの右シフト命令の場合には、右バレルシフタによ
り、nビットオペランドの左シフト命令の場合には、乗
算器により、2nビットオペランドの右シフト命令でシ
フト数fがnビット以上の場合には、右バレルシフタに
より、2nビットオペランドの右シフト命令でシフト数
fがnビット未満の場合には、右バレルシフタとALU
の演算の組み合わせにより、2nビットオペランドの左
シフト命令でシフトの場合には、乗算器により、当該命
令を実行させるように構成されている。
【0015】請求項8の発明に係る固定小数点演算装置
は、2nビットまたはnビットのオペランドと演算結果
と演算中間値を保持すべき複数のレジスタからなるレジ
スタファイルと、レジスタファイルからの2nビットの
オペランドを与えられたシフト数fだけ右にシフトし、
2nビットの結果を前記レジスタファイルへ格納する右
バレルシフタと、前記与えられたシフト数fを、2のべ
き乗数2fを表す2nビットの2進数にデコードして出力
する左シフト数デコーダと、レジスタファイルからの2
nビットの乗数を保持する乗数レジスタと、レジスタフ
ァイルからの2nビットの被乗数を保持する被乗数レジ
スタと、乗数レジスタからの2nビットのオペランド、
または左シフト数デコーダの2nビット出力を選択する
乗数選択器と、被乗数レジスタからの2nビット出力と
乗数選択器からの2nビット出力とを乗じ、4nビット
の積をレジスタファイルへ格納する乗算器と、レジスタ
ファイルからの二つの2nビットのオペランド同士の論
理和をとり2nビットの結果を前記レジスタファイルへ
格納するALUと、シフト命令を解読し、当該命令が左
シフトを指示する場合には乗算器を用いて当該命令を実
行するよう制御し、当該命令が右シフトを指示する場合
には右バレルシフタを用いて当該命令を実行するよう制
御する制御部とを備えている。
【0016】請求項9の発明にかかる固定小数点演算装
置は請求項8に対して、前記制御部が、nビットオペラ
ンドの右シフト命令の場合には、右バレルシフタによ
り、nビットオペランドの左シフト命令の場合には、乗
算器により、2nビットオペランドの右シフト命令の場
合には、右バレルシフタにより、2nビットオペランド
の左シフト命令でシフトの場合には、乗算器により、当
該命令を実行させるように構成されている。
【0017】請求項10の発明にかかる固定小数点演算
装置は請求項1、2、3、6、7のいずれかに対して、
前記右バレルシフタが、5段の選択器からなり、第1段
目の選択器は、16個の2入力1出力のビット選択ゲー
トと1個のANDゲートを有し、シフトオペランド上位
下位選択器からのnビットオペランドを1ビット右シフ
トし又はシフトしないで出力し、第2段目の選択器は、
17個の2入力1出力のビット選択ゲート及び2個のA
NDゲートを有し、第1段目の出力を2ビット右シフト
しまたはシフトしないで出力し、第3段目の選択器は、
19個の2入力1出力のビット選択ゲート及び4個のA
NDゲートを有し、第2段目の出力を4ビット右シフト
しまたはシフトしないで出力し、第4段目の選択器は、
23個の2入力1出力のビット選択ゲート及び8個のA
NDゲートを有し、第3段目の出力を8ビット右シフト
しまたはシフトしないで出力し、第5段目の選択器は、
31個の2入力1出力のビット選択ゲート及び1個のA
NDゲートを有し、第4段目の出力を16ビット右シフ
トしまたはシフトしないで出力し、各段の選択器は、シ
フト数fに従ってシフト動作を行うように構成されてい
る。
【0018】請求項11の発明にかかる固定小数点演算
装置は請求項1、4、5、8、9のいずれかに対して、
前記右バレルシフタが、5段の選択器からなり、第1段
目の選択器は、32個の2入力1出力のビット選択ゲー
トを有し、レジスタファイルからの2nビットオペラン
ドを1ビット右シフトし又はシフトしないで出力し、第
2段目の選択器は、32個の2入力1出力のビット選択
ゲートを有し、第1段目の出力を2ビット右シフトし又
はシフトしないで出力し、第3段目の選択器は、32個
の2入力1出力のビット選択ゲートを有し、第2段目の
出力を4ビット右シフトし又はシフトしないで出力し、
第4段目の選択器は、32個の2入力1出力のビット選
択ゲートを有し、第3段目の出力を8ビット右シフトし
又はシフトしないで出力し、第5段目の選択器は、16
個の3入力1出力のビット選択ゲート及び16個の3入
力1出力のビット選択ゲートを有し、第4段目の出力を
16ビット右又は左シフトし又はシフトしないで出力
し、各段の選択器はシフト数fに従ってシフト動作を行
うように構成されている。
【0019】
【作用】上記の手段により、請求項1の固定小数点演算
装置では、右バレルシフタは、制御部の制御によって、
右シフト命令で指定されたオペランドを、シフト数だけ
右シフトする。左シフト数デコーダは、左シフト数fを
2のべき乗数2fにデコードする。乗算器は、制御部の制
御によって、左シフト命令で指定されるオペランドと、
左シフトデコーダの出力とを乗ずることによって左シフ
ト命令を実現する。これにより、右バレルシフタは、右
バレルシフトのみを実現すればよく、左バレルシフト機
能が不要であるので、回路及び配線量を削減できる。
【0020】請求項2の固定小数点演算装置では、レジ
スタファイルは、2nビットまたはnビットのオペラン
ドと演算結果と演算中間値を保持すべき複数のレジスタ
からなる。シフトオペランド上位下位選択器は、レジス
タファイルからの2nビットのオペランドの上位nビッ
トまたは下位nビットを選択する。右バレルシフタは、
シフトオペランド上位下位選択器からのnビット出力を
与えられたシフト数fだけ右にシフトし、2nビットの
結果を前記レジスタファイルへ格納する。左シフト数デ
コーダは、前記与えられたシフト数fを、2のべき乗数2
fを表すnビットの2進数にデコードして出力する。乗
数レジスタは、レジスタファイルからの2nビットの乗
数を保持する。被乗数レジスタは、レジスタファイルか
らの2nビットの被乗数を保持する。被乗数上位下位選
択器は、被乗数レジスタからの2nビットのオペランド
の上位nビットまたは下位nビットを選択する。乗数選
択器は、乗数レジスタからの2nビットのオペランドの
上位nビットまたは下位nビット、または前記左シフト
数デコーダのnビット出力を選択する。乗算器は、被乗
数上位下位選択器からのnビット出力と乗数選択器から
のnビット出力とを乗じ、2nビットの積をレジスタフ
ァイルへ格納する。ALUは、レジスタファイルからの
二つの2nビットのオペランド同士の論理和をとり2n
ビットの結果を前記レジスタファイルへ格納する。制御
部は、シフト命令を解読し、当該命令が左シフトを指示
する場合には乗算器を用いて当該命令を実行するよう制
御し、当該命令が右シフトを指示する場合には右バレル
シフタを用いて当該命令を実行するよう制御する。これ
により、nビット入力の右バレルシフタと、nビット入
力の乗算器を用いることにより、2nビットオペランド
のシフト機能は従来よりもやや性能は劣るものの、nビ
ットオペランド、2nビットオペランドの双方に対し
て、任意のシフト数右シフトも左シフトも行い、かつ回
路規模を削減することができる。
【0021】請求項3の固定小数点演算装置では請求項
2に対して、前記制御部がシフト命令のオペランド長、
シフト方向、シフト数fに応じて、右シフトならば右バ
レルシフトとALUを、左シフトならば乗算器とALU
とを組み合わせて、シフト命令の実行を制御する。請求
項4の固定小数点演算装置では、レジスタファイルは、
2nビットまたはnビットのオペランドと演算結果と演
算中間値を保持すべき複数のレジスタからなる。右バレ
ルシフタは、レジスタファイルからの2nビットのオペ
ランドを与えられたシフト数fだけ右にシフトし、2n
ビットの結果を前記レジスタファイルへ格納する。左シ
フト数デコーダは、前記与えられたシフト数fを、2の
べき乗数2fを表すnビットの2進数にデコードして出力
する。乗数レジスタは、レジスタファイルからの2nビ
ットの乗数を保持する。被乗数レジスタは、レジスタフ
ァイルからの2nビットの被乗数を保持する。被乗数上
位下位選択器は、被乗数レジスタからの2nビットのオ
ペランドの上位nビットまたは下位nビットを選択す
る。乗数選択器は、乗数レジスタからの2nビットのオ
ペランドの上位nビットまたは下位nビット、または前
記左シフト数デコーダのnビット出力を選択する。乗算
器は、被乗数上位下位選択器からのnビット出力と乗数
選択器からのnビット出力とを乗じ、2nビットの積を
レジスタファイルへ格納する。ALUは、レジスタファ
イルからの二つの2nビットのオペランド同士の論理和
をとり2nビットの結果を前記レジスタファイルへ格納
する。制御部は、シフト命令を解読し、当該命令が左シ
フトを指示する場合には乗算器を用いて当該命令を実行
するよう制御し、当該命令が右シフトを指示する場合に
は右バレルシフタを用いて当該命令を実行するよう制御
する。これにより、2nビット入力の右バレルシフタ
と、nビット入力の乗算器を用いることにより、2nビ
ットオペランドの左シフト機能は従来よりもやや性能は
劣るものの、nビットオペランド、2nビットオペラン
ドの双方に対して、任意のシフト数右シフトも左シフト
も行い、かつ回路規模を削減することができる。
【0022】請求項5の固定小数点演算装置では請求項
4に対して、前記制御部がシフト命令のオペランド長、
シフト方向、シフト数fに応じて、右シフトならば右バ
レルシフトとALUを、左シフトならば乗算器とALU
とを組み合わせて、シフト命令の実行を制御する。請求
項6の固定小数点演算装置では、レジスタファイルは、
2nビットまたはnビットのオペランドと演算結果と演
算中間値を保持すべき複数のレジスタからなる。シフト
オペランド上位下位選択器は、レジスタファイルからの
2nビットのオペランドの上位nビットまたは下位nビ
ットを選択する。右バレルシフタは、シフトオペランド
上位下位選択器からのnビット出力を与えられたシフト
数fだけ右にシフトし、2nビットの結果を前記レジス
タファイルへ格納する。左シフト数デコーダは、前記与
えられたシフト数fを、2のべき乗数2fを表す2nビッ
トの2進数にデコードして出力する。乗数レジスタは、
レジスタファイルからの2nビットの乗数を保持する。
被乗数レジスタは、レジスタファイルからの2nビット
の被乗数を保持する。乗数選択器は、乗数レジスタから
の2nビットのオペランド、または左シフト数デコーダ
の2nビット出力を選択する。乗算器は、被乗数レジス
タからの2nビット出力と乗数選択器からの2nビット
出力とを乗じ、4nビットの積をレジスタファイルへ格
納する。ALUは、レジスタファイルからの二つの2n
ビットのオペランド同士の論理和をとり2nビットの結
果を前記レジスタファイルへ格納する。制御部は、シフ
ト命令を解読し、当該命令が左シフトを指示する場合に
は乗算器を用いて当該命令を実行するよう制御し、当該
命令が右シフトを指示する場合には右バレルシフタを用
いて当該命令を実行するよう制御する。これにより、n
ビット入力の右バレルシフタと、2nビット入力の乗算
器を用いることにより、2nビットオペランドの右シフ
ト機能は従来よりもやや性能は劣るものの、nビットオ
ペランド、2nビットオペランドの双方に対して、任意
のシフト数右シフトも左シフトも行い、かつ回路規模を
削減することができる。
【0023】請求項7の固定小数点演算装置では請求項
6に対して、前記制御部がシフト命令のオペランド長、
シフト方向、シフト数fに応じて、右シフトならば右バ
レルシフトとALUを、左シフトならば乗算器とALU
とを組み合わせて、シフト命令の実行を制御する。請求
項8の固定小数点演算装置では、レジスタファイルは、
2nビットまたはnビットのオペランドと演算結果と演
算中間値を保持すべき複数のレジスタからなる。右バレ
ルシフタは、レジスタファイルからの2nビットのオペ
ランドを与えられたシフト数fだけ右にシフトし、2n
ビットの結果を前記レジスタファイルへ格納する。左シ
フト数デコーダは、前記与えられたシフト数fを、2の
べき乗数2fを表す2nビットの2進数にデコードして出
力する。乗数レジスタは、レジスタファイルからの2n
ビットの乗数を保持する。被乗数レジスタは、レジスタ
ファイルからの2nビットの被乗数を保持する。乗数選
択器は、乗数レジスタからの2nビットのオペランド、
または左シフト数デコーダの2nビット出力を選択す
る。乗算器は、被乗数レジスタからの2nビット出力と
乗数選択器からの2nビット出力とを乗じ、4nビット
の積をレジスタファイルへ格納する。ALUは、レジス
タファイルからの二つの2nビットのオペランド同士の
論理和をとり2nビットの結果を前記レジスタファイル
へ格納する。制御部は、シフト命令を解読し、当該命令
が左シフトを指示する場合には乗算器を用いて当該命令
を実行するよう制御し、当該命令が右シフトを指示する
場合には右バレルシフタを用いて当該命令を実行するよ
う制御する。これにより、2nビット入力の右バレルシ
フタと、2nビット入力の乗算器を用いることにより、
nビットオペランド、2nビットオペランドの双方に対
して、任意のシフト数右シフトも左シフトも行い、かつ
回路規模を削減することができる。
【0024】請求項9の固定小数点演算装置では請求項
8に対して、前記制御部がシフト命令のオペランド長、
シフト方向、シフト数fに応じて、右シフトならば右バ
レルシフトとALUを、左シフトならば乗算器とALU
とを組み合わせて、シフト命令の実行を制御する。請求
項10の固定小数点演算装置では請求項1、2、3、
6、7の何れかに対して前記右バレルシフタは、第1段
目〜第5段目の選択器が、それぞれ1、2、4、8、1
6ビット右にシフトする機能を有し、各段の組み合わせ
によりnビットのシフトオペランドを任意のシフト数f
だけシフト動作を行う。これにより、従来に比して個々
のビット選択ゲートが簡易な構成であり、しかもビット
選択ゲートを削減しているので、回路規模及び配線数を
大幅に削減することができる。
【0025】請求項11の固定小数点演算装置では請求
項1、4、5、8、9の何れかに対して前記右バレルシ
フタは、第1段目〜第5段目の選択器が、それぞれ1、
2、4、8、16ビット右にシフトする機能を有し、各
段の組み合わせにより2nビットのシフトオペランドを
任意のシフト数fだけシフト動作を行う。これにより、
従来に比して個々のビット選択ゲートが簡易な構成であ
るので、回路規模及び配線数を大幅に削減することがで
きる。
【0026】
【実施例】本発明の第1実施例について、図面を参照し
ながら説明する。以下の説明中で、符号付きあるいは符
号なし32ビットの固定小数点数をAで、Aの上位16ビット
をAuで、Aの下位16ビットをAlで表す。シフト演算時に
シフトするビット数をfで表す。符号付き固定小数点数
は2の補数表現で表されるものとする。
【0027】図1は、第1実施例の固定小数点演算装置
の構成を示すブロック図である。同図において、101
は、32ビットまたは16ビットのオペランドや演算結果や
演算中間値を保持する複数のレジスタからなるレジスタ
ファイルである。このレジスタファイル101は、読み
出された32ビットのオペランドの上位16ビットをマスク
する機能を備えている。
【0028】111は、ソース1バスであり、レジスタ
ファイル101より読み出された16ビットまたは32ビッ
トの第1のオペランドを各部へ供給する。112は、ソ
ース2バスであり、レジスタファイル101より読み出
された16ビットまたは32ビットの第2のオペランドを各
部へ供給する。102は、前記第1のオペランドの上位
または下位の16ビットのいずれかを選択するシフトオペ
ランド上位下位選択器である。
【0029】103は、右バレルシフタであり、シフト
オペランド上位下位選択器102から出力される16ビッ
トオペランドを、シフト数fで指定されたビット数だけ
右へ算術シフト又は論理シフトを行う。104は、左シ
フト数デコーダであり、4ビットの2進数オペランドで
表される(左)シフト数f(f0〜f3)をデコードして、1
6ビットの数2fに変換する。105は、被乗数レジスタ
であり、第1のオペランドを被乗数オペランドとして保
持する。
【0030】106は、乗数レジスタであり、第2のオ
ペランドを乗数オペランドとして保持する。107は、
被乗数選択器であり、被乗数オペランドの上位または下
位の16ビットのいずれかを選択する。108は、乗数選
択器であり、乗数オペランドの上位または下位の16ビッ
ト、または左シフト数デコーダ104の出力のいずれか
を選択する。
【0031】109は、乗算器であり、被乗数選択器1
07、乗数選択器108から出力される被乗数オペラン
ドの16ビットと、乗数オペランドの16ビット同士の乗算
を行う。この2つのオペランドが符号付き数であるか符
号なし数であるかは制御信号によって指定される。この
制御信号に応じて、乗算器109は符号付き数同士及び
符号なし数同士の乗算を実行する。
【0032】110は、算術論理演算ユニット(以下、
ALUと略す)であり、32ビットの第1、第2のオペラ
ンドの加減算や論理演算を行う。またALU110は、
二つの16ビットの入力オペランドを32ビットに符号拡張
する機能を備えている。113は、デスティネーション
バスであり、ALU110、乗算器109、右バレルシ
フタ103それぞれの出力をレジスタファイル101へ
書き込む際に転送する。
【0033】114は、制御部であり、命令メモリ(図
外)からの演算命令を解読して、演算命令に応じて各種
の制御信号を上記各部のそれぞれに出力して、演算命令
の実行を制御する。シフト命令の場合、命令で指定され
るオペランドサイズ、シフト方向、シフトビット数に応
じて、制御信号を出力して、シフト動作を制御する。制
御部114の構成は、具体的にはマイクロプログラム制
御、論理回路による制御など従来技術と同様に構成され
る。
【0034】図2は、図1の右バレルシフタ103の詳
細な構成を示す回路図である。この右バレルシフタ10
3は、複数のビット選択ゲート及びANDゲートを備
え、シフト動作を指示する制御信号f0〜f4に対応する5
段の選択器から構成される。図示された逆三角形のシン
ボルは、それぞれ2入力1出力のビット選択ゲートであ
り、同図のAND−ORゲート21とNOTゲート22
からなる組合わせ回路で構成される。この構成により各
ビット選択ゲートは、入力される制御信号(f0〜f4のい
ずれか)が1のときは左側の入力信号を選択して出力
(シフト)し、0のときは右側の入力信号を選択して出
力(素通し)する。
【0035】図示された複数のANDゲート(左上の1
つを除く)は、それぞれビットマスクゲートであり、そ
れぞれの右側に入力される制御信号(f0〜f4のいずれ
か)が1のときは左側の入力信号を出力(シフト)し、
0のときは左側の入力信号をマスクして(0にして)出
力する。左上に図示されたANDゲートは、算術シフト
か論理シフトかを示す制御信号signedと、ソース1バス
111の最上位ビット(符号ビット)とが入力され、ソ
ース1バス111の上位16ビットが符号付き数(sign
ed=1)である場合、各段にシフト数分の上位ビットに符
号ビットを出力して符号拡張し、符号なし数(signed=
0)である場合、同様に0を出力して0拡張する。
【0036】第1段目の選択器は、16個のビット選択
ゲートと1個のANDゲートからなり、ソース1バス1
11の上位16ビットが入力され、制御信号f0が1のと
き1ビット右シフトして出力し、制御信号f0が0のとき
シフトしないで出力する。第2段目〜第5段目の選択器
は、それぞれ図示した個数のビット選択ゲート及びAN
Dゲートからなり、制御信号f1、f2、f3、f4に従って、
前段の出力信号を2、4、8、16ビット右シフトする
ことができる。
【0037】上記のように右バレルシフタ103は、第
1段目では32ビット幅の中の上位側に割り当てられた16
ビットが入力され、第5段目では32ビットで出力する構
造を有している。つまり、構造上シフトされる16ビット
オペランドは32ビット中のMSB側へあらかじめ桁合わせ
されている。そして、最終段(第5段目)の16ビットシ
フトは32ビット出力に対応して、16ビット右バレルシフ
タに付加された部分である。これにより、f0〜f3で指定
されるシフト数fのみならず、制御信号f4を1または0に
変えることにより、(f+16)ビットまたは(f−16)ビ
ットシフトを処理することができる。制御信号f0〜f
4は、ソース2バス112を通じて右バレルシフタ10
3と左シフト数デコーダ104へ供給される。ソース2
バス112へのシフト数fの供給源は、レジスタファイ
ル101や図示しない命令デコーダ等が用いられる。
【0038】表1は、左シフト数デコーダ104に入力
されるシフト数fと、出力との関係を示す。
【0039】
【表1】 表2は、この表1を実現する左シフト数デコーダ104
の各出力ビット位置におけるデコード論理を示す。例え
ばビット位置15の出力は、f3〜f0が全て"1"のとき"1"
になる。これを実現する左シフト数デコーダ104は簡
単な論理ゲートにより実現できる。
【0040】
【表2】 以上のように構成された本実施例の固定小数点演算装置
について、その動作を以下に説明する。本固定小数点演
算装置は、シフト演算や加減乗算などの固定小数点演算
をパイプライン処理により実現している。また、上記の
構成をLSIにより実現した場合、16ビットの乗算器10
9は32ビットのALU110、右バレルシフタ103、
32ビットのレジスタファイル101などに比べ通常2倍
近くの回路遅延を持つので、以下のパイプライン処理に
よる動作説明では乗算器109は2サイクル、その他の
演算器は1サイクルで演算を終了すると仮定する。
【0041】シフト命令が制御部114により解読され
ると、命令で指定されたオペランドサイズ,シフト方
向,シフト数に応じた実行サイクルでシフト動作が実行
される。表3に、オペランドサイズ,シフト方向,シフ
ト数毎の実行サイクル数及び対応する説明図の番号を示
す。ただし、同表の実行サイクル数はそれぞれシフト演
算サイクル数を示しており、シフト結果のレジスタファ
イル101へのライトバックは含んでいない。
【0042】
【表3】 同表に示すようにシフト演算動作は、オペランドサイ
ズ、シフト方向、シフト数に応じて(a)〜(d),(f),(g)に
場合分けされる。この場合分けに沿ってシフト演算の動
作をパイプライン処理のサイクル単位に説明する。 (a) 16ビット右シフトの場合 この場合は、右バレルシフタ103により1サイクルで
シフトされる。図3にこの処理内容を示す。図中、算術
シフトの場合に右バレルシフタ103により符号拡張さ
れるビットをs‥‥sで示す。ここでsはシフトされるオ
ペランドの符号ビットであり、2の補数表現の場合最上
位ビット(MSB)である。論理シフトの場合これらのビッ
トは0拡張されるため、sの代わりに0が埋められる。 [第1サイクル] レジスタファイル101中のソース
レジスタより16ビットオペランドAlがソース1バス11
1へ読み出される。シフトオペランド上位下位選択器1
02は、32ビットのソース1バス111の下位16ビット
(Al)を選択する。同時に命令デコード(図外)からシフ
ト数fが、ソース2バス112を通じて右バレルシフタ
103へ供給される。右バレルシフタ103は、16ビッ
トを右へfビットシフトする。シフト演算が算術または
論理シフトの場合、制御信号signedに応じて算術または
論理シフトを行う。この演算結果はデスティネーション
バス113へ出力される。 [第2サイクル] レジスタファイル101はデスティ
ネーションバス113を通して受けた演算結果をデステ
ィネーションレジスタへ書き込む。
【0043】(b) 16ビット左シフトの場合 この場合は、乗算器109により2サイクルで演算され
る。図4にこの処理内容を図示する。 [第1サイクル] レジスタファイル101中のソース
レジスタより16ビットオペランドAlがソース1バス11
1へ読み出される。被乗数レジスタ105はオペランド
を保持すると同時に、そのオペランドAlを素通しさせ
る。被乗数選択器107は、被乗数レジスタ105を通
って供給される32ビット値の下位16ビットAlを選択す
る。同時にシフト数fはソース2バス112を通じて供
給され、左シフト数デコーダ104でfの下位4ビットを
2fに変換する。乗数選択器108は左シフト数デコーダ
104の出力を選択する。乗算器109はAlと2fを乗ず
る。 [第2サイクル] 乗算器109は前サイクルより引き
続きAlと2fを乗ずる。このサイクルで乗算が完了し、積
をデスティネーションバス113へ出力する。 [第3サイクル] レジスタファイル101はデスティ
ネーションバス113を通して受けた演算結果をデステ
ィネーションレジスタへ書き込む。
【0044】(c) 32ビット右シフト;f≧16の場合 この場合は、右バレルシフタ103により1サイクルで
演算される。図5にこの処理内容を図示する。 [第1サイクル] レジスタファイル101中のソース
レジスタより32ビットオペランドAがソース1バス11
1へ読み出される。シフトオペランド上位下位選択器1
02は32ビットのソース1バス111の上位16ビット(A
u)を選択する。同時にシフト数fは、ソース2バス11
2を通じて右バレルシフタ103へ供給される。右バレ
ルシフタ103はAuを右へfビットシフトする。シフト
演算が算術または論理シフトの場合、それぞれ算術及び
論理シフトを行う。演算結果をデスティネーションバス
113へ出力する。 [第2サイクル] レジスタファイル101はデスティ
ネーションバス113を通して受けた演算結果をデステ
ィネーションレジスタへ書き込む。
【0045】(d) 32ビット右シフト;f<16の場合 この場合は、右バレルシフタ103とALU110によ
り3サイクルで演算される。図6(d-0)〜(d-3)にこの処
理内容を図示する。図6(d-0)は、このシフト処理にお
けるオペランドと演算結果の関係を示す。図9このシフ
ト処理の流れを示すタイムチャートを示す。 [第1サイクル] レジスタファイル101中のソース
レジスタより32ビットオペランドAがソース1バス11
1へ読み出される。シフトオペランド上位下位選択器1
02は32ビットのソース1バス111の上位16ビット(A
u)を選択する。同時にシフト数fは、ソース2バス11
2を通じて右バレルシフタ103へ供給される。右バレ
ルシフタ103はAuを右へfビットシフトする。シフト
演算が算術または論理シフトの場合、それぞれ算術及び
論理シフトを行う。演算結果をデスティネーションバス
113へ出力する。(図6(d-1)) [第2サイクル] レジスタファイル101中の作業レ
ジスタ0へデスティネーションバス113の結果を書き
込む。シフトオペランド上位下位選択器102は32ビッ
トのソース1バス111の下位16ビットAlを選択する。
同時にシフト数fは、ソース2バス112を通じて右バ
レルシフタ103へ供給される。右バレルシフタ103
はAlを右へ(f+16)ビットシフトする。シフト演算が
算術または論理シフトにかかわらず、論理シフトを行
う。演算結果をデスティネーションバス113へ出力す
る。(図6(d-2)) [第3サイクル] レジスタファイル101中の作業レ
ジスタ1へデスティネーションバス113の結果を書き
込む。レジスタファイル101中の作業レジスタ0と作
業レジスタ1の内容がソース1バス111とソース2バ
ス112へ読み出される。ALU110はソース1バス
111とソース2バス112上のデータの論理和をと
る。演算結果をデスティネーションバス113へ出力す
る(図6(d-3))。 [第4サイクル] レジスタファイル101はデスティ
ネーションバス113を通して受けた演算結果をデステ
ィネーションレジスタへ書き込む。
【0046】(f) 32ビット左シフト;f≧16の場合 この場合は、右バレルシフタ103と乗算器109によ
り3サイクルで演算される。図7(f-0)〜(f-2)にこの処
理内容を図示する。図7(f-0)は、このシフト処理にお
けるオペランドと演算結果の関係を示す。図10にこの
シフト処理の流れを図示する。 [第1サイクル] レジスタファイル101中のソース
レジスタより32ビットオペランドAがソース1バス11
1へ読み出される。被乗数レジスタ105はAを保持す
ると同時に、その値を素通しさせる。被乗数選択器10
7は被乗数レジスタ105を通って供給される32ビット
値の下位16ビットAlを選択する。同時にシフト数fはソ
ース2バス112を通じて供給され、左シフト数デコー
ダ104でシフト数fの下位4ビットを2f-16に変換す
る。乗数選択器108は左シフト数デコーダ104の出
力を選択する。乗算器109はAlと2f-16を乗ずる(図
7(f-1))。 [第2サイクル] 乗算器109は前サイクルより引き
続きAlと2f-16を乗ずる。このサイクルで乗算が完了
し、積をデスティネーションバス113へ出力する。 [第3サイクル] レジスタファイル101中の作業レ
ジスタ0へデスティネーションバス113の結果を書き
込む。レジスタファイル101中の作業レジスタ0の内
容がソース1バス111へ読み出される。シフトオペラ
ンド上位下位選択器102は32ビットのソース1バス1
11の下位16ビットを選択する。同時にシフト数fは、
ソース2バス112を通じて右バレルシフタ103へ供
給される。ここでfは0とする。右バレルシフタ103は
前記16ビットを右へ0ビットシフトする。演算結果をデ
スティネーションバス113へ出力する(図7(f-
2))。 [第4サイクル] レジスタファイル101はデスティ
ネーションバス113を通して受けた演算結果をデステ
ィネーションレジスタへ書き込む。
【0047】(g) 32ビット左シフト;f<16の場合 この場合は、右バレルシフタ103と乗算器109によ
り5サイクルで演算される。図8(g-0)〜(g-4)にこの処
理内容を図示する。図8(g-0)は、このシフト処理にお
けるオペランドと演算結果の関係を図示する。図11に
このシフト処理の流れを図示する。 [第1サイクル] レジスタファイル101中のソース
レジスタより32ビットオペランドAがソース1バス11
1へ読み出される。被乗数レジスタ105はAを保持す
ると同時に、その値を素通しさせる。被乗数選択器10
7は被乗数レジスタ105を通って供給されるAの上位1
6ビットAuを選択する。同時にシフト数fはソース2バス
112を通じて供給され、左シフト数デコーダ104で
fの下位4ビットを2fに変換する。乗数選択器108は左
シフト数デコーダ104の出力を選択する。乗算器10
9はAuと2fを乗ずる(図8(g-1))。 [第2サイクル] 乗算器109は前サイクルより引き
続きAuと2fを乗ずる。このサイクルで乗算が完了し、積
をデスティネーションバス113へ出力する。 [第3サイクル] レジスタファイル101中の作業レ
ジスタ0へデスティネーションバス113の結果を書き
込む。レジスタファイル101中の作業レジスタ0の内
容がソース1バス111へ読み出される。シフトオペラ
ンド上位下位選択器102は32ビットのソース1バス1
11の下位16ビットを選択する。同時にシフト数fは、
ソース2バス112を通じて右バレルシフタ103へ供
給される。ここでfは0とする。右バレルシフタ103は
前記16ビットを右へ0ビットシフトする。演算結果をデ
スティネーションバス113へ出力する(図8(g-
2))。これと並列に、被乗数選択器107は被乗数レジ
スタ105に保持されている32ビット値の下位16ビット
(Al)を選択する。同時にシフト数fはソース2バス11
2を通じて供給され、左シフト数デコーダ104でシフ
ト数fの下位4ビットを2fに変換する。乗数選択器108
は左シフト数デコーダ104の出力を選択する。乗算器
109はAlと2fを乗ずる(図8(g-3))。 [第4サイクル] 乗算器109は前サイクルより引き
続きAlと2fを乗ずる。このサイクルで乗算が完了し、積
をデスティネーションバス113へ出力する。 [第5サイクル] レジスタファイル101中の作業レ
ジスタ1へデスティネーションバス113の結果を書き
込む。レジスタファイル101中の作業レジスタ0と作
業レジスタ1の内容がソース1バス111とソース2バ
ス112へ読み出される。ALU110はソース1バス
111とソース2バス112上のデータの論理和をと
る。演算結果をデスティネーションバス113へ出力す
る(図8(g-4))。 [第6サイクル] レジスタファイル101はデスティ
ネーションバス113を通して受けた演算結果をデステ
ィネーションレジスタへ書き込む。
【0048】次に、本発明の第2実施例について、図面
を参照しながら説明する。図12は第2実施例の固定小
数点演算装置の構成図を示す。同図において、右バレル
シフタ203は32ビットのオペランドを指定されたビッ
ト数だけ右へシフトする。その他の構成要素は、それぞ
れ第1実施例の対応するものと同等であるので、説明を
省略する。
【0049】図13は、図12の右バレルシフタ203
の詳細な構成を示す回路図である。右バレルシフタ20
3は、32ビット入力及び32ビット出力を有し、5段の選
択器から構成される。第1〜第4段に図示された逆三角
形のシンボルは、それぞれ2入力1出力のビット選択ゲ
ートである。これらは、図2に示した第1の実施例のビ
ット選択ゲートと同様であるので説明を省略する。また
各段のビット数が32ビットになっている。
【0050】第5段目の選択器は、第1の実施例と同様
に右16ビットシフト機能を有するのに加えて、32ビット
の左シフト演算を実現するために左16ビットシフト機能
が付加されている。第5段に図示された左側16個の逆
三角形のシンボルは、それぞれ3入力1出力のビット選
択ゲートであり、図14(a)に示すようにNORゲー
ト131とAND−ORゲート132とからなる。この
ビット選択ゲートは、制御信号f4と16bit l-shiftの制
御により入力信号の何れかを選択して出力する。表4
に、同図(a)のビット選択ゲートの入出力論理及びシフ
ト動作を示す。
【0051】
【表4】 同表のようにこのビット選択ゲートは、制御信号f4と16
bit l-shiftとがそれぞれ0と0の場合には真ん中の入
力信号を選択して出力(素通し)し、それぞれ0と1の
場合には右側の入力信号を選択して出力(左16ビットシ
フト)し、それぞれ1と0の場合には左側の入力信号を
選択して出力し(右16ビットシフトし)する。1と1の
場合については指定されることがない。
【0052】第5段に図示された右側16個の逆三角形
のシンボルは、それぞれ3入力1出力のビット選択ゲー
トであり、図14(b)に示すようにNORゲート13
3とAND−ORゲート134とからなり、同図(a)
の右端のANDゲートが削除され簡略化された構成にな
っている。表5に、同図(b)のビット選択ゲートの入
出力論理及びシフト動作を示す。
【0053】
【表5】 同表のようにこのビット選択ゲートは、制御信号f4と16
bit l-shiftとがそれぞれ0と0の場合には、右側の入
力信号を選択して出力(素通し)し、それぞれ0と1の
場合には、0を出力(左16ビットシフト)し、それぞ
れ1と0の場合には、左側の入力信号を選択して出力
(右16ビットシフト)する。1と1の場合については
指定されることがない。
【0054】上記のように構成された本実施例の固定小
数点演算装置について、その動作を以下に説明する。表
6 は、オペランドサイズ,シフト方向,シフト数毎のシ
フト演算の実行サイクル数及び対応する説明図の番号を
示す。同表の場合分けに沿ってシフト演算の動作を図1
2を用いて説明する。パイプライン処理のサイクル単位
に動作の流れを記述する。
【0055】
【表6】 (a) 16ビット右シフトの場合、 この場合は、第1実施例の(a)と同じ。 (b) 16ビット左シフトの場合 この場合は、第1実施例の(b)と同じ。 (e) 32ビット右シフト この場合は、右バレルシフタ203により1サイクルで
演算される。図15にこの処理内容を図示する。 [第1サイクル] レジスタファイル201中のソース
レジスタより32ビットオペランドAがソース1バス21
1へ読み出される。シフト数fは、ソース2バス212
を通じて右バレルシフタ203へ供給される。右バレル
シフタ203はAを右へfビットシフトする。シフト演算
が算術または論理シフトの場合、それぞれ算術及び論理
シフトを行う。演算結果をデスティネーションバス21
3へ出力する。 [第2サイクル] レジスタファイル201はデスティ
ネーションバス213を通して受けた演算結果をデステ
ィネーションレジスタへ書き込む。 (f) 32ビット左シフト;f≧16の場合 この場合は、第1実施例の(f)と同じ。 (g) 32ビット左シフト;f<16の場合 この場合は、第1実施例の(g)と同じ。
【0056】なお実施例の記述では特にソースバスやデ
スティネーションバスなどのデータパスが32ビットの場
合について説明したが、これらが16ビットや64ビットの
場合でも同様に本発明は有効である。また乗算器入力の
ビット幅がバレルシフタ出力,ALU,バス,レジスタ
などのビット幅の半分である場合のみについて説明した
が、前者と後者が同じ場合、即ち入力32ビット,出力64
ビットの乗算器が備えられる場合、更に乗算器による左
シフト性能が向上することは明白である。
【0057】
【発明の効果】請求項1の固定小数点演算装置によれ
ば、簡易な構成の左シフト数デコーダを付加することに
よって、従来乗算以外に使われていない乗算器に左シフ
ト機能を分担させるので、バレルシフタから左バレルシ
フト機能を除去することができ、バレルシフタの回路規
模、配線数を大幅に削減することができるという効果が
ある。その結果、ハードウェアが費やす素子数,回路面
積,消費電力を削減することができるという効果があ
る。
【0058】請求項2の固定小数点演算装置によれば、
nビット入力の右バレルシフタと、簡易な構成の左シフ
ト数デコーダと、nビット入力の乗算器とを用いること
により、2nビットオペランドのシフト機能は従来より
もやや性能は劣るものの、nビットオペランド、2nビ
ットオペランドの双方に対して、任意のシフト数右シフ
トも左シフトも実現している。その結果請求項1と同様
に、バレルシフタから左バレルシフト機能を除去するこ
とができ、バレルシフタの回路規模、配線数を大幅に削
減することができるという効果がある。また、ハードウ
ェアが費やす素子数,回路面積,消費電力を削減するこ
とができるという効果がある。
【0059】請求項3の固定小数点演算装置によれば、
前記制御部がシフト命令のオペランド長、シフト方向、
シフト数fに応じて、右シフトならば右バレルシフトと
ALUを、左シフトならば乗算器とALUとを組み合わ
せて、シフト命令の実行を制御することができ、請求項
2と同様の効果がある。請求項4の固定小数点演算装置
によれば、2nビット入力の右バレルシフタと簡易な構
成の左シフトデコーダと、nビット入力の乗算器とを用
いることにより、2nビットオペランドの左シフト機能
は従来よりもやや性能は劣るものの、nビットオペラン
ド、2nビットオペランドの双方に対して、任意のシフ
ト数右シフトも左シフトも実現している。その結果請求
項1と同様に、バレルシフタから左バレルシフト機能を
除去することができ、バレルシフタの回路規模、配線数
を大幅に削減することができるという効果がある。ま
た、ハードウェアが費やす素子数,回路面積,消費電力
を削減することができるという効果がある。
【0060】請求項5の固定小数点演算装置によれば、
前記制御部がシフト命令のオペランド長、シフト方向、
シフト数fに応じて、右シフトならば右バレルシフトと
ALUを、左シフトならば乗算器とALUとを組み合わ
せて、シフト命令の実行を制御することができ、請求項
4と同様の効果がある。請求項6の固定小数点演算装置
によれば、nビット入力の右バレルシフタと、簡易な構
成の左シフトデコーダと、2nビット入力の乗算器を用
いることにより、2nビットオペランドの右シフト機能
は従来よりもやや性能は劣るものの、nビットオペラン
ド、2nビットオペランドの双方に対して、任意のシフ
ト数右シフトも左シフトを実現している。その結果請求
項1と同様に、バレルシフタから左バレルシフト機能を
除去することができ、バレルシフタの回路規模、配線数
を大幅に削減することができるという効果がある。ま
た、ハードウェアが費やす素子数,回路面積,消費電力
を削減することができるという効果がある。
【0061】請求項7の固定小数点演算装置によれば、
前記制御部がシフト命令のオペランド長、シフト方向、
シフト数fに応じて、右シフトならば右バレルシフトと
ALUを、左シフトならば乗算器とALUとを組み合わ
せて、シフト命令の実行を制御することができ、請求項
5と同様の効果がある。請求項8の固定小数点演算装置
によれば、2nビット入力の右バレルシフタと、簡易な
構成の左シフトデコーダと、2nビット入力の乗算器を
用いることにより、nビットオペランド、2nビットオ
ペランドの双方に対して、任意のシフト数右シフトも左
シフトを実現している。その結果請求項1と同様に、バ
レルシフタから左バレルシフト機能を除去することがで
き、バレルシフタの回路規模、配線数を大幅に削減する
ことができるという効果がある。また、ハードウェアが
費やす素子数,回路面積,消費電力を削減することがで
きるという効果がある。
【0062】請求項9の固定小数点演算装置によれば、
前記制御部がシフト命令のオペランド長、シフト方向、
シフト数fに応じて、右シフトならば右バレルシフトと
ALUを、左シフトならば乗算器とALUとを組み合わ
せて、シフト命令の実行を制御することができ、請求項
8と同様の効果がある。請求項10の固定小数点演算装
置によれば、請求項1、2、3、6、7の効果に加え
て、nビット入力の右バレルシフタを複数個の簡単なビ
ット選択ゲートを規則的に配列することで実現している
ので、LSI化に好適した構成とすることができる。
【0063】請求項11の固定小数点演算装置によれ
ば、請求項1、4、5、8、9の効果に加えて、2nビ
ット入力の右バレルシフタを複数個の簡単なビット選択
ゲートを規則的に配列することで実現しているので、L
SI化に好適した構成とすることができる。
【図面の簡単な説明】
【図1】第1実施例における固定小数点演算装置の構成
図である。
【図2】同実施例における右バレルシフタ103の詳細
回路図である。
【図3】同実施例における16ビット右シフト処理の動作
概念図である。
【図4】同実施例における16ビット左シフト処理の動作
概念図である。
【図5】同実施例における32ビット右シフト(f≧16)
処理の動作概念図である。
【図6】同実施例における32ビット右シフト(f<16)
処理の動作概念図である。
【図7】同実施例における32ビット左シフト(f≧16)
処理の動作概念図である。
【図8】同実施例における32ビット左シフト(f<16)
処理の動作概念図である。
【図9】同実施例における32ビット右シフト(f<16)
処理のタイムチャートである。
【図10】同実施例における32ビット左シフト(f≧1
6)処理のタイムチャートである。
【図11】同実施例における32ビット左シフト(f<1
6)処理のタイムチャートである。
【図12】第2実施例における固定小数点演算装置の構
成図である。
【図13】同実施例における右バレルシフタ203の詳
細回路図である。
【図14】同実施例におけるビット選択ゲートの回路図
である。
【図15】同実施例における32ビット右シフト処理の動
作概念図である。
【図16】従来例の左右バレルシフタの詳細回路図であ
る。
【符号の説明】
101、201 レジスタファイル 102 シフトオペランド上位下位選択器 103、203 右バレルシフタ 104、204 左シフト数デコーダ 105、205 被乗数レジスタ 106、206 乗数レジスタ 107、207 被乗数選択器 108、208 乗数選択器 109、209 乗算器 110、210 ALU 111、211 ソース1バス 112、212 ソース2バス 113、213 デスティネーションバス 114、214 制御部

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 オペランド、シフト数fを指定するシフ
    ト命令その他の演算命令を実行する固定小数点演算装置
    であって、 右シフト命令で指定されたオペランドを、シフト数だけ
    右シフトする右バレルシフタと、 左シフト数fを2のべき乗数2fにデコードする左シフト
    数デコーダと、 左シフト命令で指定されるオペランドと、左シフトデコ
    ーダの出力とを乗ずる乗算器と、 シフト命令を解読し、当該命令が左シフトを指示する場
    合には乗算器を用いて当該命令を実行するよう制御し、
    当該命令が右シフトを指示する場合には右バレルシフタ
    を用いて当該命令を実行するよう制御する制御部とを備
    えることを特徴とする固定小数点演算装置。
  2. 【請求項2】 オペランド、シフト方向、シフト数fを
    指定するシフト命令その他の演算命令を実行する固定小
    数点演算装置であって、 2nビットまたはnビットのオペランドと演算結果と演
    算中間値を保持すべき複数のレジスタからなるレジスタ
    ファイルと、 レジスタファイルからの2nビットのオペランドの上位
    nビットまたは下位nビットを選択するシフトオペラン
    ド上位下位選択器と、 シフトオペランド上位下位選択器からのnビット出力を
    与えられたシフト数fだけ右にシフトし、2nビットの
    結果を前記レジスタファイルへ格納する右バレルシフタ
    と、 前記与えられたシフト数fを、2のべき乗数2fを表すn
    ビットの2進数にデコードして出力する左シフト数デコ
    ーダと、 レジスタファイルからの2nビットの乗数を保持する乗
    数レジスタと、 レジスタファイルからの2nビットの被乗数を保持する
    被乗数レジスタと、 被乗数レジスタからの2nビットのオペランドの上位n
    ビットまたは下位nビットを選択する被乗数上位下位選
    択器と、 乗数レジスタからの2nビットのオペランドの上位nビ
    ットまたは下位nビット、または前記左シフト数デコー
    ダのnビット出力を選択する乗数選択器と、 被乗数上位下位選択器からのnビット出力と乗数選択器
    からのnビット出力とを乗じ、2nビットの積をレジス
    タファイルへ格納する乗算器と、 レジスタファイルからの二つの2nビットのオペランド
    同士の論理和をとり2nビットの結果を前記レジスタフ
    ァイルへ格納するALUと、 シフト命令を解読し、当該命令が左シフトを指示する場
    合には乗算器を用いて当該命令を実行するよう制御し、
    当該命令が右シフトを指示する場合には右バレルシフタ
    を用いて当該命令を実行するよう制御する制御部とを備
    えることを特徴とする固定小数点演算装置。
  3. 【請求項3】 前記制御部は、 nビットオペランドの右シフト命令の場合には、右バレ
    ルシフタにより、 nビットオペランドの左シフト命令の場合には、乗算器
    により、 2nビットオペランドの右シフト命令でシフト数fがn
    ビット以上の場合には、右バレルシフタにより、 2nビットオペランドの右シフト命令でシフト数fがn
    ビット未満の場合には、右バレルシフタとALUの演算
    の組み合わせにより、 2nビットオペランドの左シフト命令でシフト数fがn
    ビット以上の場合には、右バレルシフタと乗算器の演算
    の組み合わせにより、 2nビットオペランドの左シフト命令でシフト数fがn
    ビット未満の場合には、右バレルシフタと乗算器とAL
    Uの演算の組み合わせにより、当該命令を実行させるこ
    とを特徴とする請求項2記載の固定小数点演算装置。
  4. 【請求項4】 オペランド、シフト方向、シフト数fを
    指定するシフト命令その他の演算命令を実行する固定小
    数点演算装置であって、 2nビットまたはnビットのオペランドと演算結果と演
    算中間値を保持すべき複数のレジスタからなるレジスタ
    ファイルと、 レジスタファイルからの2nビットのオペランドを与え
    られたシフト数fだけ右にシフトし、2nビットの結果
    を前記レジスタファイルへ格納する右バレルシフタと、 前記与えられたシフト数fを、2のべき乗数2fを表すn
    ビットの2進数にデコードして出力する左シフト数デコ
    ーダと、 レジスタファイルからの2nビットの乗数を保持する乗
    数レジスタと、 レジスタファイルからの2nビットの被乗数を保持する
    被乗数レジスタと、 被乗数レジスタからの2nビットのオペランドの上位n
    ビットまたは下位nビットを選択する被乗数上位下位選
    択器と、 乗数レジスタからの2nビットのオペランドの上位nビ
    ットまたは下位nビット、または前記左シフト数デコー
    ダのnビット出力を選択する乗数選択器と、 被乗数上位下位選択器からのnビット出力と乗数選択器
    からのnビット出力とを乗じ、2nビットの積をレジス
    タファイルへ格納する乗算器と、 レジスタファイルからの二つの2nビットのオペランド
    同士の論理和をとり2nビットの結果を前記レジスタフ
    ァイルへ格納するALUと、 シフト命令を解読し、当該命令が左シフトを指示する場
    合には乗算器を用いて当該命令を実行するよう制御し、
    当該命令が右シフトを指示する場合には右バレルシフタ
    を用いて当該命令を実行するよう制御する制御部とを備
    えることを特徴とする固定小数点演算装置。
  5. 【請求項5】 前記制御部は、 nビットオペランドの右シフト命令の場合には、右バレ
    ルシフタにより、 nビットオペランドの左シフト命令の場合には、乗算器
    により、 2nビットオペランドの右シフト命令の場合には、右バ
    レルシフタにより、 2nビットオペランドの左シフト命令でシフト数fがn
    ビット以上の場合には、右バレルシフタと乗算器の演算
    の組み合わせにより、 2nビットオペランドの左シフト命令でシフト数fがn
    ビット未満の場合には、右バレルシフタと乗算器とAL
    Uの演算の組み合わせにより、当該命令を実行させるこ
    とを特徴とする請求項4記載の固定小数点演算装置。
  6. 【請求項6】 オペランド、シフト方向、シフト数fを
    指定するシフト命令その他の演算命令を実行する固定小
    数点演算装置であって、 2nビットまたはnビットのオペランドと演算結果と演
    算中間値を保持すべき複数のレジスタからなるレジスタ
    ファイルと、 レジスタファイルからの2nビットのオペランドの上位
    nビットまたは下位nビットを選択するシフトオペラン
    ド上位下位選択器と、 シフトオペランド上位下位選択器からのnビット出力を
    与えられたシフト数fだけ右にシフトし、2nビットの
    結果を前記レジスタファイルへ格納する右バレルシフタ
    と、 前記与えられたシフト数fを、2のべき乗数2fを表す2
    nビットの2進数にデコードして出力する左シフト数デ
    コーダと、 レジスタファイルからの2nビットの乗数を保持する乗
    数レジスタと、 レジスタファイルからの2nビットの被乗数を保持する
    被乗数レジスタと、 乗数レジスタからの2nビットのオペランド、または左
    シフト数デコーダの2nビット出力を選択する乗数選択
    器と、 被乗数レジスタからの2nビット出力と乗数選択器から
    の2nビット出力とを乗じ、4nビットの積をレジスタ
    ファイルへ格納する乗算器と、 レジスタファイルからの二つの2nビットのオペランド
    同士の論理和をとり2nビットの結果を前記レジスタフ
    ァイルへ格納するALUと、 シフト命令を解読し、当該命令が左シフトを指示する場
    合には乗算器を用いて当該命令を実行するよう制御し、
    当該命令が右シフトを指示する場合には右バレルシフタ
    を用いて当該命令を実行するよう制御する制御部とを備
    えることを特徴とする固定小数点演算装置。
  7. 【請求項7】 前記制御部は、 nビットオペランドの右シフト命令の場合には、右バレ
    ルシフタにより、 nビットオペランドの左シフト命令の場合には、乗算器
    により、 2nビットオペランドの右シフト命令でシフト数fがn
    ビット以上の場合には、右バレルシフタにより、 2nビットオペランドの右シフト命令でシフト数fがn
    ビット未満の場合には、右バレルシフタとALUの演算
    の組み合わせにより、 2nビットオペランドの左シフト命令でシフトの場合に
    は、乗算器により、当該命令を実行させることを特徴と
    する請求項6記載の固定小数点演算装置。
  8. 【請求項8】 オペランド、シフト方向、シフト数fを
    指定するシフト命令その他の演算命令を実行する固定小
    数点演算装置であって、 2nビットまたはnビットのオペランドと演算結果と演
    算中間値を保持すべき複数のレジスタからなるレジスタ
    ファイルと、 レジスタファイルからの2nビットのオペランドを与え
    られたシフト数fだけ右にシフトし、2nビットの結果
    を前記レジスタファイルへ格納する右バレルシフタと、 前記与えられたシフト数fを、2のべき乗数2fを表す2
    nビットの2進数にデコードして出力する左シフト数デ
    コーダと、 レジスタファイルからの2nビットの乗数を保持する乗
    数レジスタと、 レジスタファイルからの2nビットの被乗数を保持する
    被乗数レジスタと、 乗数レジスタからの2nビットのオペランド、または左
    シフト数デコーダの2nビット出力を選択する乗数選択
    器と、 被乗数レジスタからの2nビット出力と乗数選択器から
    の2nビット出力とを乗じ、4nビットの積をレジスタ
    ファイルへ格納する乗算器と、 レジスタファイルからの二つの2nビットのオペランド
    同士の論理和をとり2nビットの結果を前記レジスタフ
    ァイルへ格納するALUと、 シフト命令を解読し、当該命令が左シフトを指示する場
    合には乗算器を用いて当該命令を実行するよう制御し、
    当該命令が右シフトを指示する場合には右バレルシフタ
    を用いて当該命令を実行するよう制御する制御部とを備
    えることを特徴とする固定小数点演算装置。
  9. 【請求項9】 前記制御部は、 nビットオペランドの右シフト命令の場合には、右バレ
    ルシフタにより、 nビットオペランドの左シフト命令の場合には、乗算器
    により、 2nビットオペランドの右シフト命令の場合には、右バ
    レルシフタにより、 2nビットオペランドの左シフト命令でシフトの場合に
    は、乗算器により、当該命令を実行させることを特徴と
    する請求項8記載の固定小数点演算装置。
  10. 【請求項10】 前記右バレルシフタは、5段の選択器
    からなり、 第1段目の選択器は、16個の2入力1出力のビット選
    択ゲートと1個のANDゲートを有し、シフトオペラン
    ド上位下位選択器からのnビットオペランドを1ビット
    右シフトし又はシフトしないで出力し、 第2段目の選択器は、17個の2入力1出力のビット選
    択ゲート及び2個のANDゲートを有し、第1段目の出
    力を2ビット右シフトしまたはシフトしないで出力し、 第3段目の選択器は、19個の2入力1出力のビット選
    択ゲート及び4個のANDゲートを有し、第2段目の出
    力を4ビット右シフトしまたはシフトしないで出力し、 第4段目の選択器は、23個の2入力1出力のビット選
    択ゲート及び8個のANDゲートを有し、第3段目の出
    力を8ビット右シフトしまたはシフトしないで出力し、 第5段目の選択器は、31個の2入力1出力のビット選
    択ゲート及び1個のANDゲートを有し、第4段目の出
    力を16ビット右シフトしまたはシフトしないで出力
    し、 各段の選択器は、シフト数fに従ってシフト動作を行う
    ことを特徴とする請求項1、2、3、6、7記載の何れ
    かの固定小数点演算装置。
  11. 【請求項11】 前記右バレルシフタは、5段の選択器
    からなり、 第1段目の選択器は、32個の2入力1出力のビット選
    択ゲートを有し、レジスタファイルからの2nビットオ
    ペランドを1ビット右シフトし又はシフトしないで出力
    し、 第2段目の選択器は、32個の2入力1出力のビット選
    択ゲートを有し、第1段目の出力を2ビット右シフトし
    又はシフトしないで出力し、 第3段目の選択器は、32個の2入力1出力のビット選
    択ゲートを有し、第2段目の出力を4ビット右シフトし
    又はシフトしないで出力し、 第4段目の選択器は、32個の2入力1出力のビット選
    択ゲートを有し、第3段目の出力を8ビット右シフトし
    又はシフトしないで出力し、 第5段目の選択器は、16個の3入力1出力のビット選
    択ゲート及び16個の3入力1出力のビット選択ゲート
    を有し、第4段目の出力を16ビット右又は左シフトし
    又はシフトしないで出力し、 各段の選択器はシフト数fに従ってシフト動作を行うこ
    とを特徴とする請求項1、4、5、8、9記載の何れか
    の固定小数点演算装置。
JP6212710A 1994-09-06 1994-09-06 固定小数点演算装置 Pending JPH0876977A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6212710A JPH0876977A (ja) 1994-09-06 1994-09-06 固定小数点演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6212710A JPH0876977A (ja) 1994-09-06 1994-09-06 固定小数点演算装置

Publications (1)

Publication Number Publication Date
JPH0876977A true JPH0876977A (ja) 1996-03-22

Family

ID=16627154

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6212710A Pending JPH0876977A (ja) 1994-09-06 1994-09-06 固定小数点演算装置

Country Status (1)

Country Link
JP (1) JPH0876977A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002544587A (ja) * 1999-05-12 2002-12-24 アナログ デバイセス インコーポレーテッド デジタル信号プロセッサ計算コア

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002544587A (ja) * 1999-05-12 2002-12-24 アナログ デバイセス インコーポレーテッド デジタル信号プロセッサ計算コア

Similar Documents

Publication Publication Date Title
US6742012B2 (en) Apparatus and method for performing multiplication operations
US5442577A (en) Sign-extension of immediate constants in an alu
US10409604B2 (en) Apparatus and method for performing multiply-and-accumulate-products operations
EP1049025B1 (en) Method and apparatus for arithmetic operations
KR19980041798A (ko) 영상처리를 위한 명령을 지원하는 모듈 계산구조
JP3583474B2 (ja) 乗算装置
JPH0850575A (ja) プログラマブルプロセッサ、前記プログラマブルプロセッサを用いてデジタル信号処理を行なうための方法およびその改良
US5896305A (en) Shifter circuit for an arithmetic logic unit in a microprocessor
US7013321B2 (en) Methods and apparatus for performing parallel integer multiply accumulate operations
JP4349265B2 (ja) プロセッサ
JP2002149400A (ja) 複数レジスタ指定が可能なsimd演算方式
US6999985B2 (en) Single instruction multiple data processing
JPH07168697A (ja) 倍精度除算回路および方法
US5574672A (en) Combination multiplier/shifter
US7260711B2 (en) Single instruction multiple data processing allowing the combination of portions of two data words with a single pack instruction
US20180349097A1 (en) Processor with efficient arithmetic units
US5850227A (en) Bit map stretching using operand routing and operation selective multimedia extension unit
JP3579087B2 (ja) 演算器およびマイクロプロセッサ
JPWO2007094047A1 (ja) 演算装置および演算方法
JPH0876977A (ja) 固定小数点演算装置
US20090031117A1 (en) Same instruction different operation (sido) computer with short instruction and provision of sending instruction code through data
US6484194B1 (en) Low cost multiplier block with chain capability
JP3462670B2 (ja) 演算実行方法及び演算装置
EP1936492A1 (en) SIMD processor with reduction unit
JPH03268024A (ja) マイクロプロセッサ、情報処理装置及びそれを用いた図形表示装置