JPH07244577A - 演算方法および演算装置 - Google Patents

演算方法および演算装置

Info

Publication number
JPH07244577A
JPH07244577A JP6059997A JP5999794A JPH07244577A JP H07244577 A JPH07244577 A JP H07244577A JP 6059997 A JP6059997 A JP 6059997A JP 5999794 A JP5999794 A JP 5999794A JP H07244577 A JPH07244577 A JP H07244577A
Authority
JP
Japan
Prior art keywords
data
carry
flag
bit
circuit
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
JP6059997A
Other languages
English (en)
Inventor
Junichi Sato
純一 佐藤
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.)
Kanebo Ltd
Original Assignee
Kanebo 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 Kanebo Ltd filed Critical Kanebo Ltd
Priority to JP6059997A priority Critical patent/JPH07244577A/ja
Publication of JPH07244577A publication Critical patent/JPH07244577A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 プログラムのステップ数を減らし、かつ分岐
制御をなくすことにより実行時間が短縮された乗算方法
を提供することである。 【構成】 1個の加算回路および1組のシフトレジスタ
r0,r1,r2,r3を用いた乗算において、すべて
の演算命令で変化する汎用キャリーフラグCとは別に、
右シフト命令の実行時にのみ変化する専用キャリーフラ
グSCを設ける。条件付加算命令の条件判断時に汎用キ
ャリーフラグCまたは専用キャリィフラグSCのいずれ
かを選択するための切替用フラグswfをプログラムの
命令フォーマットに付加する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は演算方法および演算装置
に関し、特に乗算方法および乗算装置、除算方法および
除算装置、加算回路、ゼロフラグ先見回路、並びに算術
論理演算ユニットに関する。
【0002】
【従来の技術】図14はソフトウエア(機械語)による
従来の乗算方法および乗算装置の一例を示す図であり、
図15は図14の乗算方法の手順を示すフローチャート
である。図14および図15を参照しながら従来の乗算
方法を説明する。
【0003】ここでは、8ビットの算術論理演算ユニッ
ト(ALU)を用いた16ビットの乗数と16ビットの
被乗数との乗算を説明する。
【0004】この乗算では、1個の加算回路、4個の8
ビットシフトレジスタr0,r1,r2,r3、2個の
8ビットレジスタr4,r5、カウント用レジスタr
6、およびフラグレジスタrfを準備する。フラグレジ
スタrfには、ゼロフラグZ、ネガティブフラグN、オ
ーバーフローフラグOおよびキャリーフラグCが状態フ
ラグとして格納される。これらの状態フラグは、すべて
の演算命令ごとに変化する。
【0005】まず、レジスタr2,r3に“00000
000”をそれぞれセットする(ステップS51)。ま
た、レジスタr1に被乗数の上位8ビットをセットし
(ステップS52)、レジスタr0に被乗数の下位8ビ
ットをセットする(ステップS53)。さらに、レジス
タr5に乗数の上位8ビットをセットし(ステップS5
4)、レジスタr4に乗数の下位8ビットをセットする
(ステップS55)。レジスタr6には繰り返し回数
“16”をセットする(ステップS56)。
【0006】次に、レジスタr3内のデータを1ビット
だけ右シフト(下位側へシフト)する(ステップS5
7)。このとき、レジスタr3から出力される最下位ビ
ットはキャリーフラグCとしてフラグレジスタrfに格
納される。そして、レジスタr2内のデータをキャリー
フラグCとともに1ビットだけ右シフトする(ステップ
S58)。このとき、レジスタr2から出力される最下
位ビットはキャリーフラグCとしてフラグレジスタrf
に格納される。同様にして、レジスタr1内のデータを
キャリーフラグCとともに1ビットだけ右シフトし(ス
テップS59)、レジスタr0内のデータをキャリーフ
ラグCとともに1ビットだけ右シフトする(ステップS
60)。このとき、レジスタr0から出力される最下位
ビットはキャリーフラグCとしてフラグレジスタrfに
格納される。このように、フラグレジスタrfに格納さ
れるキャリーフラグCは、命令ごとに変化する。
【0007】次に、フラグレジスタrf内のキャリーフ
ラグCが“1”の場合には、レジスタr2内のデータと
レジスタr4内のデータとを加算してその加算結果をレ
ジスタr2に格納する(ステップS62)。その加算に
よるキャリー(桁上げ信号)はキャリーフラグCとして
フラグレジスタrfに格納される。また、レジスタr3
内のデータとレジスタr5内のデータとフラグレジスタ
rf内のキャリーフラグCとを加算してその加算結果を
レジスタr3に格納する(ステップS63)。その後、
レジスタr6内の繰り返し回数から“1”だけ減算して
その減算結果をレジスタr6に格納する(ステップS6
4)。
【0008】ステップS61においてフラグレジスタr
f内のキャリーフラグCが“0”の場合には、ステップ
S64に進み、レジスタr6内の繰り返し回数から
“1”だけ減算してその減算結果をレジスタr6に格納
する。
【0009】ステップS65において、フラグレジスタ
rf内のネガティブフラグNが“0”であるかどうかを
判別する。ネガティブフラグNが“0”の場合にはステ
ップS57に戻り、上記の処理を繰り返す。上記のステ
ップS57〜S64の処理を16回繰り返すと、フラグ
レジスタrf内のネガティブフラグNが“1”となる。
この場合には処理を終了する。その結果、レジスタr
3,r2,r1,r0に32ビットの積の値が得られ
る。
【0010】このように、従来の乗算方法では、1個の
加算回路、1組のシフト回路および条件付分岐命令によ
り乗算が実行される。
【0011】図16はソフトウエア(機械語)による従
来の除算方法および除算装置の一例を示す図であり、図
17は図16の除算方法の手順を示すフローチャートで
ある。ここでは、16ビットの被除数と16ビットの除
数との除算を説明する。
【0012】この除算では、1個の加減算回路、4個の
8ビットシフトレジスタr0,r1,r2,r3、2個
の8ビットレジスタr4,r5、カウント用レジスタr
6、およびフラグレジスタrfを準備する。
【0013】まず、レジスタr2,r3に“00000
000”をそれぞれセットする(ステップS71)。ま
た、レジスタr1に被除数の上位8ビットをセットし
(ステップS72)、レジスタr0に被除数の下位8ビ
ットをセットする(ステップS73)。さらに、レジス
タr5に除数の上位8ビットをセットし(ステップS7
4)、レジスタr4に除数の下位8ビットをセットする
(ステップS75)。レジスタr6には繰り返し回数
“16”をセットする(ステップS76)。
【0014】次に、レジスタr0内のデータを1ビット
だけ左シフト(上位側へシフト)する(ステップS7
7)。このとき、レジスタr0から出力される最上位ビ
ットはキャリーフラグCとしてフラグレジスタrfに格
納される。そして、レジスタr1内のデータをキャリー
フラグCとともに1ビットだけ左シフトする(ステップ
S78)。このとき、レジスタr1から出力される最上
位ビットはキャリーフラグCとしてフラグレジスタrf
に格納される。同様にして、レジスタr2内のデータを
キャリーフラグCとともに1ビットだけ左シフトし(ス
テップS79)、レジスタr3内のデータをキャリーフ
ラグCとともに1ビットだけ左シフトする(ステップS
80)。このとき、レジスタr3から出力される最上位
ビットはキャリーフラグCとしてフラグレジスタrfに
格納される。
【0015】次に、レジスタr2内のデータからレジス
タr4内のデータを減算してその減算結果をレジスタr
2に格納する(ステップS81)。その減算によるキャ
リーはキャリーフラグCとしてフラグレジスタrfに格
納される。そして、レジスタr3内のデータからレジス
タr5内のデータとキャリーフラグCとを減算してその
減算結果をレジスタr3に格納する(ステップS8
2)。このとき、レジスタr3内のデータの最上位ビッ
トはネガティブフラグNとしてフラグレジスタrfに格
納される。
【0016】さらに、フラグレジスタrf内のネガティ
ブフラグNが“0”であるかどうかを判別する(ステッ
プS83)。ネガティブフラグNが“1”の場合には、
レジスタr2内のデータとレジスタr4内のデータとを
加算してその加算結果をレジスタr2に格納する(ステ
ップS84)。この加算によるキャリーはキャリーフラ
グCとしてフラグレジスタrfに格納される。そして、
レジスタr3内のデータとレジスタr5内のデータとキ
ャリーフラグCとを加算してその加算結果をレジスタr
3に格納する(ステップS85)。その後、レジスタr
6内の繰り返し回数から“1”だけ減算してその減算結
果をレジスタr6に格納する(ステップS87)。
【0017】ステップS83においてネガティブフラグ
Nが“0”の場合には、レジスタr0内のデータに
“1”を加算してその加算結果をレジスタr0に格納す
る(ステップS86)。その後、レジスタr6内の繰り
返し回数から“1”だけ減算してその減算結果をレジス
タr6に格納する(ステップS87)。
【0018】ステップS88において、フラグレジスタ
rf内のネガティブフラグNが“0”であるかどうかを
判別する。ネガティブフラグNが“0”の場合にはステ
ップS77に戻り、上記処理を繰り返す。上記のステッ
プS77〜S87の処理を16回繰り返すと、フラグレ
ジスタrf内のネガティブフラグNが“1”となる。こ
の場合には処理を終了する。その結果、レジスタr1,
r0に16ビットの商の値が得られ、レジスタr3,r
2に16ビットの余りの値が得られる。
【0019】このように、従来の除算方法では、1個の
加減算回路、1組のシフト回路および条件付分岐命令に
より除算が行われる。
【0020】図18は一般的な4ビットリップルキャリ
ーアダーの構成を示すブロック図である。このリップル
キャリーアダーは4個の全加算器FA0〜FA3からな
り、4ビットのデータX3〜X0,Y3〜Y0を加算し
て和データS3〜S0を出力する。各全加算器FA0〜
FA3のキャリーC0〜C3はそれぞれ上位側の全加算
器に与えられる。
【0021】このように、リップルキャリーアダーで
は、キャリーが4個の全加算器FA0〜FA3を順次伝
播していくので、最上位のキャリーC3が得られるまで
に時間がかかるという欠点がある。そこで、予め桁上げ
を予測する桁上げ先見回路が用いられる。
【0022】図19は従来の4ビット桁上げ先見回路の
構成を示す回路図である。この桁上げ先見回路は、4個
の半加算器HA0〜HA3および4個のキャリー生成回
路CG0〜CG3を含む。
【0023】各半加算器HAiは、一方のデータの1ビ
ットXiおよび他方のデータの1ビットYiを受け、和
信号Piおよび桁上げ信号Giを出力する。ここで、i
は0,1,…,3を表す。キャリー生成回路CG0〜C
G3は、それぞれ1〜4個のANDゲート1、1個のN
ORゲートおよび1個のインバータ3を含み、キャリー
C0〜C3をそれぞれ出力する。
【0024】この桁上げ先見回路によれば、最上位のキ
ャリーC3が最下位のキャリーC0と同時に出力され
る。
【0025】図20は従来の算術論理演算ユニット(A
LU)およびゼロフラグ検出回路の構成を示すブロック
図である。
【0026】図20において、インバータ回路110は
データX7〜X0を受け、反転データ/X7〜/X0を
出力する。ORゲート91は減算命令subおよびキャ
リー付減算命令sbcを受け、選択信号SSをセレクタ
回路120に与える。セレクタ回路120はデータX7
〜X1および反転データ/X7〜/X0を受け、選択信
号SSに基づいて、加算時にデータX7〜X0を選択
し、減算時に反転データ/X7〜/X0を選択し、選択
したデータをデータX7′〜X0′として出力する。
【0027】加算回路130はデータY7〜Y0および
セレクタ120からのデータX7′〜X0′を受け、そ
れらの加算結果をデータA7〜A0として出力する。N
ORゲート92、ANDゲート93,94,95および
ORゲート96はキャリー出力回路を構成する。加算命
令addおよび減算命令subの場合には、ANDゲー
ト93の出力は“0”となり、キャリー付加算命令ad
cおよびキャリー付減算命令sbcの場合には、AND
ゲート93からキャリーCiが出力される。このように
して、加算回路130は、加算、減算、キャリー付加算
およびキャリー付減算を実行する。
【0028】AND回路140は2つのデータX7〜X
0,Y7〜Y0を受け、それらの論理積演算を行い、そ
の演算結果をデータB7〜B0として出力する。OR回
路150は2つのデータX7〜X0,Y7〜Y0を受
け、それらの論理和演算を行い、その演算結果をデータ
C7〜C0として出力する。XOR回路160は2つの
データX7〜X0,Y7〜Y0を受け、それらの排他的
論理和演算を行い、その演算結果をデータD7〜D0と
して出力する。
【0029】ORゲート97は加算命令add、キャリ
ー付加算命令adc、減算命令subおよびキャリー付
減算命令sbcを受け、選択信号SAを出力する。セレ
クタ回路170には選択信号SA,SB,SC,SDが
与えられる。セレクタ回路170は、選択信号SA,S
B,SC,SDに応答してそれぞれ加算回路130から
のデータA7〜A0、AND回路140からのデータB
7〜B0、OR回路150からのデータC7〜C0およ
びXOR回路160からのデータD7〜D0をそれぞれ
選択し、選択したデータをデータQ7〜Q0として出力
する。
【0030】NORゲート90はセレクタ回路170か
ら出力されるデータQ7〜Q0を受け、ゼロフラグZを
出力する。このNORゲート90がゼロフラグ検出回路
を構成する。
【0031】図21に示すように、インバータ回路11
0は8個のインバータ111からなる。また、図22に
示すように、セレクタ回路120は8個のセレクタ12
1からなる。各セレクタ121は、データXiを受ける
入力端子a、反転データ/Xiを受ける入力端子b、セ
レクト信号SSを受けるセレクト端子s、データXi′
を出力する出力端子cを有する。ここで、iは、0,
1,…,7を表す。図23に示すように、1つのセレク
タ121は3個のNANDゲート122,123,12
4からなる。
【0032】図24に示すように、加算回路130は8
個の全加算器131からなる。各全加算器131は、下
位側からのキャリーを受ける入力端子i1、データX
i′を受ける入力端子i2、データYiを受ける入力端
子i3、データAiを出力する出力端子s、およびキャ
リーを出力する出力端子cを有する。ここで、iは、
0,1,…,7を表す。図25に示すように、1つの全
加算器131は6個のインバータ101、5個のNAN
Dゲート102および6個のNORゲート103からな
る。
【0033】図26に示すように、AND回路140は
8個のNANDゲート141および8個のインバータ1
42からなる。図27に示すように、OR回路150は
8個のNORゲート151および8個のインバータ15
2からなる。図28に示すように、XOR回路160は
8個の排他的論理和ゲート161からなる。
【0034】図29に示すように、セレクタ回路170
は8個のセレクタ171からなる。各セレクタ171
は、データAi,Bi,Ci,Diをそれぞれ受ける入
力端子a,b,c,d、選択信号SA,SB,SC,S
Dをそれぞれ受けるセレクト端子sa,sb,sc,s
dおよびデータQiを出力する出力端子eを有する。こ
こで、iは、0,1,…,7を表す。図30に示すよう
に、1つのセレクタ171は5個のNANDゲート17
2〜176からなる。
【0035】
【発明が解決しようとする課題】図14および図15に
示す従来の乗算方法では、フラグレジスタrfに格納さ
れるキャリーフラグCがすべての演算ごとに変化する。
すなわち、ステップS60の右シフトにより得られたキ
ャリーフラグCはステップS62の加算により変化す
る。そのため、ステップS62,S63の加算を行うか
どうかの判断をフラグレジスタrf内のキャリーフラグ
Cに基づいて行うことはできない。そこで、上記の例で
は、ステップS61の条件付分岐命令によりステップS
62,S63の加算を行うかどうかを制御している。そ
の結果、条件付分岐命令によりプログラムのステップ数
が多くなり、分岐制御により実行時間が増大するという
問題があった。
【0036】図16および図17に示す従来の除算方法
では、フラグレジスタrfに格納されるネガティブフラ
グNがすべての演算ごとに変化する。すなわち、ステッ
プS82の減算により得られたネガティブフラグNはス
テップS84の加算により変化する。そのため、ステッ
プS84,S85の加算を行うかどうかの判断をフラグ
レジスタrf内のネガティブフラグNに基づいて行うこ
とはできない。そこで、上記の例では、ステップS83
の条件付分岐命令によりステップS84,S85の加算
を行うかどうかを制御している。その結果、条件付分岐
命令によりプログラムのステップ数が多くなり、分岐制
御により実行時間が増大するという問題があった。
【0037】算術論理演算ユニットにおいて加算回路を
使用する場合、ゼロフラグ、ネガティブフラグ、オーバ
ーフローフラグおよびキャリーフラグのような状態フラ
グが必要となってくる。これらの状態フラグのうちネガ
ティブフラグ、オーバーフローフラグおよびキャリーフ
ラグは最上位ビットのデータ出力およびキャリー出力に
基づいて生成される。加算回路として図18に示すリッ
プルキャリーアダーを用いた場合、最上位ビットのキャ
リー出力が得られるまでに時間がかかるので、データ入
力から状態フラグの出力までの遅延時間が大きくなる。
その結果、中央演算処理装置(以下、CPUと呼ぶ)の
クロックサイクルが増大するという問題があった。
【0038】一方、加算回路に図19の桁上げ先見回路
を用いると、データ入力から最上位ビットのキャリー出
力までの遅延時間が短縮される。しかし、桁上げ先見回
路によりハードウエア量が多くなり、コストが高くなる
という問題があった。
【0039】図20に示す算術論理演算ユニットでは、
各算術演算および各論理演算の最終出力データのうちい
ずれかをセレクタ回路170で選択し、選択されたデー
タに対してNORゲート90により否定論理和演算を行
うことによりゼロフラグZを生成している。そのため、
加減算時には加算回路130から加算結果が出力された
後、ゼロフラグZが生成される。図25に示すように、
加算回路130の各全加算器131においては、下位ビ
ット側から与えられるキャリーが2段のNANDゲート
102を通過して上位ビット側に出力される。そのた
め、データ入力から加算結果の出力までの遅延時間が長
くなる。その結果、データ入力からゼロフラグ出力まで
の遅延時間が長くなり、CPUのクロックサイクルが増
大するという問題があった。
【0040】この発明の目的は、プログラムのステップ
数を少なくし、かつ分岐制御による複雑さをなくすこと
により実行時間が短縮された乗算方法を提供することで
ある。
【0041】この発明の他の目的は、プログラムのステ
ップ数を少なくし、かつ分岐制御による複雑さをなくす
ことにより実行時間が短縮された除算方法を提供するこ
とである。
【0042】この発明のさらに他の目的は、少ないハー
ドウエア量で最上位ビットの加算結果およびキャリーを
高速に生成することができる加算回路を提供することで
ある。
【0043】この発明のさらに他の目的は、少ないハー
ドウエア量で加算結果およびキャリーを高速に出力する
ことができる加算回路を提供することである。
【0044】この発明のさらに他の目的は、加減算に関
するゼロフラグを高速に生成することができるゼロフラ
グ先見回路を提供することである。
【0045】この発明のさらに他の目的は、少ないハー
ドウエア量でゼロ判定を高速に行うことができる算術論
理演算ユニットを提供することである。
【0046】
【課題を解決するための手段】
(1)第1の発明 第1の発明に係る乗算方法の要旨とするところは、プロ
グラムに従ってデータのシフトおよび加算を実行するこ
とにより乗算を行う乗算方法において、データを下位ビ
ット側へシフトする命令の実行時のみに変化する専用キ
ャリーフラグを設けるとともに、専用キャリーフラグの
状態を条件とする条件付き加算命令に従って加算を実行
することにある。
【0047】(2)第2の発明 第2の発明に係る除算方法の要旨とするところは、プロ
グラムに従ってデータのシフトおよび加減算を実行する
ことにより除算を行う除算方法において、減算命令の実
行時のみに変化する専用ネガティブフラグを設けるとと
もに、専用ネガティブフラグの状態を条件とする条件付
き加算命令に従って加算を実行することにある。
【0048】(3)第3の発明 第3の発明に係る加算回路は、第1ないし第(n−1)
の全加算器、桁上げ先見回路および第nの全加算器を備
える。nは2以上の整数である。
【0049】第1ないし第(n−1)の全加算器は、2
つのnビットデータの最下位ビットから第2番目の上位
ビットに対応して設けられ、2つのnビットデータの最
下位ビットから第2番目の上位ビットの加算結果を示す
データを出力する。
【0050】桁上げ先見回路は、2つのnビットデータ
の最下位ビットから第2番目の上位ビットを受け、第2
番目の上位ビットに対応する桁上げ信号を生成する。
【0051】第nの全加算器は、2つのnビットデータ
の最上位ビットおよび桁上げ先見回路により生成される
桁上げ信号を受け、最上位ビットに対応する加算結果を
示すデータおよび最上位ビットに対応する桁上げ信号を
出力する。
【0052】(4)第4の発明 第4の発明に係る加算回路は、第1ないし第mの全加算
器、桁上げ先見回路および第(n−m)ないし第nの全
加算器を備える。nは2以上の整数であり、mはnより
も小さい1以上の整数である。
【0053】第1ないし第mの全加算器は、リップルキ
ャリー方式で接続され、2つのnビットデータの下位側
のmビットを受け、下位側のmビットに対応する加算結
果を示すデータを出力する。
【0054】桁上げ先見回路は、2つのnビットデータ
を受け、桁上げ信号を生成する。第(n−m)ないし第
nの全加算器は、2つのnビットデータの上位側の(n
−m)ビットおよび桁上げ先見回路により生成された桁
上げ信号を受け、上位側の(n−m)ビットに対応する
加算結果を示すデータを出力する。
【0055】(5)第5の発明 第5の発明に係るゼロフラグ先見回路は、演算手段、第
1のゼロフラグ生成手段および第2のゼロフラグ生成手
段を備える。
【0056】演算手段は、第1のデータの値を1だけ減
少させまたは第2のデータの値を1だけ増加させる。
【0057】第1のゼロフラグ生成手段は、桁上げ入力
が1の場合の第1および第2のデータの加算の実行時
に、第1のデータと第2のデータとに関して対応する各
ビットが互いに相補であるかどうかを判別し、すべての
ビットが互いに相補であるかどうかに基づいてゼロフラ
グを生成し、桁上げ入力が0の場合または桁上げ入力が
ない場合の第1および第2のデータの加算の実行時に、
演算手段により減少された第1のデータと第2のデータ
とに関して対応する各ビットが互いに相補であるかどう
かを判別し、すべてのビットが互いに相補であるかどう
かに基づいてゼロフラグを生成する。
【0058】第2のゼロフラグ生成手段は、桁上げ入力
が1の場合の第1のデータから第2のデータの減算の実
行時に、演算手段により減少された第1のデータと第2
のデータとに関してまたは第1のデータと演算手段によ
り増加された第2のデータとに関して対応する各ビット
が互いに一致しているかどうかを判別し、すべてのビッ
トが互いに一致しているかどうかに基づいてゼロフラグ
を生成し、桁上げ入力が0の場合または桁上げ入力がな
い場合の第1のデータから第2のデータの減算の実行時
に、第1のデータと第2のデータとに関して対応する各
ビットが互いに一致しているかどうかを判別し、すべて
のビットが互いに一致しているかどうかに基づいてゼロ
フラグを生成する。
【0059】(6)第6の発明 第6の発明に係る算術論理演算ユニットは、加減算手
段、演算手段、第1のゼロフラグ先見手段および第2の
ゼロフラグ先見手段を備える。
【0060】加減算手段は、第1および第2のデータの
加減算を行う。演算手段は、データの所定の演算を行
う。
【0061】第1のゼロフラグ先見手段は、加減算手段
による加減算結果が0であるかどうかを示すゼロフラグ
を出力する。
【0062】第2のゼロフラグ先見手段は、1または複
数の演算手段による演算結果が0であるかどうかを示す
ゼロフラグを出力する。
【0063】選択手段は、第1および第2のゼロフラグ
先見回路から出力されたゼロフラグのいずれかを選択す
る。
【0064】第1のゼロフラグ先見手段は、第1のデー
タの値を1だけ減少させまたは第2のデータの値を1だ
け増加させる演算手段と、第1のデータまたは演算手段
により減少された第1のデータと第2のデータまたは演
算手段により減少された第2のデータとに関して対応す
る各ビットを互いに比較する比較手段と、比較手段によ
る比較結果に基づいてゼロフラグを生成するゼロフラグ
生成手段とを含む。
【0065】
【作用】
(1)第1の発明 機械語による乗算では、右シフト(下位ビット側へのシ
フト)命令により発生したキャリーフラグの状態に基づ
いて処理を変化させるが、汎用キャリーフラグは右シフ
ト命令後の加算命令によって変化してしまう。第1の発
明に係る乗算方法においては、右シフト命令の実行時の
みに変化する専用キャリーフラグを設けることにより、
右シフト命令の実行後に連続する加算命令が実行されて
も、右シフト命令によるキャリーフラグの状態が保存さ
れる。そして、専用キャリーフラグの状態を条件とする
条件付き加算命令に従って加算を実行することにより、
分岐制御することなく、乗算を実行することが可能とな
る。
【0066】(2)第2の発明 機械語による除算では、減算命令により発生したネガテ
ィブフラグの状態に基づいて処理を変化させるが、汎用
ネガティブフラグは減算命令後の加算命令によって変化
してしまう。第2の発明に係る除算方法においては、減
算命令の実行時のみに変化する専用ネガティブフラグを
設けることにより、減算命令の実行後に連続する加算命
令が実行されても、減算命令によるネガティブフラグの
状態が保存される。そして、専用ネガティブフラグの状
態を条件とする条件付き加算命令に従って加算を実行す
ることにより、分岐制御することなく、除算を実行する
ことが可能となる。
【0067】(3)第3の発明 第3の発明に係る加算回路においては、最上位ビットに
対応する第nの全加算器が、独立した桁上げ先見回路に
より生成される桁上げ信号に基づいて最上位ビットに対
応する加算結果および桁上げ信号を出力する。それによ
り、第nの全加算器と他の回路との相互作用がなくな
り、最上位ビットを計算する過程で桁上げ信号が伝搬す
る各ゲートのゲート容量および配線容量が低減される。
したがって、最小限のハードウエア量により最上位ビッ
トの各出力の遅延時間を短縮することができる。
【0068】(4)第4の発明 第4の発明に係る加算回路においては、下位側のmビッ
トに対応する第1ないし第mの全加算器がリップルキャ
リー方式で接続され、桁上げ先見回路を用いていないの
で、ハードウエア量が少なくなる。下位ビット側の各出
力の遅延時間は上位ビット側の各出力の遅延時間に比較
して小さいので、下位ビット側の各出力の遅延時間は加
算回路の全体に処理速度に影響を与えない。
【0069】これに対して、上位ビット側の各出力の遅
延時間は加算回路の全体の処理速度に影響を与える。こ
の加算回路においては、上位側の(n−m)ビットに対
応する第(n−m)ないし第nの全加算器が、桁上げ先
見回路により生成された桁上げ信号に基づいて上位ビッ
トに対応する加算結果を出力するので、上位ビット側の
各出力の遅延時間が短縮される。したがって、最小限の
ハードウェアで高速に加算結果が得られる。
【0070】(5)第5の発明 第5の発明に係るゼロフラグ先見回路は、インクリメン
ト機能またはデクリメント機能を有する演算手段、およ
び第1および第2のデータの対応する各ビットが互いに
相補であるか一致しているかを判別する機能を有する第
1および第2のゼロフラグ生成手段により構成される。
【0071】インクリメント機能およびデクリメント機
能は、加算回路と比較して、より少ない段数の論理ゲー
トを用いて構成されるので、加算回路の加算結果に基づ
いてゼロフラグを生成する場合よりも高速にゼロフラグ
が生成される。
【0072】(6)第6の発明 第6の発明に係る算術論理演算ユニットにおいては、複
数の演算手段から出力された演算結果に基づいて複数の
ゼロフラグがそれぞれ並列的に生成された後、それらの
ゼロフラグのうちいずれかが選択されるので、選択手段
のビット数が演算手段の数と同じになる。それにより、
複数の演算手段から出力されたデータのいずれかを選択
した後、選択されたデータに基づいてゼロフラグを生成
する場合に比較して、選択手段の構成が簡単になり、ハ
ードウエア量が低減される。
【0073】また、加減算に関するゼロフラグがインク
リメント機能またはデクリメント機能を有する演算手段
および第1および第2のデータの対応する各ビットを比
較する比較手段により構成されるので、加減算時のゼロ
フラグが高速に生成される。
【0074】
【実施例】
(1)第1の実施例 図1は第1の実施例による乗算方法および乗算装置を示
すブロック図であり、図2は図1の乗算方法の手順を示
すフローチャートである。図1の例では、16ビットの
乗数と16ビットの被乗数との乗算を行い、32ビット
の積を得る。
【0075】この乗算では、1個の加算回路、4個の8
ビットシフトレジスタr0,r1,r2,r3、2個の
8ビットレジスタr4,r5、カウント用レジスタr6
および汎用フラグレジスタrfに加えて、専用フラグレ
ジスタrfsを準備する。
【0076】汎用フラグレジスタrfには、すべての演
算命令ごとに変化する汎用ゼロフラグZ、汎用ネガティ
ブフラグN、汎用オーバーフローフラグOおよび汎用キ
ャリーフラグCが汎用状態フラグとして格納される。専
用フラグレジスタrfsには、右シフト命令実行時のみ
に変化する専用キャリーフラグSCおよび減算命令実行
時のみに変化する専用ネガティブフラグSNが専用状態
フラグとして格納される。この実施例では専用キャリー
フラグSCが用いられる。
【0077】また、プログラムにおいて図5に示す命令
フォーマットが使用される。swfは条件付命令使用時
に用いられる切替用フラグであり、この切替用フラグs
wfが“1”のとき専用状態フラグを用い、“0”のと
き汎用状態フラグを用いる。opは命令の操作コードを
表し、conは一致条件を表す。rdはディスティネー
ションレジスタを表す。rsはソースレジスタを表し、
rtはターゲットレジスタを表す。immは定数データ
を表し、addは即値アドレスを表す。
【0078】図1および図2において、まず、レジスタ
r2,r3に“00000000”をそれぞれセットす
る(ステップS11)。また、レジスタr1に被乗数の
上位8ビットをセットし(ステップS12)、レジスタ
r0に被乗数の下位8ビットをセットする(ステップS
13)。さらに、レジスタr5に乗数の上位8ビットを
セットし(ステップS14)、レジスタr4に乗数の下
位8ビットをセットする(ステップS15)。レジスタ
r6には繰り返し回数“16”をセットする(ステップ
S16)。
【0079】次に、レジスタr3内のデータを1ビット
だけ右シフトする(ステップS17)。このとき、レジ
スタr3から出力される最下位ビットは汎用キャリーフ
ラグCおよび専用キャリーフラグSCとして汎用フラグ
レジスタrfおよび専用フラグレジスタrsfにそれぞ
れ格納される。そして、レジスタr2内のデータを汎用
キャリーフラグCとともに1ビットだけ右シフトする
(ステップS18)。同様にして、レジスタr1内のデ
ータを汎用キャリーフラグCとともに1ビットだけ右シ
フトし(ステップS19)、レジスタr0内のデータを
汎用キャリーフラグCとともに1ビットだけ右シフトす
る(ステップS20)。このとき、レジスタr0から出
力される最下位ビットは汎用キャリーフラグCとして汎
用フラグレジスタrfに格納され、かつ専用キャリーフ
ラグSCとして専用フラグレジスタrfsに格納され
る。
【0080】次に、条件付加算命令により、専用キャリ
ーフラグSCが“1”のとき、レジスタr2内のデータ
とレジスタr4内のデータとを加算してその加算結果を
レジスタr2に格納する(ステップS21)。この加算
によるキャリーは汎用キャリーフラグCとして汎用フラ
グレジスタrfに格納される。また、条件付加算命令に
より、専用キャリーフラグSCが“1”のとき、レジス
タr3内のデータとレジスタr5内のデータと汎用キャ
リーフラグCとを加算してその加算結果をレジスタr3
に格納する(ステップS22)。その後、レジスタr6
内の繰り返し回数から“1”だけ減算してその減算結果
をレジスタr6に格納する(ステップS23)。
【0081】そして、汎用フラグレジスタrf内の汎用
ネガティブフラグNが“0”であるかどうかを判別する
(ステップS24)。汎用ネガティブフラグNが“0”
の場合には、ステップS17に戻り、上記の処理を繰り
返す。上記のステップS17〜S23の処理を16回繰
り返すと、汎用ネガティブフラグNが“1”となる。こ
の場合には処理を終了する。その結果、4個のレジスタ
r3、r2,r1,r0に32ビットの積の値が得られ
る。
【0082】この実施例においては、専用キャリーフラ
グSCを設けることにより、連続した条件付加算命令が
あった場合でも、最後の右シフト命令によるキャリーの
状態が保存される。それにより、分岐制御を行うことな
く乗算を実行することができる。
【0083】上記実施例の乗算方法を図14および図1
5の乗算方法と比較すると、プログラムのステップ数が
減少し、かつ分岐制御が不要となる。その結果、乗算の
実行時間が短縮される。
【0084】なお、上記実施例においては、被乗数の最
上位ビットが“1”でないことを条件として正確な乗算
結果が得られる。
【0085】(2)第2の実施例 図3は第2の実施例による除算方法および除算装置を示
すブロック図であり、図4は図3の除算方法の手順を示
すフローチャートである。図3の例では、16ビットの
被除数と16ビットの除数との除算を行い、16ビット
の商と16ビットの余りとを得る。
【0086】この除算では、1個の加減算回路、4個の
8ビットシフトレジスタr0,r1,r2,r3、2個
の8ビットレジスタr4,r5、カウント用レジスタr
6および汎用フラグレジスタrfに加えて、専用フラグ
レジスタrfsを準備する。専用フラグレジスタrfs
には、第1の実施例と同様に、右シフト命令の実行時の
みに変化する専用キャリーフラグSCおよび減算命令の
実行時のみに変化する専用ネガティブフラグSNが格納
される。この実施例においては専用ネガティブフラグS
Nが用いられる。また、第1の実施例と同様に、プログ
ラムにおいて図5に示す命令フォーマットが用いられ
る。
【0087】図3および図4において、まず、レジスタ
r2,r3に“00000000”をそれぞれセットす
る(ステップS31)。また、レジスタr1に被除数の
上位8ビットをセットし(ステップS32)、レジスタ
r0に被除数の下位8ビットをセットする(ステップS
33)。さらに、レジスタr5に除数の上位8ビットを
セットし(ステップS34)、レジスタr4に除数の下
位8ビットをセットする(ステップS35)。レジスタ
r6には繰り返し回数“16”をセットする(ステップ
S36)。
【0088】次に、レジスタr0内のデータを1ビット
だけ左シフトする(ステップS37)。このとき、レジ
スタr0から出力される最上位ビットは汎用キャリーフ
ラグCとして汎用フラグレジスタrfに格納される。そ
して、レジスタr1内のデータを汎用キャリーフラグC
とともに1ビットだけ左シフトする(ステップS3
8)。同様にして、レジスタr2内のデータを汎用キャ
リーフラグCとともに1ビットだけ左シフトし(ステッ
プS39)、レジスタr3内のデータを汎用キャリーフ
ラグCとともに1ビットだけ左シフトする(ステップS
40)。このとき、レジスタr3から出力される最上位
ビットは汎用キャリーフラグCとして汎用フラグレジス
タrfに格納される。
【0089】次に、レジスタr2内のデータからレジス
タr4内のデータを減算してその減算結果をレジスタr
2に格納する(ステップS41)。この減算によるキャ
リーは汎用キャリーフラグCとして汎用フラグレジスタ
rfに格納される。そして、レジスタr3内のデータか
らレジスタr5内のデータと汎用キャリーフラグCとを
減算してその減算結果をレジスタr3に格納する(ステ
ップS42)。このとき、レジスタr3内のデータの最
上位ビットは専用ネガティブフラグSNとして専用フラ
グレジスタrfsに格納される。
【0090】次に、条件付加算命令により、専用ネガテ
ィブフラグSNが“1”のときに、レジスタr2内のデ
ータとレジスタr4内のデータとを加算してその加算結
果をレジスタr2に格納する(ステップS43)。この
加算によるキャリーは汎用キャリーフラグCとして汎用
フラグレジスタrfに格納される。そして、条件付加算
命令により、専用ネガティブフラグSNが“1”のと
き、レジスタr3内のデータとレジスタr5内のデータ
と汎用キャリーフラグCとを加算してその加算結果をレ
ジスタr3に格納する(ステップS44)。さらに、条
件付加算命令により、専用ネガティブフラグSNが
“0”のとき、レジスタr0内のデータに“1”を加算
してその加算結果をレジスタr0に格納する(ステップ
S45)。その後、レジスタr6内の繰り返し回数から
“1”だけ減算してその減算結果をレジスタr6に格納
する(ステップS46)。
【0091】次に、汎用フラグレジスタrf内の汎用ネ
ガティブフラグNが“0”かどうかを判別する(ステッ
プS47)。汎用ネガティブフラグNが“0”の場合に
は、ステップS37に戻り、上記の処理を繰り返す。上
記のステップS37〜S46の処理を16回繰り返す
と、汎用ネガティブフラグNが“1”となる。この場合
には処理を終了する。その結果、2個のレジスタr1,
r0に16ビットの商の値が得られ、2個のレジスタr
3,r2に16ビットの余りの値が得られる。
【0092】上記実施例では、専用ネガティブフラグS
Nを設けることにより、連続した条件付加算命令があっ
たときでも最後の減算命令によるネガティブフラグの状
態が保存される。それにより、分岐制御を行うことなく
除算を実行することができる。
【0093】なお、上記実施例においては、被除数の最
上位ビットが“1”でないことを条件として正確な除算
結果が得られる。
【0094】上記実施例の除算方法を図16および図1
7の除算方法と比較すると、プログラムのステップ数が
減少し、かつ分岐制御が不要となる。その結果、除算の
実行時間が短縮される。
【0095】(3)第3の実施例 図6は第3の実施例による8ビット加算回路の構成を示
すブロック図である。この加算回路は、2個の桁上げ先
見回路LA1,LA2および8個の全加算器FA0〜F
A7からなり、2つの8ビットデータX7〜X0,Y7
〜Y0の加算を実行し、8ビットの和データS7〜S0
を出力する。
【0096】桁上げ先見回路LA1は、2つのデータの
最上位ビットを除く7ビットX6〜X0,Y6〜Y0お
よび下位側からのキャリーC-1を受け、第2番目の上位
ビットのキャリーC6を出力する。桁上げ先見回路LA
2は、2つのデータの上位2ビットを除く6ビットX5
〜X0,Y5〜Y0およびキャリーC-1を受け、第3番
目の上位ビットのキャリーC5、第4番目の上位ビット
のキャリーC4および第5番目の上位ビットのキャリー
C3を出力する。
【0097】各全加算器FAiは、一方のデータの1ビ
ットXi、他方のデータの1ビットYiおよび下位側の
キャリーを受け、和データSiおよびキャリーCiを出
力する。ここで、iは0,1,…,7を表す。下位側4
ビットの全加算器FA0,FA1,FA2,FA3はリ
ップルキャリーアダー方式で接続される。すなわち、全
加算器FA0から出力されるキャリーC0が全加算器F
A1に与えられ、全加算器FA1から出力されるキャリ
ーC1が全加算器FA2に与えられ、全加算器FA2か
ら出力されるキャリーC2が全加算器FA3に与えられ
る。
【0098】全加算器FA4,FA5,FA6には、桁
上げ先見回路LA2から出力されるキャリーC3,C
4,C5がそれぞれ与えられる。さらに、全加算器FA
7には、桁上げ先見回路LA1から出力されるキャリー
C6が与えられる。全加算器FA7からは最上位ビット
のキャリーC7が出力される。
【0099】図7に桁上げ先見回路LA1の構成を示
す。桁上げ先見回路LA1は7個の半加算器HA0〜H
A6および1個のキャリー生成回路CG6からなる。
【0100】各半加算器HAiは、一方のデータの1ビ
ットXiおよび他方のデータの1ビットYiを受け、和
信号Piおよび桁上げ信号Giを出力する。ここで、i
は0,1,…,6を表す。キャリー生成回路CG6は、
下位側からのキャリーC-1、和信号P0〜P6および桁
上げ信号G0〜G6を受け、キャリーC6を出力する。
キャリー生成回路CG6は、図19に示されるキャリー
生成回路と同様に、複数のANDゲート、1個のNOR
ゲートおよび1個のインバータにより構成される。
【0101】図8に桁上げ先見回路LA2の構成を示
す。桁上げ先見回路LA2は6個の半加算器HA0〜H
A5および3個のキャリー生成回路CG3〜CG5から
なる。
【0102】各半加算器HAiは、一方のデータの1ビ
ットXiおよび他方のデータの1ビットYiを受け、和
信号Piおよび桁上げ信号Giを出力する。ここで、i
は0,1,…,5を表す。キャリー生成回路CG3,C
G4,CG5は、図19に示すキャリー生成回路と同様
に、複数のANDゲート、1個のNORゲートおよび1
個のインバータを含み、それぞれキャリーC3,C4,
C5を出力する。
【0103】上記実施例では、最上位ビットの全加算器
FA7のみに独立した桁上げ先見回路LA1を接続する
ことにより、最上位ビットの和データS7およびキャリ
ーC7を高速に出力することができる。また、第2番目
ないし第4番目の上位ビットの全加算器FA6,FA
5,FA4に別の桁上げ先見回路LA2を接続すること
により、第2番目ないし第4番目の上位ビットの和デー
タS6,S5,S4を高速に出力することができる。
【0104】キャリーフラグは最上位ビットのキャリー
C7により決定され、ネガティブフラグは最上位ビット
の和データS7により決定され、オーバーフローフラグ
は最上位ビットの和データS7および入力データの最上
位ビットX7,Y7により決定される。上記実施例の加
算回路においては、最上位ビットの和データS7および
キャリーC7が高速に得られるので、ネガティブフラ
グ、オーバーフローフラグおよびキャリーフラグのよう
な状態フラグが高速に生成される。
【0105】また、第2番目ないし第4番目の上位ビッ
トの和データS6,S5,S4も高速に出力されるの
で、全体として和データS7〜S0が高速に得られる。
しかも、下位ビット側の全加算器FA0,FA1,FA
2,FA3には桁上げ先見回路が設けられていないの
で、ハードウエア量も少なくなる。
【0106】(4)第4の実施例 図9は第4の実施例によるゼロフラグ先見回路の構成を
示すブロック図である。図9のゼロフラグ先見回路は、
デクリメンタ回路10、セレクタ回路20、排他的論理
和回路30、セレクタ回路70、ANDゲート80、N
ORゲート81,82,83,84、ANDゲート8
5,86およびORゲート87,88,89を含む。
【0107】図9において、AND回路40、OR回路
50、XOR回路60は算術論理演算ユニットに含まれ
る。図9のゼロフラグ先見回路は、算術論理演算ユニッ
トにおけるゼロフラグを生成するために用いられる。
【0108】デクリメンタ回路10は、8ビットデータ
X7〜X0を受け、そのデータの値を“1”だけデクリ
メントしてその結果をデータx7〜x0として出力す
る。セレクタ回路20は、データX7〜X0およびデク
リメンタ回路10からのデータx7〜x0を受け、それ
らの一方を選択してデータX7′〜X0′として出力す
る。
【0109】ANDゲート85,86およびORゲート
87は選択信号発生回路を構成する。加算命令addが
与えられた場合、キャリー付加算命令adcが与えられ
かつキャリーCiが“0”の場合、およびキャリー付減
算命令sbcが与えられかつキャリーCiが“1”の場
合には、選択信号SSが“1”となる。一方、キャリー
付加算命令adcが与えられかつキャリーCiが“1”
の場合、およびキャリー付減算命令sbcが与えられか
つキャリーCiが“0”の場合には、選択信号SSが
“0”となる。セレクタ回路20は選択信号SSが
“1”のときにデクリメンタ回路10からのデータx7
〜x0を選択し、選択信号SSが“0”のときにデータ
X7〜X0を選択する。
【0110】排他的論理和回路30は、セレクタ回路2
0からのデータX7′〜X0′および8ビットデータY
7〜Y0を受け、それらに排他的論理和演算を行い、そ
の演算結果をデータE7〜E0として出力する。
【0111】ANDゲート80は、排他的論理和回路3
0から出力されるデータE7〜E0に論理積演算を行
い、その演算結果をゼロフラグZAAとして出力する。
NORゲート81は、排他的論理和回路30から出力さ
れるデータE7〜E0に否定論理和演算を行い、その演
算結果をゼロフラグZASとして出力する。ANDゲー
ト80から出力されるゼロフラグZAAは加算時のゼロ
フラグを表し、NORゲート81から出力されるゼロフ
ラグZASは減算時のゼロフラグを表す。
【0112】ここで、図10を参照して加減算時のゼロ
フラグZAA,ZASの生成原理を説明する。図10に
おいて、ケースAおよびケースBは加算を示し、ケース
CおよびケースDは減算を示す。
【0113】図10のケースAに示すように、加算時に
キャリー入力が“0”またはキャリー入力がない場合
に、第1のデータXと第2のデータYとの加算結果が
“11111111”となったものとする。この場合の
加算結果は“0”よりも“1”足りない状態である。し
たがって、第1のデータXから“1”を減算した結果と
第2のデータYとに関して対応する各ビットが互いに反
転していれば、加算結果は“0”となる。
【0114】すなわち、図9において、データX7〜X
0からデクリメンタ回路10により“1”を減算し、セ
レクタ回路20により選択する。そして、選択されたデ
ータx7〜x0とデータY7〜Y0とに関して排他的論
理和回路30により排他的論理和演算を行うことによ
り、各ビットが互いに反転しているかどうかを判別す
る。各ビットが互いに反転している場合には、排他的論
理和回路30から出力されるデータE7〜E0が“11
111111”となるので、ANDゲート80の出力は
“1”となる。
【0115】図10のケースBに示すように、加算時に
キャリー入力が“1”の場合に、第1のデータXと第2
のデータYとの加算結果が“11111111”になっ
たものとする。キャリー入力が“1”であるので、この
場合の加算結果は“0”である。したがって、第1のデ
ータXと第2のデータYとに関して対応する各ビットが
互いに反転していれば、加算結果は“0”となる。
【0116】すなわち、図9において、セレクタ回路2
0によりデータX7〜X0を選択する。そして、選択さ
れたデータX7〜X0とデータY7〜Y0とに関して排
他的論理和回路30により排他的論理和演算を行う。各
ビットが互いに反転しているときには、排他的論理和回
路30から出力されるデータE7〜E0が“11111
111”となるので、ANDゲート80の出力は“1”
となる。
【0117】図10のケースCに示すように、減算時に
キャリー入力が“0”またはキャリー入力がない場合
に、第1のデータXから第2のデータYの減算結果が
“00000000”になったものとする。キャリー入
力が“0”またはないので、この場合の減算結果は
“0”となる。したがって、第1のデータXと第2のデ
ータYとに関して対応する各ビットが互いに一致してい
れば、減算結果は“0”となる。
【0118】すなわち、図9において、セレクタ回路2
0によりデータX7〜X0を選択する。そして、選択さ
れたデータX7〜X0とデータY7〜Y0とに関して排
他的論理和回路30により排他的論理和演算を行う。各
ビットが互いに一致しているときには、排他的論理和回
路30から出力されるデータE7〜E0が“00000
000”となるので、NORゲート81の出力は“1”
となる。
【0119】図10のケースDに示すように、減算時に
キャリー入力が“1”の場合に、第1のデータXから第
2のデータYの減算結果が“00000000”となっ
たものとする。キャリー入力が“1”であるので、この
場合の減算結果は“0”に“1”だけ足りない状態であ
る。したがって、第1のデータXから“1”を減算した
結果と第2のデータYとに関して対応する各ビットが互
いに一致しているとき、あるいは第2のデータYに
“1”を加算した結果と第1のデータXとに関して対応
する各ビットが互いに一致しているときには、減算結果
は“0”となる。
【0120】すなわち、図9において、デクリメンタ回
路10によりデータX7〜X0から“1”減算し、セレ
クタ回路20により選択する。そして、選択されたデー
タx7〜x0とデータY7〜Y0とに関して排他的論理
和回路30により排他的論理和演算を行う。各ビットが
互いに一致しているときには、排他的論理和回路30か
ら出力されるデータE7〜E0が“00000000”
となるので、NORゲート81の出力は“1”となる。
【0121】このようにして、加算時にはANDゲート
80からゼロフラグZAAが得られ、減算時にはNOR
ゲート81からゼロフラグZASが得られる。
【0122】図9においてAND回路40から出力され
るデータはNORゲート82に与えられ、NORゲート
82からゼロフラグZBが出力される。同様に、OR回
路50から出力されるデータはNORゲート83に与え
られ、NORゲート83からゼロフラグZCが出力され
る。また、XOR回路60から出力されるデータはNO
Rゲート84に与えられ、NORゲート84からゼロフ
ラグZDが出力される。
【0123】ORゲート88は、加算命令addおよび
キャリー付加算命令adcを受け、選択信号SAAを出
力する。ORゲート89は、減算命令subおよびキャ
リー付減算命令sbcを受け、選択信号SASを出力す
る。
【0124】セレクタ回路70には選択信号SAA,S
AS,SB,SC,SDが与えられる。セレクタ回路7
0は、加算時に、選択信号SAAに応答してゼロフラグ
ZAAを選択してゼロフラグZとして出力し、減算時
に、選択信号SASに応答してゼロフラグZASを選択
してゼロフラグZとして出力する。また、セレクタ回路
70は、論理積演算時、論理和演算時および排他的論理
和演算時にそれぞれセ選択信号SB,SC,SDに応答
してゼロフラグZB,ZC,ZDを選択し、ゼロフラグ
Zとして出力する。
【0125】図11の(a)にデクリメンタ回路10の
構成を示す。同図に示すように、デクリメンタ回路10
は8個のデクリメンタ11からなる。各デクリメンタ1
1は下位ビット側からのキャリーを受ける入力端子a、
データの1ビットXiを受ける入力端子b、データxi
を出力する出力端子s、およびキャリーを出力する出力
端子cを有する。ここで、iは0,1,…,7を表して
いる。
【0126】図11の(b)に1つのデクリメンタ11
の構成を示す。同図に示すように、デクリメンタ11は
1個のANDゲート12および1個の排他的論理和ゲー
ト13からなる。
【0127】図9においてセレクタ回路20の構成は、
図22に示したセレクタ回路120の構成と同様であ
る。
【0128】図12に排他的論理和回路30の構成を示
す。同図に示すように、排他的論理和回路30は8個の
排他的論理和ゲート31からなる。各排他的論理和ゲー
ト31はデータXi′およびデータYi′を受け、デー
タEiを出力する。ここで、iは0,1,…,7を表
す。
【0129】図13にセレクタ70の構成を示す。同図
に示すように、セレクタ70は6個のNANDゲート7
1〜76からなる。NANDゲート71〜75の一方の
入力端子にはそれぞれ選択信号SAA,SAS,SB,
SC,SDが与えられ、他方の入力端子にはそれぞれゼ
ロフラグZAA,ZAS,ZA,ZB,ZCが与えられ
る。NANDゲート76はNANDゲート71〜75の
出力を受け、ゼロフラグZを出力する。
【0130】図9に示す排他的論理和回路30を図20
に示すインバータ回路110と比較すると、図12およ
び図21に示すように、両者とも1段のゲートにより構
成される。また、図9に示すセレクタ回路20の構成
は、図20に示すセレクタ回路120の構成と同様であ
る。
【0131】そこで、図9に示すデクリメンタ回路10
を図20に示す加算回路130と比較する。図11の
(b)に示すように、デクリメンタ回路10に含まれる
各デクリメンタのキャリー生成部分は1段のANDゲー
ト12により構成される。これに対して、図25に示す
ように、加算回路130に含まれる各全加算器131の
キャリー生成部分は2段のNANDゲート102により
構成される。したがって、デクリメンタ回路10は、加
算回路130よりも高速にデータを出力することができ
る。
【0132】このように、上記実施例のゼロフラグ先見
回路によれば、加減算時のゼロフラグZを高速に出力す
ることができる。
【0133】また、図9に示すセレクタ回路70を図2
0に示すセレクタ回路170と比較する。図13に示す
ように、セレクタ回路70は6個のNANDゲート71
〜76のみにより構成される。これに対して図29およ
び図30に示すように、セレクタ回路170は8個のセ
レクタ171により構成され、各セレクタ171は5個
のNANDゲート172〜176により構成される。こ
のように、上記実施例のゼロフラグ先見回路において
は、従来のゼロフラグ検出回路と比較して、ハードウエ
ア量がかなり少なくなっている。
【0134】
【発明の効果】第1の発明によれば、専用キャリーフラ
グおよび連続する条件付き加算命令を用いることにより
分岐制御を必要とすることなく乗算を実行することが可
能となるので、少ないステップでしかも単純な制御で高
速の乗算が可能になる。
【0135】第2の発明によれば、専用ネガティブフラ
グおよび連続する条件付き加算命令を用いることにより
分岐制御を必要とすることなく除算を実行することが可
能となるので、少ないステップでしかも単純な制御で高
速の除算が可能となる。
【0136】第3の発明によれば、最小限のハードウエ
ア量で最上位ビットの加算結果の出力および桁上げ信号
の出力の遅延時間を短縮することができるので、これら
の出力に基づいて生成される状態フラグを安いコストで
高速に得ることができる。したがって、CPU等の処理
装置のクロックサイクルを短縮することが可能となる。
【0137】第4の発明によれば、下位ビット側にリッ
プルキャリー方式を用い、上位ビット側に桁上げ先見回
路を用いているので、全体として最小限のハードウェア
により安いコストで高速に加算結果および桁上げ信号が
得られる。
【0138】第5の発明によれば、加減算時に高速にゼ
ロ判定を行うことができるので、CPU等の処理装置の
クロックサイクルを短縮することが可能となる。
【0139】第6の発明によれば、算術論理演算ユニッ
トにおいてゼロフラグ生成のためのハードウエア量が低
減され、かつ加減算時のゼロフラグが高速に生成される
ので、全体として少ないハードウエア量でしかも高速に
ゼロ判定を行うことができる。したがって、少ないハー
ドウエア量で高速のCPU等の処理装置が得られる。
【図面の簡単な説明】
【図1】本発明の第1の実施例による乗算方法および乗
算装置を示すブロック図である。
【図2】図1の乗算方法の手順を示すフローチャートで
ある。
【図3】本発明の第2の実施例による除算方法および除
算装置を示すブロック図である。
【図4】図3の乗算方法の手順を示すフローチャートで
ある。
【図5】第1および第2の実施例に用いられるプログラ
ムの命令フォーマットを示す図である。
【図6】本発明の第3の実施例による加算回路の構成を
示すブロック図である。
【図7】図6に示される1つの桁上げ先見回路の構成を
示すブロック図である。
【図8】図6に示される他の1つの桁上げ先見回路の構
成を示すブロック図である。
【図9】本発明の第4の実施例によるゼロフラグ先見回
路の構成を示すブロック図である。
【図10】図9のゼロフラグ先見回路の動作原理を示す
図である。
【図11】(a)図9に示されるデクリメンタ回路の構
成を示すブロック図、(b)デクリメンタ回路に含まれ
る各デクリメンタの構成を示す回路図である。
【図12】図9に示される排他的論理和回路の構成を示
す回路図である。
【図13】図9に示されるセレクタ回路の構成を示す回
路図である。
【図14】従来の乗算方法および乗算装置を示すブロッ
ク図である。
【図15】図14の乗算方法の手順を示すフローチャー
トである。
【図16】従来の除算方法および除算装置を示すブロッ
ク図である。
【図17】図16の除算方法の手順を示すフローチャー
トである。
【図18】従来のリップルキャリーアダーの構成を示す
ブロック図である。
【図19】従来の加算回路に用いられる桁上げ先見回路
の構成を示す回路図である。
【図20】従来の算術論理演算ユニットおよびゼロフラ
グ検出回路の構成を示すブロック図である。
【図21】図20に示されるインバータ回路の構成を示
す回路図である。
【図22】図20に示されるセレクタ回路の構成を示す
ブロック図である。
【図23】図22のセレクタ回路に含まれるセレクタの
構成を示す回路図である。
【図24】図20に示される加算回路の構成を示すブロ
ック図である。
【図25】図24の加算回路に含まれる全加算器の構成
を示す回路図である。
【図26】図20に示されるAND回路の構成を示す回
路図である。
【図27】図20に示されるOR回路の構成を示す回路
図である。
【図28】図20に示されるXOR回路の構成を示す回
路図である。
【図29】図20に示されるセレクタ回路の構成を示す
ブロック図である。
【図30】図29のセレクタ回路に含まれるセレクタの
構成を示す回路図である。
【符号の説明】
r0,r1,r2,r3 シフトレジスタ r4,r5 レジスタ r6 カウント用レジスタ rf 汎用フラグレジスタ rfs 専用フラグレジスタ SN 専用ネガティブフラグ SC 専用キャリーフラグ swf 切替用フラグ LA1,LA2 桁上げ先見回路 FA0〜FA7 全加算器 HA0〜HA6 半加算器 CG3〜CG6 キャリー生成回路 10 デクリメンタ回路 20,70 セレクタ回路 30 排他的論理和回路 40 AND回路 50 OR回路 60 XOR回路 80 ANDゲート 81〜84 NORゲート なお、各図中同一符号は同一または相当部分を示す。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 プログラムに従ってデータのシフトおよ
    び加算を実行することにより乗算を行う乗算方法におい
    て、 データを下位ビット側へシフトする命令の実行時のみに
    変化する専用キャリーフラグを設けるとともに、前記専
    用キャリーフラグの状態を条件とする条件付き加算命令
    に従って加算を実行することを特徴とする乗算方法。
  2. 【請求項2】 プログラムに従ってデータのシフトおよ
    び加減算を実行することにより除算を行う除算方法にお
    いて、 減算命令の実行時のみに変化する専用ネガティブフラグ
    を設けるとともに、前記専用ネガティブフラグの状態を
    条件とする条件付き加算命令に従って加算を実行するこ
    とを特徴とする除算方法。
  3. 【請求項3】 2つのnビットデータを加算する加算回
    路であって、 前記2つのnビットデータの最下位ビットから第2番目
    の上位ビットに対応して設けられ、前記2つのnビット
    データの最下位ビットから第2番目の上位ビットの加算
    結果を示すデータを出力する第1ないし第(n−1)の
    全加算器と、 前記2つのnビットデータの最下位ビットから第2番目
    の上位ビットを受け、前記第2番目の上位ビットに対応
    する桁上げ信号を生成する桁上げ先見回路と、 前記2つのnビットデータの最上位ビットおよび前記桁
    上げ先見回路により生成される前記桁上げ信号を受け、
    最上位ビットに対応する加算結果を示すデータおよび最
    上位ビットに対応する桁上げ信号を出力する第nの全加
    算器とを備えた加算回路。
  4. 【請求項4】 2つのnビットデータを加算する加算回
    路であって、 リップルキャリー方式で接続され、前記2つのnビット
    データの下位側のmビットを受け、前記下位側のmビッ
    トに対応する加算結果を示すデータを出力する第1ない
    し第mの全加算器と、 前記2つのnビットデータを受け、桁上げ信号を生成す
    る桁上げ先見回路と、 前記2つのnビットデータの上位側の(n−m)ビット
    および前記桁上げ先見回路により生成された前記桁上げ
    信号を受け、前記上位側の(n−m)ビットに対応する
    加算結果を示すデータを出力する第(n−m)ないし第
    nの全加算器とを備えた加算回路。
  5. 【請求項5】 第1および第2のデータの加減算結果が
    0であるかどうかを示すゼロフラグを生成するゼロフラ
    グ先見回路であって、 前記第1のデータの値を1だけ減少させまたは前記第2
    のデータの値を1だけ増加させる演算手段と、 桁上げ入力が1の場合の前記第1および第2のデータの
    加算の実行時に、前記第1のデータと前記第2のデータ
    とに関して対応する各ビットが互いに相補であるかどう
    かを判別し、すべてのビットが互いに相補であるかどう
    かに基づいて前記ゼロフラグを生成し、桁上げ入力が0
    の場合または桁上げ入力がない場合の前記第1および第
    2のデータの加算の実行時に、前記演算手段により減少
    された第1のデータと前記第2のデータとに関して対応
    する各ビットが互いに相補であるかどうかを判別し、す
    べてのビットが互いに相補であるかどうかに基づいて前
    記ゼロフラグを生成する第1のゼロフラグ生成手段と、 桁上げ入力が1の場合の前記第1のデータから前記第2
    のデータの減算の実行時に、前記演算手段により減少さ
    れた第1のデータと前記第2のデータとに関してまたは
    前記第1のデータと前記演算手段により増加された第2
    のデータとに関して対応する各ビットが互いに一致して
    いるかどうかを判別し、すべてのビットが互いに一致し
    ているかどうかに基づいて前記ゼロフラグを生成し、桁
    上げ入力が0の場合または桁上げ入力がない場合の前記
    第1のデータから前記第2のデータの減算の実行時に、
    前記第1のデータと前記第2のデータとに関して対応す
    る各ビットが互いに一致しているかどうかを判別し、す
    べてのビットが互いに一致しているかどうかに基づいて
    前記ゼロフラグを生成する第2のゼロフラグ生成手段と
    を備えたゼロフラグ先見回路。
  6. 【請求項6】 第1および第2のデータの加減算を行う
    加減算手段と、 データの所定の演算を行う1または複数の演算手段と、 前記加減算手段による加減算結果が0であるかどうかを
    示すゼロフラグを出力する第1のゼロフラグ先見手段
    と、 前記1または複数の演算手段による演算結果が0である
    ことを示すゼロフラグを出力する1または複数の第2の
    ゼロフラグ先見手段と、 前記第1および第2のゼロフラグ先見手段から出力され
    たゼロフラグのいずれかを選択する選択手段とを備え、 前記第1のゼロフラグ先見手段は、 前記第1のデータの値を1だけ減少させまたは前記第2
    のデータの値を1だけ増加させる演算手段と、 前記第1のデータまたは前記演算手段により減少された
    第1のデータと前記第2のデータまたは前記演算手段に
    より増加された第2のデータとに関して対応する各ビッ
    トを互いに比較する比較手段と、 前記比較手段による比較結果に基づいてゼロフラグを生
    成するゼロフラグ生成手段とを含む、算術論理演算ユニ
    ット。
