Download as pdf or txt
Download as pdf or txt
You are on page 1of 24

情報科学Ⅰ-5~7

-2進数の算法ー
-加算と乗算-

講義予定
1)1、2回目: 情報の概念と定義
2)3、4回目: 2進数の基礎
3)5~7回目: 2進数の算法
4)8回目: 達成度評価(中間)
5)9~11回目: コンピュータの基礎
6)12~14回目: 離散代数
7)15回目: 達成度評価(期末)

1
コンピュータの基本構成、基本動作
データ
演算器 データ
アドレス 命令フェッチ

プログラム アドレス
メモリ
命令デコード
カウンタ(PC) ↓
実行

命令 結果格納
命令デコーダ 命令

ストアードプログラム方式:ノイマンアーキテクチャ

Classification of arithmetic operations

1.Fixed-point operations (Integer)


(1) 4 kinds of basic arithmetic operations
・Addition (+)
・Subtraction (-)
・Multiplication (*)
・Division (/)

(2) Complicated operations


・Modulo, Shift, Bit (剰余演算,シフト演算,ビット演算)
・Elementary functions, Complex operations (初等関数,複合演算)

2.Floating-point operations (Real number)

(1) 4 kinds of basic arithmetic operations


(2) Elementary functions, Complex operations (初等関数,複合演算)

2
2進数の算法(1)-加算1

Implementation algorithms of high-speed adders

1.Ripple carry adder(順次桁上げ加算器)


・Small counts of Transistors (回路規模小),Low-speed(低速)
・Regularized structure(最もシンプルな構成)
2.High-speed adder(高速加算器)
・Large counts of Transistors(回路規模大),High-speed(高速)
(1) High speed carry propagations (桁上げを早くする)
①CLA: Carry look-ahead adder (桁上げ先見加算器)
②CSA: Carry select adder (桁上げ選択加算器)
(2) Never carry propagations (桁上げをなくす)
③SDA: Radix-2 signed-digit adder (冗長2進加算器)
④RNA: Residue number adder (剰余数加算器)

3
Ripple carry adder (1)

4bit-ripple carry adder (順次桁上げ加算器)

Y3 X3 Y2 X2 Y1 X1 Y0 X0 C-1

FA FA FA FA

C3 C2 C1 C0
S3 S2 S1 S0

FA: Full Adder


7

Ripple carry adder (2)


The Logic table and the Logic function of the FA
(An 1-bit part of the ripple carry adder)

Input Output
X Y Ci-1 S Ci
0 0 0 0 0
S =Ci-1@(X@Y)
0 1 0 1 0
where @ means EXOR
1 0 0 1 0 Ci =X・Y+Y・Ci-1+X・Ci-1
1 1 0 0 1
0 0 1 1 0
0 1 1 0 1 Logic function
1 0 1 0 1
1 1 1 1 1

Logic table 8

4
CLA:Carry look-ahead adder(1)

Principle of carry look-ahead adder (桁上げ先見の原理)

(1) Both Xi and Yi equal to 1


→ Ci generates regardless Ci-1 (define Gi)
(2) Either Xi or Yi equals to 1
→ Ci がdepends on Ci-1 (define Pi)

then Ci=Gi+Pi・Ci-1
where Gi=Xi・ Yi:generator(桁上げ先見信号)
Pi=Xi@Yi :propagator(桁上げ伝播信号)

CLA:Carry look-ahead adder(2)

Theory of carry generation (任意桁の桁上げ信号)

C0=G0+P0・C-1
C1=G1+P1・C0=G1+ G0・P1+P0・P1・C-1
C2=G2+P2・C1=G2+ G1・P2+G0・P1・P2+P0・P1・P2・C-1
C3=G3+P3・C2=G3+ G2・P3+G1・P2・P3+ G0・P1・P2・P3
… + P0・P1・P2・P3・C-1
・・・・・・・・
Cn=Gn+Pn・Cn-1=Gn+ Gn-1・Pn+Gn-2・Pn-1・Pn+ ・ ・ ・+ G0・P1・P2 ・ ・ ・Pn
… +P0・P1・P2・ ・ ・C-1

10

5
CLA:Carry look-ahead adder(3)

An example of the 4-bit CLA Circuits (for carry signals only )


X 3 Y3 X 2 Y2 X 1 Y1 X0 Y0 C-1

