JP3070014B2 - シフト回路 - Google Patents

シフト回路

Info

Publication number
JP3070014B2
JP3070014B2 JP1182141A JP18214189A JP3070014B2 JP 3070014 B2 JP3070014 B2 JP 3070014B2 JP 1182141 A JP1182141 A JP 1182141A JP 18214189 A JP18214189 A JP 18214189A JP 3070014 B2 JP3070014 B2 JP 3070014B2
Authority
JP
Japan
Prior art keywords
shift
output
carry flag
signal
data
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
JP1182141A
Other languages
English (en)
Other versions
JPH0348332A (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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP1182141A priority Critical patent/JP3070014B2/ja
Publication of JPH0348332A publication Critical patent/JPH0348332A/ja
Application granted granted Critical
Publication of JP3070014B2 publication Critical patent/JP3070014B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は、例えば、マイクロプロセッサ等で使用され
る命令の一つであるシフト命令実行時に動作するシフト
回路、特に多数桁のシフト時におけるオーバフロー判定
の可能なシフト回路に関するものである。
(従来の技術) 従来、このような分野の技術としては、「MC68000 1
6ビットマイクロプロセッサ ユーザーズ・マニュア
ル」4版(昭57−7−15)日本モトローラ(株)P.149
に記載されるものがあった。
プログラム制御で動作するマイクロプロセッサの命令
には、通常、オペランド(命令のオペレーションコード
に作用するデータやアドレス等が示される部分)のデー
タを右方向(最上位ビットMSB→最下位ビットLSB)にシ
フトする右シフト命令と、左方向にシフトする左シフト
命令が含まれている。シフト命令は、オペランドデータ
中のビット抽出に使用される。また、桁移動により乗算
あるいは除算を行うことができ、一般にシフト命令の命
令実行時間は乗算命令あるいは除算命令の命令実行時間
より短い。そのため、オペランドのデータに特定の数値
を掛ける場合、あるいはオペランドのデータを特定の数
値で割る場合に、シフト命令が多用されている。例え
ば、オペランドデータに2n(但し、n;正の整数)を掛け
る場合は、左シフト命令が使用され、オペランドデータ
を2nで割る場合は、右シフト命令が使用される。
シフト命令では、オペランドの指定、シフト回数の指
定、左あるいは右のシフト方向の指定を行う。指定され
たオペランドのデータは、シフト回路にロードされ、そ
のシフト回路で指定された回数だけ、右あるいは左右方
向にシフトされる。シフト結果はオペランドに書込ま
れ、命令の実行が完了する。このようなシフト命令を実
行する従来のシフト回路の一構成例が第2図(a),
(b)に示されている。
第2図(a),(b)は、前記文献に記載された従来
のシフト回路の構成と動作の説明図である。
このシフト回路は、オペランドのデータをシフトする
ためのシフトレジスタ10と、シフトレジスタ10からの桁
あふれを格納するための1ビットのレジスタからなるキ
ャリーフラグ20とで、構成されている。
このシフト回路の動作を第2図(a),(b)を参照
しつつ説明する。
シフト前のオペランドデータは57H(但し、H;ヘキサ
デシマル数)、シフト回数は3回とする。
第2図の(a)−1と(b)−1は、オペランドのデ
ータがシフト回路のシフトレジスタ10にロードされた状
態を示す。
右シフトでは、1回のシフト毎に、次の〜の動作
が行われる。
シフトレジスタ10のビット7には“0"が入る。
シフトレジスタ10のビット6〜ビット0には、シフ
ト前のビット7〜ビット1の状態がそれぞれ入る。
キャリーフラグ20には、シフト前のシフトレジスタ
10のビット0の状態が入る。
左シフトでは、1回のシフト毎に、次の〜の動作
が行われる。
シフトレジスタ10のビット0には“0"が入る。
シフトレジスタ10のビット7〜ビット1には、シフ
ト前のビット6〜ビット0の状態がそれぞれ入る。
キャリーフラグ20には、シフト前のシフトレジスタ
10のビット7の状態が入る。
第2図(a)−2,(a)−3,(a)−4はそれぞれ1
回目,2回目,3回目の右シフトが実行された後のシフトレ
ジスタ10とキャリーフラグ20の状態を示し、第2図
(b)−2,(b)−3,(b)−4はそれぞれ1回目,2回
目,3回目の左シフトが実行された後のシフトレジスタ10
とキャリーフラグ20の状態を示す。
このようにしてオペランドのデータは、右あるいは左
方向にシフトされる。
(発明が解決しようとする課題) しかしながら、上記構成のシフト回路では、次のよう
な課題があった。
従来のシフト回路では、例えばオペランドデータを左
シフトして、(オペランドデータ)×2n、の乗算を行う
際に、乗算結果がオーバフローしたか否かの判定が行え
ない。即ち、第2図(b)−3で示されるように、2回
目のシフトにより、シフトレジスタ10からの桁あふれに
より、キャリーフラグ20が“1"になったにもかかわら
ず、第2図(b)−4で示されるように、3回目のシフ
トでキャリーフラグ20が“0"となるため、そのキャリー
フラグ20の内容のテスト(チェック)を行っても、乗算
結果がオーバフローしたか否かを判定することができな
かった。
これを防止するため、シフト回数を1回にしたシフト
命令を実行して1ビットシフト毎にキャリーフラグ20の
内容をテストする命令を付加したルーチンを実行すれ
ば、オーバフローの検出が可能であるが、時間がかか
る。そのため、短時間に、多数桁のシフト動作時のオー
バフローの判定を的確に行うことが困難であった。
本発明は、前記従来技術が持っていた課題として、短
時間に、多数桁のシフト動作時のオーバフローの判定を
行うことが困難である点について、簡単な回路の付加で
解決したシフト回路を提供するものである。
(課題を解決するための手段) 前記課題を解決するために、本発明では、オペランド
のデータをシフトするシフトレジスタと、前記シフトレ
ジスタからの桁あふれを格納するキャリーフラグとを、
備えた前記シフトレジスタを利用して演算処理を実行す
るシフト回路において、前記シフトレジスタにおける最
下位ビットLSBから最上位ビットMSBの方向への前記オペ
ランドのデータのシフトを行う場合に、そのシフト開始
前に前記キャリーフラグの内容をリセットするリセット
手段と、前記キャリーフラグの出力を前記最上位ビット
MSBの出力と共に前記キャリーフラグの入力にフィード
バックするフィードバック手段とを、設けている。そし
て、前記フィードバック手段は、前記キャリーフラグの
出力及び前記MSBの出力が入力され、前記キャリーフラ
グの出力及び前記MSBの出力の少なくとも一方がオーバ
フローを示す論理レベルであった場合に、前記オーバフ
ローを示す論理レベルを前記キャリーフラグに出力する
構成にしている。
(作 用) 本発明によれば、以上のようにシフト回路を構成した
ので、リセット手段は、多数回の左シフトを1命令で実
行する場合に、シフト開始前にキャリーフラグをリセッ
トする。そして、フィードバック手段は、一連のシフト
の途中で一度でもキャリーフラグが例えば“1"にセット
されると、その後のシフトにより、再び“0"にリセット
されることを防止する。これにより、回路の大きな増加
を招くことなく、左シフト命令の実行時に、シフト結果
がオーバフローしたかどうかを判定でき、オペランドの
データに特定の数値を掛ける演算を、乗算命令よりも命
令実行時間の短い左シフト命令に置き換えて実行でき
る。従って、前記課題を解決できるのである。
(実施例) 第1図は、本発明の一実施例を示すシフト回路の回路
図である。
このシフト回路は、データのパラレル入力及びパラレ
ル出力が可能なシフトレジスタ30を備え、そのシフトレ
ジスタ30のパラレルデータ入力端子D0〜D7(但し、D0が
LSB、D7がMSB)には、例えば、マイクロプロセッサの内
部データバスDB0〜DB7(但し、DB0がLSB、DB7がMSB)が
それぞれ接続されている。また、シフトレジスタ30のロ
ード信号入力端子LO、シフト方向選択入力端子R+/L-
シフトクロック入力端子CKには、マイクロプロセッサの
内部制御信号であるロード信号LOAD、右シフト指示信号
RIGHT、シフトクロック信号SHFTCLKの各信号がそれぞれ
接続されている。
このシフトレジスタ30は、入力端子R+/L-に“1"が与
えられて入力端子CKにクロックが入力されると、そのク
ロックの立下りでデータが1ビット右方向(MSB→LSB方
向)にシフトされ、MSBに“0"が入る。また、入力端子R
+/L-に“0"が与えられていて、入力端子CKにクロックが
入力されると、そのクロックの立下りで、データは1ビ
ット左方向(LSB→MSB方向)にシフトされ、LSBに“0"
が入る。
シフトレジスタ30のパラレルデータ出力端子Q0〜Q7
(但し、Q0がLSB、Q7がMSB)には、トライステートバッ
ファ群40中の各トライステートバッファ48〜41の入力端
子がそれぞれ接続され、その各出力端子が内部データバ
スDB0〜DB7にそれぞれ接続されている。各トライステー
トバッファ41〜48の制御入力端子は、マイクロプロセッ
サの内部制御信号であるイネーブルシフトレジスタ信号
ENSHFTと接続されている。
出力端子Q7,Q0及び右シフト指示信号RIGHTは、フィー
ドバック回路50に接続され、その回路50の出力側が、D
型フリップフロップ(以下、D−FFという)からなるキ
ャリーフラグ60に接続されている。
フィードバック手段であるフィードバック回路50は、
キャリーフラグ60のデータ出力端子Qと出力端子Q7の論
理和をとる2入力のオアゲート(以下、ORゲートとい
う)51と、右シフト指示信号RIGHTを反転するインバー
タ52とを備え、そのORゲート51及びインバータ52の出力
側に、2入力のアンドゲート(以下、ANDゲートとい
う)53が接続されている。出力端子Q0と右シフト指示信
号RIGHTは、2入力ANDゲート54の入力側に接続され、そ
のANDゲート54と53の出力側が、2入力ORゲート55の入
力側に接続されている。ORゲート55の出力信号CFINは、
キャリーフラグ60のデータ入力端子Dに接続されてい
る。
キャリーフラグ60のクロック入力端子CKは、シフトク
ロック信号SHFTCLKに、リセット入力端子Rはマイクロ
プロセッサの内部制御信号であるキャリーフラグリセッ
ト信号RSTCFに、データ出力端子Qから出力される信号C
FはORゲート51の入力側に、それぞれ接続されている。
リセット入力端子R及び信号RSTCFにより、リセット手
段が構成されている。
このキャリーフラグ60は、端子CKにクロック信号SHFT
CLKが入力されると、その信号SHFTCLKの立下りで、端子
D上の信号CFINが端子Qに伝えられる。また、端子Rに
“1"の信号RSTCFが入力されると、出力端子Qが“0"と
なる。
第3図は第1図の右シフトのタイムチャート、第4図
は第1図の左シフトのタイムチャートであり、これらの
図を参照しつつシフト動作(1),(2)を説明する。
なお、第3図及び第4図において、ステートi〜i+4
は、マイクロプロセッサの命令実行動作を最小単位の動
作に分解したものである。
(1) 第3図の右シフト動作 シフト前のオペランドのデータは、57H、シフト回数
は3回とする。
右シフト実行中のステートiにおいて、信号LOADが出
力されて、内部データバスDB0〜DB7に乗せられたオペラ
ンドのデータが第1図のシフトレジスタ30にロードさ
れ、そのシフトレジスタ30の出力端子Q0〜Q7が57Hとな
る。ステートi+1では、信号RIGHTが“1"となり、信
号SHFTCLKが出力される。そのため、シフトレジスタ30
のデータは、1ビット右にシフトされ、MSBには“0"が
入る。ステートi+2,i+3においても、信号RIGHTは
“1"となり、信号SHFTCLKが出力されるため、ステート
i+1,i+2,i+3で、シフトレジスタ30の内容が3回右
方向にシフトされ、出力端子Q0〜Q7におけるオペランド
のデータは0AHとなる。
また、ステートi+1,i+2,i+3で、信号RIGHTは
“1"となっているため、インバータ52から“0"が出力さ
れ、ANDゲート53の出力が“0"となり、ANDゲート54の一
方の入力端子には“1"が入力される。そのため、シフト
レジスタ30の出力端子Q0が、信号CFINとしてキャリーフ
ラグ60の入力端子Dに印加される。ステートi+1で
は、出力端子Q0が“1"であるため、信号SHFTCLKの立下
りで信号CFが“1"となる。ステートi+2,i+3におい
ても、出力端子Q0は“1"であり、信号CFが、シフト終了
後に“1"となっている。
ステートi+4で、信号ENSHFTは“1"となり、シフト
された出力端子Q0〜Q7上のオペランドのデータは、トラ
イステートバッファ48〜41を介して内部データバスDB0
〜DB7に乗せられ、オペランドに書込まれる。
(2) 第4図の左シフト動作 右シフト時と同様に、オペランドのデータは57H、シ
フト回数は3回とする。
左シフト実行中のステートiにおいて、信号LOADが出
力され、内部データバスDB7〜DB0に乗せられたオペラン
ドのデータがシフトレジスタ30にロードされ、出力端子
Q7〜Q0が57Hとなる。また、ステートiで、信号RSTCFも
出力され、キャリーフラグ60がリセットされてその出力
信号CFが“0"となる。
ステートi+1では、信号SHFTCLKが出力される。こ
の時、信号RIGHTは“0"であるため、シフトレジスタ30
のデータは1ビット左にシフトされる。LSBには“0"が
入り、出力端子Q0は“0"となる。ステートi+2,i+3
においても、信号SHFTCLKは出力されるため、ステート
i+1,i+2,i+3でシフトレジスタ30の内容は3回左方
向にシフトされ、オペランドのデータがB8Hとなる。
また、ステートi+1,i+2,i+3で信号RIGHTは“0"
となっているため、ANDゲート54の一方の入力端子には
“0"が入力されてそのANDゲート54の出力信号が“0"と
なり、インバータ52の出力信号が“1"となる。そのた
め、出力端子Q7の出力信号とキャリーフラグ60の出力信
号CFとの論理和がORゲート51でとられ、その結果が信号
CFIN信号としてキャリーフラグ60の入力端子Dに印加さ
れる。ステートi+1では、シフトレジスタ30の出力端
子Q7とキャリーフラグ60の出力端子Qとも“0"であり、
信号CFINは“0"となるため、信号SHFTCLKの立下りで信
号CFは“0"から変化しない。ステートi+2では、出力
端子Q7が“1"となるため、信号CFINは“1"となり、信号
SHFTCLKの立下りで信号CFは“1"となる。
ステートi+3では、出力信号Q7は“0"であるが、キ
ャリーフラグ60の出力端子Qは“1"であり、信号CFINが
“1"となるため、信号SHFTCLKの立下りで、信号CFは
“1"から変化しない。ステートi+4で、信号ENSHFTが
“1"となり、シフトされたオペランドのデータはトライ
ステートバッファ48〜41を介して内部データバスDB0〜D
B7にのせられ、オペランドに書込まれる。
本実施例では、左方向にデータをシフトする場合に、
シフト開始前にキャリーフラグ60のリセットを行い、キ
ャリーフラグ60が一連のシフト過程で一度“1"にセット
されると、フィードバック回路50により、その後のシフ
トによって再び“0"にリセットされることがない。その
ため、オーバフローが発生しても、キャリーフラグ60の
内容をテストすることにより、的確にオーバフローを検
出し、演算結果の有効性を判断できる。従って、(オペ
ランドのデータ)×2nの演算を、乗算命令から左シフト
命令に完全に置き換えることができ、複雑な回路を増加
することなく、処理の高速化を計ることができる。
なお、本発明は図示の実施例に限定されず、例えばシ
フトレジスタ30を他のビット構成にしたり、フィードバ
ック回路50を他のゲート回路等で構成したり、あるいは
キャリーフラグ60をリセット機能付きの他のレジスタで
構成する等、種々の変形が可能である。
(発明の効果) 以上詳細に説明したように、本発明によれば、シフト
開始前にキャリーフラグをリセットするリセット手段
と、キャリーフラグの出力を入力にフィードバックする
フィードバック手段とを設けたので、シフトレジスタを
利用して演算を行うような回路において、LSBからMSBの
方向へデータのシフトを行う場合に、特別な回路の増加
を招くことなく、シフト結果がオーバフローしたかどう
かを判定することが可能となり、演算命令よりも命令実
行時間の短いシフト命令により演算が実行できる。
つまり、キャリーフラグが一連のシフト過程で一度、
例えば“1"にセットされると、その後のシフトにより、
再び“0"にリセットされることがないので、オーパフロ
ーの的確な判定が行える。これにより、(オペランドの
データ)×2nの演算を、乗算命令から左シフト命令に完
全に置き換えることができ、回路を増加することなく、
処理の高速化が期待できる。
【図面の簡単な説明】
第1図は本発明の実施例を示すシフト回路の回路図、第
2図(a),(b)は従来のシフト回路の構成と動作の
説明図、第3図は第1図の右シフトのタイムチャート、
第4図は第1図の左シフトのタイムチャートである。 10,30……シフトレジスタ、50……フィードバック回
路、20,60……キャリーフラグ。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】オペランドのデータをシフトするシフトレ
    ジスタと、前記シフトレジスタからの桁あふれを格納す
    るキャリーフラグとを、備えた前記シフトレジスタを利
    用して演算処理を実行するシフト回路において、 前記シフトレジスタにおける最下位ビットから最上位ビ
    ットの方向への前記オペランドのデータのシフトを行う
    場合に、そのシフト開始前に前記キャリーフラグの内容
    をリセットするリセット手段と、 前記キャリーフラグの出力を前記最上位ビットの出力と
    共に前記キャリーフラグの入力にフィードバックするフ
    ィードバック手段とを設け、 前記フィードバック手段は、前記キャリーフラグの出力
    及び前記最上位ビットの出力が入力され、前記キャリー
    フラグの出力及び前記最上位ビットの出力の少なくとも
    一方がオーバフローを示す論理レベルであった場合に、
    前記オーバフローを示す論理レベルを前記キャリーフラ
    グに出力する構成にしたことを特徴とするシフト回路。
JP1182141A 1989-07-14 1989-07-14 シフト回路 Expired - Fee Related JP3070014B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP1182141A JP3070014B2 (ja) 1989-07-14 1989-07-14 シフト回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1182141A JP3070014B2 (ja) 1989-07-14 1989-07-14 シフト回路

Publications (2)

Publication Number Publication Date
JPH0348332A JPH0348332A (ja) 1991-03-01
JP3070014B2 true JP3070014B2 (ja) 2000-07-24

Family

ID=16113068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1182141A Expired - Fee Related JP3070014B2 (ja) 1989-07-14 1989-07-14 シフト回路

Country Status (1)

Country Link
JP (1) JP3070014B2 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61123930A (ja) * 1984-11-19 1986-06-11 Fujitsu Ltd 可変長デ−タ演算のオ−バフロ−検出方式

Also Published As

Publication number Publication date
JPH0348332A (ja) 1991-03-01

Similar Documents

Publication Publication Date Title
JP3487903B2 (ja) 演算装置及び演算方法
US20020143837A1 (en) Microarchitecture of an artihmetic unit
US5440702A (en) Data processing system with condition code architecture for executing single instruction range checking and limiting operations
JP3418460B2 (ja) 倍精度除算回路および方法
KR950006580B1 (ko) 나눗셈연산장치
US4905178A (en) Fast shifter method and structure
US5410721A (en) System and method for incrementing a program counter
JP3714570B2 (ja) 並列処理用割り算回路
JP3070014B2 (ja) シフト回路
EP0278529A2 (en) Multiplication circuit capable of operating at a high speed with a small amount of hardware
JPH0736152B2 (ja) 演算回路
US4380051A (en) High speed digital divider having normalizing circuitry
JPH0831029B2 (ja) 除算用近似逆数生成装置
US6615228B1 (en) Selection based rounding system and method for floating point operations
JPH1091395A (ja) プロセッサ
EP0381019B1 (en) Sixteen-bit arithmetic logic unit
US6035310A (en) Method and circuit for performing a shift arithmetic right operation
KR100385233B1 (ko) 데이터 프로세싱 시스템의 익스포넌트 유닛
KR960012664B1 (ko) 정규화를 위한 시프트-넘버 검출 회로를 구비한 고정 소수점 디지탈 신호 처리기
JP2615746B2 (ja) ビット操作回路
JP3110072B2 (ja) 事前正規化回路
JP2998324B2 (ja) 正規化シフト装置および正規化シフト方法
RU39722U1 (ru) Силлогистический процессор
US6862584B2 (en) Logical fuzzy union and intersection operation calculation circuit
US20070055847A1 (en) Operational processor with a status information register serving as a data register

Legal Events

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