計算機アーキテクチャstimai/r02ca/comparch06.pdfhalf adder ai bi c s 半加算器 half...

31
計算機アーキテクチャ 番外編:論理関数と論理回路 「計算機アーキテクチャ」(第X回目) 今井慈郎([email protected] u.ac.jp

Upload: others

Post on 29-Dec-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

計算機アーキテクチャ

番外編:論理関数と論理回路

「計算機アーキテクチャ」(第X回目)

今井慈郎([email protected]

u.ac.jp)

Page 2: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

AND(論理積)

a b ab

0 0 0

0 1 0

1 0 0

1 1 1

論理関数,論理回路そしてディジタル回路(計算機のハードウェア)

a

b

a・b =ab

NOT(論理否定)

a

0 1

1 0

a

OR(論理和)

a b a+b

0 0 0

0 1 1

1 0 1

1 1 1

a

b

a+b a

a

Page 3: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

Ex-OR(排他的論理和):Exclusive-OR

a b

0 0 0

0 1 1

1 0 1

1 1 0

a

b

a b

a b

a

bAND,OR,NOTで実現

Page 4: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

加算の原理と論理関数

+ 0

+ 1

+ 0

+ 1

1 0

キャリー(carry)

+ 0

0 0

+ 1

0 1

+ 0

0 1

+ 1

1 0

キャリー(carry)

キャリー(carry)

キャリー(carry)

キャリー(carry)

Page 5: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

A

+ B

C S

A B S C

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

2入力 2出力半加算器half adder

A

B

C

S

1つのハードウェアとしてまとめる

Page 6: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

Ai

+ Bi

C S

Ci-1 Ai Bi Si Ci

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

An An-1 ・・Ai・・ A1 A0

Bn Bn-1 ・・Bi・・ B1 B0(+

+ Ci-1

Ci2 Si

上位への桁上げ

その桁の和

その桁の和(一時的)

下位からの桁上げ

1回目の加算

2回目の加算

Page 7: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

Ai

+ Bi

C S

An An-1 ・・Ai・・ A1 A0

Bn Bn-1 ・・Bi・・ B1 B0(+

+ Ci-1

Ci2 Si

上位への桁上げ

1回目の加算

2回目の加算

半加算器half adder

Ai

Bi

C

S

半加算器half adder

Ci-1

Ci2

Si

C+Ci2

全加算器 full adder

3入力2出力のハードウェア

Page 8: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

An-1 ・・・・ Ai ・・・ A1 A0

Bn-1 ・・・・ Bi ・・・ B1 B0

nビット初期値?

被加数

加数

Sn-1 ・・・・ Si ・・・ S1 S0加算結果

1桁以前(直前)のキャリーを記憶

直列加算

1ビットづつ下位から順番に加算

full adder : 1個下位の桁から

上位の桁へその桁の被加数&加数

その桁の和

キャリーの流れ

full adder

Page 9: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

1ビット(1桁に相当)の加算にk時間(数マイクロ秒=kμSec)かかるとして,nビットの直列加算には,n×kμSecの所要時間が必要

1ビット分の加算が短時間でも,ビット数が増大すれば全体の処理時間も増大する!

x=ビット数(n)

処理時間

直列加算

y=kx

ビット数

処理時間

並列加算

y≒k

処理速度の改善

Page 10: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

An-1 ・・・・ Ai ・・・ A1 A0

Bn-1 ・・・・ Bi ・・・ B1 B0

・・・・

・・・・・

・・・・

SiSn-1 CiCn-1 S0C0

・・・・

nビット

被加数

加数

Sn-1 ・・・・ Si ・・・ S1 S0

並列加算

nビット同時に並列加算

加算結果

CCarry

ripple carry

×n個

下位の桁から

上位の桁へ

その桁の被加数&加数

桁の和

full adder

full adder : n個

キャリーの流れ

脈流のように伝播するキャリー (その現象)

Page 11: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

各桁の計算は並列に加算可能 直列加算より高速処理可能

問題は,・・・

ripple carry 脈流のように伝播するキャリー (その現象)

上位の桁になるほど,下位から伝播するキャリーの到着が遅くなり結果として,上位の加算処理の値が確定するのに時間を要する

ripple carryへの対策が並列処理の成否を決定(高速処理を実現)する要因

Page 12: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

Ci-1 Ai Bi Si Ci

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

)(111 iiiiiiiiiiiiii BABABACBACBACC

)()()( 1111 iiiiiiiiiiiiiiiii BACBABABABACBACCC

)(11 iiiiiii BACBACC

キャリーを解析して,高速化を図る

論理式の最小化

)()( 1111 iiiiiiiiiiiiiiiii BABABACBACBACBACC

キャリーはその桁で発生するか,下位からのものを上位に伝えるか

Page 13: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

この式からも,キャリーが下位から上位の桁へ伝播(あるいは伝達)していることが確認される

iii GBA : generator

iii TBA : transmitter or propagator

上位へのキャリー発生因子

下位から上位へのキャリー伝達因子

この論理式を基に,キャリーの伝達を予見する(carry look-ahead)特殊ハードウェアを構成

32211221111

211111

))()(())(()(

))(()()(

iiiiiiiiiiiiiiiiiii

iiiiiiiiiiiiiiiii

CBABABABABABABABABA

CBABABABABACBABAC 繰り返し適用…

上位の桁でも伝播するキャリーを予見し並列加算を可能にする

01321321211

32121211211

CTTTTTGTTTGTTGTG

CTTTGTTGTTGTGCTTGTGC

iiiiiiiiiiiiii

iiiiiiiiiiiiiiiiiiii

Page 14: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

(2*n+1)入力(n+2)出力 のcarry look-ahead用ハードウェア

iii GBA iii TBA

iC

niC

11,, niniii BABA

1niC

*G*T

http://www.chipcenter.com/circuitcellar/may00/ancil-0500/c0500lr-f4.htm

http://klabs.org/richcontent/Tutorial/MiniCourses/architecture_logic_mapld2001/Logic_Section/1_Intro_Logic.PDF

http://www.et.utt.ro/public/Docs/Documentatii%20Hardware/Circuite%20TTL%20-%20Fairchild/DM74LS283.pdf参考HP

Reference: Parallel Adder with Carry Look-ahead

(Fairchild DM74LS283 logic diagram)

Page 15: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

An-1 ・・・・ Ai ・・・ A1 A0

・・・・

・・・・

CCarry

iii GBA iii TBA

1nC

1C

0011 ,,, BABABA iinn

0C

*G*T

1iC2nC

carry look-aheader

Sn-1 ・・・・ Si ・・・ S1 S0加算結果

Bn-1 ・・・・ Bi ・・・ B1 B0

carry look-aheader

回路が下位からの桁上げを先見することで,各桁毎で同時にその桁へのキャリーを読み込んで加算が実行可能

(眞の並列加算)

下位からの桁上げが無ければゼロとなる

上位へのキャリー伝達が不要ならば未接続

Page 16: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

加算ハードウェアだけでも結構大変なのに,減算のために新規にハードウェアを用意する必要があるのか?

Page 17: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

加算ハードウェアで減算も(ついでに)実行できないか?

それは,少しわがままな要望から始まった....

2の補数(two’s complement)の導入

An-1 ・・・・ Ai ・・・ A1 A0

最上位ビット(MSB)を符号ビット(Sign Bit)として扱う

MSB:Most Significant Bit , MSB=0:正or零(ゼロ),MSB=1:負

最下位ビットLSB

Page 18: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

1100・・・11

0111・・・11

0100・・・11

1010・・・00

0000・・・00

0010・・・00

1000・・・00

1111・・・11

0100・・・11

1111・・・11

1100・・・11

0010・・・00

1000・・・00

1010・・・00

0000・・・00

0111・・・11

n bit n bit

n2

12 n

12 n

情報量

情報量

情報量

ゼロ

MSB=0

MSB=1

正or

Page 19: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

正の数の大小関係は明白!

負の数の大小関係は?

nビットのall 1 を考える 11111・・・・・・1111

n bit

11111・・・・・・111100000・・・・・・0001‘1’

? =X

MSB=1

(+00000・・・・・・00001

Carry=1 明らかにゼロ

n bit

nビットのall 0

X+1=0 X=-1

11111・・・・・・1111 -1

=1

nビットのall 1

Page 20: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

0100・・・11

1111・・・11

1100・・・11

0010・・・00

1000・・・00

1010・・・00

0000・・・00

0111・・・11

n bit

12 n

12 n

情報量

情報量

ゼロ

MSB=0

MSB=1

正or

-1

1111・・・110000・・・01(-1111・・・10

1111・・・100000・・・01(-1111・・・01

1000・・・010000・・・01(-1000・・・00

-1

-2

-2

-3

12 n

12 n

12 1 n

Page 21: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

0101x

1010x

個々のビットの0と1とを反転させる

nビットのXに対して,Xを考えると

X+X=1111・・・・11 -1

X+X=-1 -X=X+1

2の補数の世界において,ある数Xの符号反転(ーX)は

Xの各ビット毎の反転( X )に“1”を加算すると得られる

意味

Page 22: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

2の補数(two’s complement)の導入の結果

これまで通り,加算はOK.加えて,減算を加算で表現することが可能

X+Y ・・・ OK

X-Y= X+(-Y)=X+Y+1

An-1 ・・・・ Ai ・・・ A1 A0

Bn-1 ・・・・ Bi ・・・ B1 B0

加算のハードウェア下位からのキャリーはゼロ

Sn-1 ・・・・ Si ・・・ S1 S0

加算はこれまで通り!

CCarry

Page 23: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

An-1 ・・・・ Ai ・・・ A1 A0

Bn-1 ・・・・ Bi ・・・ B1 B0

加算のハードウェア

下位からのキャリーを1とする

Sn-1 ・・・・ Si ・・・ S1 S0

これで加算ハードウェアで減算も実行可能!

Bn-1 B0B1Bi

CCarry

Page 24: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

An-1 ・・・・ Ai ・・・ A1 A0

Bn-1 ・・・・ Bi ・・・ B1 B0

加算のハードウェア

加算の時0,減算の時1

Sn-1 ・・・・ Si ・・・ S1 S0

これで加算ハードウェアで減算も実行可能!

CCarry

Page 25: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

組合せ回路(Combinational Circuit)と

順序回路(Sequential Circuit)

組合せ回路:入力情報(入力パターン)に対して出力信号(出力パターン)が一意に決定される論理回路

順路回路:内部状態が存在し,内部状態と入力情報とによって,出力信号が決定される回路(このため,見掛け上,出力パターンは,入力パターンに対して一意には決定されない)

論理回路=組合せ回路+順序回路

Page 26: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

組合せ回路の具体例

OR

Output: z

NOT

AND

s: Select

D2 D1

enable

z = s D1 + s D2

z = (s D1 + s D2)enable

s D1 D2 z0 0 0 00 0 1 00 1 0 10 1 1 11 0 0 01 0 1 11 1 0 01 1 1 1

Page 27: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

組合せ回路の構成は,比較的容易!

問題は順序回路を如何に構成するかより詳しくは「論理回路」の授業を受講してください!!(ここではその入門)

Page 28: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

フリップフロップ:フィードバックの存在

S R Q(t) notQ(t) Q(t+1) notQ(t+1)0 0 0 1 0 10 0 1 0 1 01 0 - - 1 00 1 - - 0 11 1 - - Unstable* Unstable*1 1 - - Unstable* Unstable*

保存(メモリ)

セット

リセット

禁止入力

S

R

Q1

0

0

1 Q

1

0

Page 29: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

フリップフロップ回路(flip-flop circuit)

「フリップフロップ回路」とは:

「high」と「low」の2つの安定状態を持つ論理回路(電子回路).2つの状態を「0」と「1」に対応させることで,1ビットの情報を保持可能(メモリ).

印加する信号によって2つの状態が交互に変化するように構成されているのが特徴.

大規模な電子回路を構成するための基本的な素子.SRAMや、マイクロプロセッサ内部のフラグやレジスタ等の記憶回路に使用.

Page 30: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

順序回路の具体例(その1)

マスタスレーブ型JKフリップフロップ

J

K

クロック

リセット

Q

Q

Page 31: 計算機アーキテクチャstimai/R02CA/CompArch06.pdfhalf adder Ai Bi C S 半加算器 half adder Ci-1 Ci2 Si C+Ci2 全加算器full adder 3入力2出力のハードウェア A

順序回路の具体例(その2)

エッジトリガー型JKフリップフロップ

Q

Kクロック

J

リセット

Q