HA HA HA HA
G3 P3 G2 P2 G1 P1 G0 P0 HA: Half Adder

YX

・・

G P

C3 C2 C1 C0 11

CLA:Carry look-ahead adder(4)

A representative of 16-bit CLA circuits

C-1
X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X1 X0
Y15 Y14 Y13 Y12 Y11 Y10 Y9 Y8 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0

C15 C11 C7 C3
C15 generation C11 generation C7 generation C3 generation

Sum generation Sum generation Sum generation Sum generation

S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0


12

6
CSA:Carry select adder(1)

A 4-bit CSA circuit


X3 Y2 X3 Y2 X3 Y2 X3 Y2
0

C3
A 4-bit adder when the input carry equal to 0

C3
A 4-bit adder when the input carry equal to 1

C-1

C3 S3 S3 S3 S3
13

CSA:Carry select adder(2)

A 16-bit CSA Adder

X15,14,13,12Y15,14,13,12 X7,6,5,4 Y7,8,5,4 X3,2,1,0 Y3,2,1,0

0 0 0

4-bit adder 4-bit adder 4-bit adder


1 1 1

4-bit adder 4-bit adder 4-bit adder

C15 C3 C-1

S15 S14 S13 S12 S7 S6 S5 S0 S3 S2 S1 S0 14

7
2進数の算法(A)-BCD加算

15

Binary Code Decimal(2進化10進)

例)
10進数 → 2進数 → 16進数
39 0010 0111 0x27

BCDは、10進の各桁を4桁2進で表す
39 0011 1001

16

8
4桁2進加算器でBCD加算器を構成する
(1)加算結果SがS≦9の場合 (2)10 ≦ S≦15の場合
例) 2 0010 例) 6 0010
+ 7 0111 + 7 0111
9 1001 13 1101
⇒そのまま。補正不要 ⇒1101 を 0011 に補正
⇒次桁にキャリー送出
(3)S≧16の場合 @BCD加算器に必要な機能
例) 8 1000 ⇒加算結果による補正、桁上げ処理
+ 9 1001 ⇒補正処理の内容:(10)10を減算
17 1 0001 ⇒ (10)10の補数(6)10を加算
⇒0001 を 0111 に補正 例) 13 1101
⇒次桁にキャリー送出 + 6 0110
17
1 0011

2進数の算法(2)-加算2

18

9
Signed digit adder(1): Redundancy adder

Principle of signed digit (1) (冗長2進表現(1))

(1) Common binary:1digit is expressed by 0 and +1


(2) Signed digit binary:1digit is expressed by 0 and +1 and -1
How to express three kinds of states !!
■3-states of logic circuits
⇒ A 3-states transistor circuits is necessary
■Common 2-state of logic circuits
⇒ 2-bit of circuits are necessary for one digit
→Large counts of transistors

→ High-speed Adder without carry propagation

19

Signed digit adder(2): Redundancy adder

Principle of signed digit (2) (冗長2進表現(2))

(1)For example, ”5” is expressed by signed digit as follows:

0101…22+20 0111…22+21-20 1101…23-22+20


1111…23-22+21-20 1011…23-21-20 (1 means -1)

@Redundant Expression
i-th 1… 01: 2i= 0+2i i-th 1… 01: -2i= 0-2i
11: 2i=2i+1-2i 11: -2i=-2i+1+2i

20

10
Signed digit adder(3): Redundancy adder

Principle of signed digit (3) (冗長2進表現(3))

被加数 Augend 10101001 (87)


加数 Addend 11100111 (101)

中間和 Interim sum 01001110


中間桁上 Interim carry 11000101

和 Sum 1 1 1 0 0 0 1 0 0 (188)
↑Never carry propagation

188=28-27+26-22

21

Logic table of Interim sum and carry

Addend Augend State of lower digit Interim carry Interim sum


加数 被加数 (i-1)桁の状態 中間桁上 中間和

+1 +1 --- +1 0

+1 0 Both are not negative +1 -1

0 +1 Either is negative 0 +1

0 0

-1 +1 --- 0 0

+1 -1

0 -1 両方とも非負 0 -1

-1 0 少なくとも一方負 -1 +1

-1 -1 --- -1 0 22

11
Signed digit adder(4): Redundancy adder

SDA system restriction

Every digital system is built up by common binary system


Carry propagation
can not be avoided

