Professional Documents
Culture Documents
スクリーンショット 2024-05-22 14.28.40
スクリーンショット 2024-05-22 14.28.40
-2進数の算法ー
-加算と乗算-
講義予定
1)1、2回目: 情報の概念と定義
2)3、4回目: 2進数の基礎
3)5~7回目: 2進数の算法
4)8回目: 達成度評価(中間)
5)9~11回目: コンピュータの基礎
6)12~14回目: 離散代数
7)15回目: 達成度評価(期末)
1
コンピュータの基本構成、基本動作
データ
演算器 データ
アドレス 命令フェッチ
↓
プログラム アドレス
メモリ
命令デコード
カウンタ(PC) ↓
実行
↓
命令 結果格納
命令デコーダ 命令
ストアードプログラム方式:ノイマンアーキテクチャ
2
2進数の算法(1)-加算1
3
Ripple carry adder (1)
Y3 X3 Y2 X2 Y1 X1 Y0 X0 C-1
FA FA FA FA
C3 C2 C1 C0
S3 S2 S1 S0
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)
then Ci=Gi+Pi・Ci-1
where Gi=Xi・ Yi:generator(桁上げ先見信号)
Pi=Xi@Yi :propagator(桁上げ伝播信号)
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)
HA HA HA HA
G3 P3 G2 P2 G1 P1 G0 P0 HA: Half Adder
YX
・・
G P
C3 C2 C1 C0 11
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
6
CSA:Carry select adder(1)
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
0 0 0
C15 C3 C-1
7
2進数の算法(A)-BCD加算
15
例)
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
19
@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
和 Sum 1 1 1 0 0 0 1 0 0 (188)
↑Never carry propagation
188=28-27+26-22
21
+1 +1 --- +1 0
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
111000100 (188)
101000000 (320)
- 010000100 (132)
188=28-27+26-22
10111100
24
12
Signed digit adder(6): Redundancy adder
16 32 48 64
Number of bits
25
26
13
2進数の算法(3)-乗算1
27
正の数の乗算(簡単です)
乗数(X)、被乗数(Y)
X = xn-12n-1 + xn-22n-2 + xn-32n-3 + xn-42n-4 + ・・・+ x121 + x020
・・・・・・・・・
xn-1yn-1 xn-2yn-1 xn-3yn-1 x0yn-1
乗算配列
・AND回路 :部分積生成
・総和回路:加算アレイ 28
14
2の補数での乗算1(原理)
乗数(X)、被乗数(Y)
X = -xn-12n-1 + (xn-22n-2 + xn-32n-3 + xn-42n-4 + ・・・+ x121 + x020)
P = XY
= xn-1yn-122n-2 負の区分
29
2の補数での乗算2(原理の続き1)
2の補数乗算器(5bitの例)
( x4 ) x3 x2 x1 x0
X) ( y4 ) y3 y2 y1 y0
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 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
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)
1次Boothデコード表
利点 0 0 0
補正処理が不要 1 0 - X
0 1 + X
1 1 0
38
19
1次Boothアルゴリズム2(原理2)
級数の漸化式の応用
-yn
+yn-1 -yn-1
+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)
Where y-1 = 0
When X= -6, Y= -3
Sign bit extension
符号ビット拡張 -3
-6
1 0 1 0 y-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)
When X= -6, Y= +3
Sign bit extension
符号ビット拡張 +3
-6
y-1=0
1 0 1 0
-18 45
When X= -3, Y= -6
Sign bit extension
符号ビット拡張
y-1=0
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
46
23
2nd order Booth`s algorithm 3 (Training 1)
When X= +3, Y= -6
Sign bit extension
符号ビット拡張
y-1=0
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
47
24