Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
計算機構成特論 Part 1加減算器・その 1
荒木 徹
電子情報・数理教育プログラム
2016年度 前期
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 1 / 62
1 加算器の基本 - 1ビットの加算
2 リプルキャリーアダー
3 キャリの伝搬を高速にする
4 キャリ・ルックアヘッド
5 並列プレフィックス型アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 2 / 62
1 加算器の基本 - 1ビットの加算
2 リプルキャリーアダー
3 キャリの伝搬を高速にする
4 キャリ・ルックアヘッド
5 並列プレフィックス型アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 3 / 62
ハーフ・アダー
1ビットの 2数の加算
z = x + y , x , y ∈ {0, 1} ⇒ z は 2ビット:和(s),キャリー(c)
x y c s
0 0 0 00 1 0 11 0 0 11 1 1 0
和とキャリー
和 s = x ⊕ y = xy + xy
キャリー c = xy
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 4 / 62
Half Adder
s = x ⊕ y , c = xy .
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 5 / 62
フル・アダー
1ビットの 3数の加算
z = x + y + ci , x , y , ci ∈ {0, 1} ⇒ z は 2ビット:和(s),キャリー(c)
x y ci s c
0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1
和とキャリー
和 s = x ⊕ y ⊕ ci , キャリー c = xy + xci + yci
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 6 / 62
Full Adder
s = x ⊕ y ⊕ ci , c = xy + xci + yci
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 7 / 62
様々なフルアダーの実現
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 8 / 62
多ビットの加算
基本は筆算
1 2 3 4+) 5 6 7 8
0 6 9 1 2
2数の加算でのポイント
1 下位の桁から,一桁ずつ限定して加算を行う.
その桁での和とキャリを確定するという計算を
上位の桁へ向かって順次シフトしながら繰り返す
2 キャリはいつも 1以下
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 9 / 62
直列加算器
「同じ処理の繰り返し」を回路にすると順序回路になる
直列加算器(Bit-serial adder)
シフトレジスタ,全加算器,D-FFを使って,1ビットずつ加算する.次の桁へのキャリーを D-FFに保存する.
処理時間
1クロックで一桁加算 =⇒ nビットをO(n)時間で加算
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 10 / 62
1 加算器の基本 - 1ビットの加算
2 リプルキャリーアダー
3 キャリの伝搬を高速にする
4 キャリ・ルックアヘッド
5 並列プレフィックス型アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 11 / 62
リプルキャリーアダー(順次桁上げ加算器)
Ripple Carry Adder
全加算器を n個直列に接続した加算器
長所と短所
回路規模が小さくすむ
同じ形式の繰り返しなので,ハードウェア化が容易
キャリーの伝搬時間がビット数に比例(O(n))
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 12 / 62
キャリ伝搬パス
キャリ伝搬パス
キャリを順にすべてのフル・アダーに通して上位に伝えていく
パス上のゲート数(ビット数に比例)だけ遅延が発生する
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 13 / 62
1 加算器の基本 - 1ビットの加算
2 リプルキャリーアダー
3 キャリの伝搬を高速にする
4 キャリ・ルックアヘッド
5 並列プレフィックス型アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 14 / 62
フル・アダーを見直す
sと c
s = x ⊕ y ⊕ cin c = xy + xcin + ycin
x と y は先に確定している
下位からのキャリ cinがくるのを待ってから,和とキャリを求める
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 15 / 62
フル・アダーを見直す(2)
式の変形
x と y が確定しているのだから,計算できるものは先にしておく
その結果と下位からのキャリの演算を行うようにする
s = x ⊕ y ⊕ cin
= (x ⊕ y)⊕ cin.
c = xy + xcin + ycin
= xy + (x + y) · cin= xy + (x ⊕ y) · cin 変形したフル・アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 16 / 62
フル・アダーを見直す(3)
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 17 / 62
フル・アダーを見直す(3)
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 17 / 62
キャリ伝搬のしくみ
Generation gi = xi · yiPropagation pi = xi ⊕ yi
ジェネレーションとプロパゲーションの意味
gi = 1 ⇐⇒ 第 i 桁でキャリが発生する
pi = 1 ⇐⇒ 第 i 桁はキャリを伝搬する
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 18 / 62
ジェネレーションとプロパゲーション
ジェネレーション(Generation):キャリの生成
gi = xi · yi
プロパゲーション(Propagation):キャリの伝搬
pi = xi ⊕ yi
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 19 / 62
キャリ伝搬のしくみ
第 i 桁でのジェネレーションとプロパゲーション
gi = xi · yi , pi = xi ⊕ yi
キャリ再帰式
第 i 桁からのキャリを ci+1とすると
ci+1 = gi + pici .
2進数の加算を行うときに,頭で実行している計算はこの式
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 20 / 62
フル・アダーを見直す(4)
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 21 / 62
リプルキャリーアダーの構造
g と pとキャリー再帰式
1段目で,各桁の generationと propagationを計算
その後,キャリー再帰式を使って,キャリーを計算
最後の段で,propagationとキャリーから和を計算
gi = xiyi , pi = xi ⊕ yi
ci+1 = gi + pici .
si = pi ⊕ ci .
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 22 / 62
1 加算器の基本 - 1ビットの加算
2 リプルキャリーアダー
3 キャリの伝搬を高速にする
4 キャリ・ルックアヘッド
5 並列プレフィックス型アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 23 / 62
キャリ・ルックアヘッド・アダー
ジェネレーション gi = xi · yiプロパゲーション pi = xi ⊕ yi
キャリ再帰式 ci+1 = gi + pici
Carry Lookahead Adder
各桁のキャリを,下位のジェネレーションとプロパゲーションを使って,
直接計算する
キャリ伝搬パスを 2段 AND-OR回路にしてしまう
計算時間は定数O(1)
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 24 / 62
キャリ伝搬パスの式変形
第 i桁へのキャリ ci
c1 = g0 + p0c0
c2 = g1 + p1c1
= g1 + p1g0 + p1p0c0
c3 = g2 + p2c2
= g2 + p2g1 + p2p1g0 + p2p1p0c0
c4 = g3 + p3c3
= g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0c0
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 25 / 62
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 26 / 62
キャリ・ルックアヘッドの特徴
ゲート段数はビット数によらず定数
ゲート数がとても多い ⇒ O(n2)
ビット数にしたがってファンイン・ファンアウトが増加
ファンイン・ファンアウト
ファンインが高いゲート(ANDやOR)は遅延が大きい
ファンアウトが高いと配線容量による遅延が発生
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 27 / 62
キャリ・ルックアヘッド・アダー
とにかく必要な情報を並列に求める
ゲート数の大幅な増加(O(n) → O(n2))ファンイン・ファンアウトの増加
現実的には数ビット程度でしか使えない
冗長な項が多すぎる
同じ計算をあちこちで行っている
多段ルックアヘッド型加算器
ルックアヘッド型加算器は,大きなビット数は扱えない
ルックアヘッド型加算器を 2段以上重ねると,より大きなビット数は扱える
リプルキャリー型よりも(かなり)高速になる
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 28 / 62
16ビット加算器を作る
4ビット加算器から 16ビット加算器へ
1 キャリ・ルックアヘッドで各桁のキャリを g と pから計算できる
2 ビット数が大きくなるとコスト大
3 4ビットのキャリ・ルックアヘッドアダーを組み合わせて,高速な16ビット加算器を構成することを考える
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 29 / 62
4-bit Lookahead Carry Generator
4-bitブロックからの gp情報
最下位へのキャリ入力 c0から独立に計算する.
g[i+3,i ] = gi+3 + pi+3gi+2 + pi+3pi+2gi+1 + pi+3pi+2pi+1gi
p[i+3,i ] = pi+3pi+2pi+1pi
各桁からのキャリ情報
pg 入力とキャリ入力 c0からルックアヘッド型で計算する.
ci+1 = gi + pici
ci+2 = gi+1 + pi+1gi + pi+1pici
ci+3 = gi+2 + pi+2gi+1 + pi+2pi+1gi + pi+2pi+1pici
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 30 / 62
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 31 / 62
ブロックの情報の計算
ブロックの gp情報
g [j , i ] = 1:第 i ビットから第 j までのブロックの最上位ビットからキャリーが発生する
p[j , i ] = 1:第 i ビットへのキャリーを,第 j ビットまで伝える
ブロックの gp情報の計算
k を i ≤ k ≤ j となる整数とすると,
g [j , i ] = g [j , k + 1] + p[j , k]g [k, i ],
p[j , i ] = p[j , k + 1]p[k , i ]
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 32 / 62
16 bits Tow-level Carry-Lookahead Adder
4-bit lookahead carry generatorを 2段にした 16-bit carry-lookahead adder
Sumの計算
和が計算されるまでの段数は?
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 33 / 62
Two-level Carry-Lookahead Adder
遅延について
1 入力 xi , yi から gi , pi を計算(1段)
2 1段目の lookahead carry generatorで g , pを計算(2段)
3 2段目の lookahead carry generatorから c4, c8, c12を計算(2段)
4 各 4-bitブロックの内部キャリを計算(2段)
5 最後の和を計算(1段)
1 gi = xiyi , pi = xi ⊕ yi2 g[i+3,i ] = gi+3 + pi+3gi+2 + pi+3pi+2gi+1 + pi+3pi+2pi+1gi ,
p[i+3,i ] = pi+3pi+2pi+1pi3 c4 = g[3,0] + p[3,0]c0, . . .4 c5, c6, c7などの計算5 si = pi ⊕ ci
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 34 / 62
Two-level Carry-Lookahead Adder
合計 8段分のゲート遅延時間が必要
nビットの場合
およそ 4 log4 n段分のゲート遅延時間で和が計算できる
64ビットの場合,3段のキャリ・ルックアヘッド・アダーで 12段分の遅延時間
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 35 / 62
1 加算器の基本 - 1ビットの加算
2 リプルキャリーアダー
3 キャリの伝搬を高速にする
4 キャリ・ルックアヘッド
5 並列プレフィックス型アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 36 / 62
ルックアヘッド型の問題点を改善するために…
短所を改善する
1 冗長な計算をなるべく減らし
2 ゲートのファンイン・ファンアウトを増加させずに
3 全体の段数を減らす
並列プレフィックス型アダー
リプル・キャリ・アダー(遅延時間が大)
キャリ・ルックアヘッド(回路規模(ゲート数など)が大)
それぞれの持つ構造をあわせ持った,両者の欠点を補うような構造
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 37 / 62
4ビットの場合
Exercise
正しく和が計算できることを確かめてみよう
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 38 / 62
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 39 / 62
リプル・キャリ・アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 40 / 62
ネットワークのイメージ図~リプル・キャリ・アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 41 / 62
キャリ・ルックアヘッド・アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 42 / 62
ネットワークのイメージ図~キャリ・ルックアヘッド
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 43 / 62
並列プレフィックス型アダー
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 44 / 62
ネットワークのイメージ図~並列プレフィックス型
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 45 / 62
もう一度復習
和とキャリの計算
第 i 桁からのキャリ:ci+1 = gi + pici
第 i 桁の和:si = pi ⊕ ci
ci = g[i ,0]であり,pi , gi は各桁で独立に計算できる
和を計算するとは
1 Given: (g0, p0), (g1, p1), . . . , (gn−1, pn−1)
2 Find: (g[0,0], p[0,0]), . . . , (g[k,0], p[k,0]), . . . , (g[n−1,0], p[n−1,0])
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 46 / 62
(g , p)の計算
第 i + 1桁と第 i 桁の 2ビットから成るブロックの generator g[i+1,i ] と
propagation p[i+1,i ]を考える
(gi+1, pi+1), (gi , pi )
g[i+1,i ] = gi+1 + pi+1gi
p[i+1,i ] = pi+1 · pi
並列プレフィックス演算
(g[i+1,i ], p[i+1,i ]) = (gi+1, pi+1) ◦ (gi , pi )
ここで
g[i+1,i ] = gi+1 + pi+1gi
p[i+1,i ] = pi+1 · pi
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 47 / 62
並列プレフィックス演算
並列プレフィックス演算
(g ′ + p′g , p′p) = (g ′, p′) ◦ (g , p)
結合律が成り立つ{(g ′′, p′′) ◦ (g ′, p′)
}◦ (g , p) = (g ′′, p′′) ◦
{(g ′, p′) ◦ (g , p)
}可換ではない
(g ′, p′) ◦ (g , p) ̸= (g , p) ◦ (g ′, p′)
(0, 0) ◦ (1, 1) = (0 + 0 · 1, 0 · 1) = (0, 0)
(1, 1) ◦ (0, 0) = (1 + 1 · 0, 1 · 0) = (1, 0)
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 48 / 62
並列プレフィックス演算
並列プレフィックス演算
(gi+1 + pi+1gi , pi+1pi ) = (gi+1, pi+1) ◦ (gi , pi )
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 49 / 62
並列プレフィックス演算
並列プレフィックス問題
1 Given: (g0, p0), (g1, p1), . . . , (gn−1, pn−1)
2 Find: (g[0,0], p[0,0]), . . . , (g[k,0], p[k,0]), . . . , (g[n−1,0], p[n−1,0])
(g[k,0], p[k,0]) = (gk , pi ) ◦ · · · ◦ (g1, p1) ◦ (g0, p0)
並列化
演算 ◦は結合律が成り立つので,i ≤ j ≤ k なら
(g[k,i ], p[k,i ]) = (g[k,j+1], p[k,j+1]) ◦ (g[j ,i ], p[j ,i ])
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 50 / 62
キャリの計算
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 51 / 62
キャリの計算
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 52 / 62
キャリの計算
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 52 / 62
キャリの計算
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 52 / 62
キャリの計算
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 52 / 62
並列プレフィックス型アダー
キャリの伝搬
1 初段で 2ビットずつグループ分け(初段のグループ化)
2 2段めでは下のグループへ情報を伝えて,4ビットのグループを作る
3 以下,4ビット→8ビットと,より大きなグループを作りながら,プロパゲーションとジェネレーションを計算する(グループの成長)
グループの成長
「指数関数的にグループを成長させる」のがポイント
この成長がゲートの段数を決める
ゲートの段数をO(log n)にすることができる
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 53 / 62
和の計算
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 54 / 62
和の計算
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 55 / 62
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 56 / 62
並列プレフィックス型アダー
ネットワークの構成
並列型プレフィックス型アダーは,以下の三つの規則的な構造を持つ
1 初段のグループ化(2段ずつまとめる)
2 グループの成長(指数関数的に増大させる)
3 残りの項のジェネレーション生成
特徴
ビット数が増えても,ファンイン・ファンアウトが増加しない
AND-ORゲートの繰り返しでビット数を拡張できる
ゲート数はO(n log n)程度
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 57 / 62
並列プレフィックス型アダーの種類
ネットワークの構成法
初段のグループ化
残りの項のジェネレーション生成
の方法によって,ネットワークのバリエーションがあり,それぞれ
回路規模(ゲート数)
ゲートの段数
ファンイン・ファンアウト
が変わってくる
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 58 / 62
Kogge-Stone Adder
論理段数は最小な構成でファンアウトも小さくなるが、回路規模が大きい
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 59 / 62
Brent-Kung Adder
回路規模は最小な構成になるが、論理段数が大きくなる
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 60 / 62
Han-Carlson Adder
回路規模を抑えつつ、論理段数も小さく抑えている
Kogge-Stoneと Brent-Kungの構成を混合させたような構成
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 61 / 62
並列プレフィックス型アダー
まとめ
キャリ・ルックアヘッド型の欠点を解消
ファンイン(定数),ファンアウト(高々log n)が少ない
O(log n)の段数で加算を計算できる
比較的対称な構造を持つ
同じビット数の加算でも,それを行う回路の構成は数多く存在する.
ビット数の大きな場合での Parallel-Prefix Networkを構成する問題は一つの研究課題
荒木 徹 (電子情報・数理教育プログラム) 計算機構成特論 Part 1 2016 年度 前期 62 / 62