Common binary→ SDA→Common


SDA translation SDA system binary translation

Common binary system


23

Signed digit adder(5): Redundancy adder

Principle of signed digit (5) (冗長2進表現(5))

Signed digit binary to common digit binary

111000100 (188)

101000000 (320)
- 010000100 (132)
188=28-27+26-22
10111100

24

12
Signed digit adder(6): Redundancy adder

Characteristics of 0.13μm Process、1988


redundancy system Addition
time(ns)
(ns)
(1) Possible implementation CLA
・Can implement Adder, 1.0
Subtructer, and Multiplier
・Can not implement Divider
0.5
(2) Calculation speed is faster SDA
than CLA in the case of
longer than 8-bits digit
(3) Hardware scale is 1.5 times
larger than CLA

16 32 48 64
Number of bits

25

Classification of arithmetic operations

1.Fixed-point operations (Integer)


(1) 4 kinds of basic arithmetic operations
・Addition (+)
・Subtraction (-)
・Multiplication (*)
・Division (/)

(2) Complicated operations


・Modulo, Shift, Bit (剰余演算,シフト演算,ビット演算)
・Elementary functions, Complex operations (初等関数,複合演算)

2.Floating-point operations (Real number)

(1) 4 kinds of basic arithmetic operations


(2) Elementary functions, Complex operations (初等関数,複合演算)

26

13
2進数の算法(3)-乗算1

27

正の数の乗算(簡単です)

乗数(X)、被乗数(Y)
X = xn-12n-1 + xn-22n-2 + xn-32n-3 + xn-42n-4 + ・・・+ x121 + x020

Y = yn-12n-1 + yn-22n-2 + yn-32n-3 + yn-42n-4 + ・・・+ y121 + y020

xn-1 xn-2 xn-3 ・・・ x1 x0


P = XY (Product)
X) yn-1 yn-2 yn-3 ・・・ y1 y0

xn-1y0 xn-2y0 xn-3y0 ・・・ x1yo x0yo


xn-1y1 xn-2y1 xn-3y1 ・・・ x0y1

・・・・・・・・・
xn-1yn-1 xn-2yn-1 xn-3yn-1 x0yn-1

p2n-1 p2n-2 p2n-3 p2n-4 p1 p0

乗算配列
・AND回路 :部分積生成
・総和回路:加算アレイ 28

14
2の補数での乗算1(原理)

乗数(X)、被乗数(Y)
X = -xn-12n-1 + (xn-22n-2 + xn-32n-3 + xn-42n-4 + ・・・+ x121 + x020)

Y = -yn-12n-1 + (yn-22n-2 + yn-32n-3 + yn-42n-4 + ・・・+ y121 + y020)

P = XY
= xn-1yn-122n-2 負の区分

- xn-12n-1(yn-22n-2 + yn-32n-3 + yn-42n-4 + ・・・+ y121 + y020)

- yn-12n-1(xn-22n-2 + xn-32n-3 + xn-42n-4 + ・・・+ x121 + x020)

+ (xn-22n-2 + xn-32n-3 + ・・・ + x020)(yn-22n-2 + yn-32n-3 + ・・・ + y020)

29

2の補数での乗算2(原理の続き1)

2の補数乗算器(5bitの例)

( x4 ) x3 x2 x1 x0
X) ( y4 ) y3 y2 y1 y0

x 3y 0 x2y0 x1yo x0yo


x 3y 1 x2y1 x 1y 1 x0y1
x 3y 2 x2y2 x1y2 x0y2
x4y4 0 x 3y 3 x2y3 x 1y 3 x0y3

- (x4y3 x 4y 2 x4y1 x4y0 )


- (x3y4 x 2y 4 x 1y 4 x0y4 )

p9 p8 p7 p6 p5 p4 p3 p2 p1 p0

負の区分なので、
2の補数を取る。

30

15
2の補数での乗算3(原理の続き2)

2の補数乗算器(5bitの例)
( x4 ) x3 x2 x1 x0
X) ( y4 ) y3 y2 y1 y0

0 0 0 0 0 0 x3y0 x2y0 x1yo x 0y o


0 0 0 0 0 x3y1 x2y1 x1y1 x0y1 0
0 0 0 0 x3y2 x2y2 x1y2 x0y2 0 0
正の区分
0 0 0 x3y3 x2y3 x1y3 x 0y 3 0 0 0
0 x4y4 0 0 0 0 0 0 0 0