JP6059997A 1994-03-03 1994-03-03 演算方法および演算装置 Pending JPH07244577A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6059997A JPH07244577A (ja) 1994-03-03 1994-03-03 演算方法および演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6059997A JPH07244577A (ja) 1994-03-03 1994-03-03 演算方法および演算装置

Publications (1)

Publication Number Publication Date
JPH07244577A true JPH07244577A (ja) 1995-09-19

Family

ID=13129324

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6059997A Pending JPH07244577A (ja) 1994-03-03 1994-03-03 演算方法および演算装置

Country Status (1)

Country Link
JP (1) JPH07244577A (ja)

Similar Documents

Publication Publication Date Title
JP3729881B2 (ja) 並列加算および平均演算を行うための回路およびその方法
JP2000259394A (ja) 浮動小数点乗算器
JPH0542011B2 (ja)
US5957996A (en) Digital data comparator and microprocessor
JPH0823811B2 (ja) 3オペランド演算論理機構におけるオーバーフローを決定する方法及び算術上のオーバーフローを検出する機構
US5867413A (en) Fast method of floating-point multiplication and accumulation
JP2511527B2 (ja) 浮動小数点演算器
EP0643352A1 (en) Self-checking complementary adder unit
JPH09222991A (ja) 加算方法および加算器
US6202078B1 (en) Arithmetic circuit using a booth algorithm
JPH07244577A (ja) 演算方法および演算装置
US4914579A (en) Apparatus for branch prediction for computer instructions
US5875123A (en) Carry-select adder with pre-counting of leading zero digits
KR101007259B1 (ko) 패리티 생성 회로, 계수 회로 및 계수 방법
KR100315303B1 (ko) 디지탈 신호 처리기
JP3461706B2 (ja) ディジットシリアル乗算器
JP2608090B2 (ja) 高基数非回復型除算装置
KR100251547B1 (ko) 디지탈신호처리기(Digital Sgnal Processor)
KR100246472B1 (ko) 디지탈신호처리기
JPH0435777B2 (ja)
JP3205020B2 (ja) 演算装置
JP3100868B2 (ja) 浮動小数点数のための算術演算装置
JP3696307B2 (ja) 積和演算装置
JP3656699B2 (ja) 除算器
JPS60108932A (ja) 十進演算処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Effective date: 20040120

Free format text: JAPANESE INTERMEDIATE CODE: A621

A977 Report on retrieval

Effective date: 20051012

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060308

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060327

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060623

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100630

Year of fee payment: 4

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100630

Year of fee payment: 4

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110630

Year of fee payment: 5

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110630

Year of fee payment: 5

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 6

Free format text: PAYMENT UNTIL: 20120630

FPAY Renewal fee payment (prs date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120630

Year of fee payment: 6

FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 7

Free format text: PAYMENT UNTIL: 20130630