0 0 x4y3 x 4y 2 x4y1 x 4y 0 0 0 0 0
負の区分
1
0 0 x3y4 x2y4 x1y4 x0y4 0 0 0 0
1

p9 p8 p7 p6 p5 p4 p3 p2 p1 p0

31

2の補数での乗算4(原理の続き3)

2の補数乗算器(5bitの例)
( x4 ) x3 x2 x1 x0
X) ( y4 ) y3 y2 y1 y0

0 0 0 0 0 0 x3y0 x2y0 x1yo x 0y o


0 0 0 0 0 x3y1 x2y1 x1y1 x0y1
0 0 0 0 x3y2 x2y2 x1y2 x0y2
正の区分
0 0 0 x3y3 x2y3 x1y3 x 0y 3
0 x4y4

1 1 x4y3 x 4y 2 x4y1 x 4y 0
負の区分
1
1 1 x3y4 x2y4 x1y4 x0y4
1

p9 p8 p7 p6 p5 p4 p3 p2 p1 p0

32

16
2の補数での乗算5(例題1)

2の補数乗算器(4bitの実例)

X = -6, Y= -3 のとき
1 0 1 0 (-6)
X) 1 1 0 1 (-3)

0 1 0 ( 2)
0 0 0 ( 0)
正の区分 0 1 0 ( 8)
1 (64)

- - -
1 1 10 1 (-40)
負の区分 1
- - -
1 1 0 1 0 (-16)
1

P 0 0 0 1 0 0 1 0 (18)
33

2の補数での乗算5(例題1)

2の補数乗算器(4bitの実例)

X = -6, Y= -3 のとき
1 0 1 0 (-6)
X) 1 1 0 1 (-3)

0 1 0 ( 2)
0 0 0 ( 0)
正の区分 0 1 0 ( 8)
1 (64)

1 1 0 1 1 (-40)
負の区分
1 1 1 1 0 (-16)

P 0 0 0 1 0 0 1 0 (18)

34

17
2の補数での乗算6(例題2)

2の補数乗算器(4bitの実例)

X = -6, Y= +3 のとき
1 0 1 0 (-6)
X) 0 0 1 1 (+3)

0 1 0 ( 2)
0 1 0 ( 4)
正の区分 0 0 0 ( 0)
0 ( 0)

- - -
1 1 0 1 1 (-24)
負の区分 1
0 0 0 0 0 ( 0)

P 1 1 1 0 1 1 1 0 (-18)
35

2の補数での乗算6(例題2)

2の補数乗算器(4bitの実例)

X = -6, Y= +3 のとき
1 0 1 0 (-6)
X) 0 0 1 1 (+3)

0 1 0 ( 2)
0 1 0 ( 4)
正の区分 0 0 0 ( 0)
0 ( 0)

1 1 1 0 1 (-24)
負の区分
0 0 0 0 0 ( 0)

P 1 1 1 0 1 1 1 0 (-18)

36

18
2進数の算法(4)-乗算2

37

1次Boothアルゴリズム1(原理)

乗数(X)、被乗数(Y)

X・Y = X・(-yn2n + yn-12n-1 + yn-22n-2 + yn-32n-3 + yn-42n-4 + ・・・+ y121 + y020)

= X・{(-yn + yn-1)2n + (-yn-1 + yn-2)2n-1 + (-yn-2 + yn-3)2n-2 + ・・・


+ (-y0 + y-1 )20}
ただし y-1 = 0

1次Boothデコード表

yi yi-1 部分積 (PPi)

利点 0 0 0
補正処理が不要 1 0 - X
0 1 + X
1 1 0

38

19
1次Boothアルゴリズム2(原理2)

級数の漸化式の応用

2n 2n-1 2n-2 2n-3 ・・・ 21 20 2-1


-yn yn-1 yn-2 yn-3 ・・・ y1 y0 y-1=0

-yn

+yn-1 -yn-1

+yn-2 -yn-2 -y1

+yn-3 -yn-3 +y1 -y1


+yn-3 +y0 -y0

+y-1
39

1次Boothアルゴリズム3(原理3)

1次Booth乗算器(4bit)
乗数(X)、被乗数(Y)
Booth-Decoder

yi yi-1 PPi x3 x2 x1 x0
y-1=0
0 0 0
1 0 - X PP0
0 1 + X
1 1 0
y0

PP1
1次Boothデコード表
y1
PP2
y2
PP3
y3

p7 p6 p5 p4 p3 p2 p1 p0

40

20
1次Boothアルゴリズム4(例題1)

1次Booth乗算器(4bitの実例)

X = -6, Y= -3 のとき
-6
符号ビット拡張 -3
1 0 1 0
yi yi-1 PPi y-1=0
0 0 0 0 0 0 0 1 1 0
1 0 - X
1
0 1 + X 1 1 1 0 1 0
1 1 0 0
1次Boothデコード表 0 0 1 1 0
1
0 0 0 0
1

0 0 1 0 0 1 0

18 41

1次Boothアルゴリズム5(例題2)

1次Booth乗算器(4bitの実例2)

X = -6, Y= +3 のとき
-6
+3
1 0 1 0
yi yi-1 PPi y-1=0

0 0 0
0 0 0 0 1 1 0
1
1 0 - X
0 1 + X 0 0 0 0 0 0
1 1 0 1
1次Boothデコード表 1 1 0 1 0
0
0 0 0 0
0

1 1 0 1 1 1 0

-18 42

21
2nd order Booth`s algorithm 1 (Theory)

Multiplicand(X), Multiplier(Y)
X・Y = X・(-yn2n + yn-12n-1 + yn-22n-2 + yn-32n-3 + yn-42n-4 + ・・・+ y121 + y020)

= X・{(-2yn + yn-1 + yn-2)2n-1+ (-2yn-2 + yn-3 + yn-4)2n-3


+ (-2yn-4 + yn-5 + yn-6 )2n-5 + ・・・+ (-2y1 + y0 + y-1 )20}

Where y-1 = 0

2nd order Booth decode table


yi+1 yi yi-1 Partial product
(PPi)
Merit :
0 0 0 0
(1) Correction is not required
0 0 1 + X
(2) High speed : Number of PP is cut in half 0 1 0 + X
0 1 1 + 2X
1 0 0 - 2X
利点 1 0 1 - X
補正処理が不要 1 1 0 - X
高速(部分積が1/2個となる) 1 1 1 0
43

2nd order Booth`s algorithm 3 (Training 1)

2nd order booth`s multiplier(4bit)

When X= -6, Y= -3
Sign bit extension
符号ビット拡張 -3
-6

1 0 1 0 y-1=0

yi+1 yi yi-1 PPi 1


1 1 1 1 0 1 0
0 0 0 0
0 0 1 + X
0 1 0 + X 0
0 1 1 + 2X
1 0 0 - 2X
1 0 1 - X
1 1 0 - X 0 0 1 1 0 1
1 1 1 0

1
2nd order Booth decode table
0 0 1 0 0 1 0

18 44

22
2nd order Booth`s algorithm 3 (Training 2)

2nd order Booth`s multiplier(4bit)

When X= -6, Y= +3
Sign bit extension
符号ビット拡張 +3
-6
y-1=0
1 0 1 0

yi+1 yi yi-1 PPi 1


0 0 0 0 1 1 0
0 0 0 0
0 0 1 + X
0 1 0 + X
1
0 1 1 + 2X
1 0 0 - 2X
1 0 1 - X 0
1 1 0 - X 1 1 0 1 0
1 1 1 0
0
2nd order Booth decode table
1 1 0 1 1 1 0

-18 45

2nd order Booth`s algorithm 3 (Training 1)

2nd order booth`s multiplier(4bit)

When X= -3, Y= -6
Sign bit extension
符号ビット拡張

y-1=0

yi+1 yi yi-1 PPi

0 0 0 0
0 0 1 + X
0 1 0 + X
0 1 1 + 2X
1 0 0 - 2X
1 0 1 - X
1 1 0 - X
1 1 1 0

2nd order Booth decode table

46

23
2nd order Booth`s algorithm 3 (Training 1)

2nd order booth`s multiplier(4bit)

When X= +3, Y= -6
Sign bit extension
符号ビット拡張

y-1=0

yi+1 yi yi-1 PPi

0 0 0 0
0 0 1 + X
0 1 0 + X
0 1 1 + 2X
1 0 0 - 2X
1 0 1 - X
1 1 0 - X
1 1 1 0

2nd order Booth decode table

47

24

You might also like