m-project コンピュータを作って しまおう - waseda …β は 2 進の小数部分 0.β×...

33
コンピュータを作って しまおう 足し算回路を設計する M-project コンピュータを作ってしまおう 1

Upload: others

Post on 11-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

コンピュータを作ってしまおう

足し算回路を設計する

M-project

コンピュータを作ってしまおう 1

Page 2: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

コンピュータ内ではすべてのものを0と1で表す

文字 → 文字コード

整数 → 固定小数点表示

実数 → 浮動小数点表示 (誤差を伴う)

画像 → 小さな点(ピクセル)の集まり

プログラム → 文字で表された命令を実行順に並べる

コンピュータを作ってしまおう 2

M-project

Page 3: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

文字コード文字を0と1で表す約束

いろんな方式がある → ASCCI (半角英数字を表す基本的なもの)

JISコード、シフトJISコード、EUCコード (日本語の文字の表し方)

例 : ASCII では文字を次にように0と1で表す

A → 100 0001 B → 100 0010 ・・・

a → 110 0001 b → 110 0010 ・・・

0 → 011 0000 1 → 011 0001 ・・・

・・・

コンピュータを作ってしまおう 3

M-project

Page 4: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

ASCIIコード表

コンピュータを作ってしまおう 4

M-project

IT用語辞典: http://e-words.jp/p/r-ascii.html から引用

Page 5: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

数は2進数で表す

0 → 00000000

1 → 00000001 k ビット表現

2 → 00000010 n = bk-12k-1 + bk-22k-2 + ・・・ + b121 + b020

3 → 00000011 bi は 0 か 1

4 → 00000100

・・・

コンピュータを作ってしまおう 5

8 ビット → 実際は32ビットや64ビット

M-project

Page 6: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

16進数も役立つ

0 → 0000 0000 → 001 → 0000 0001 → 01

・・・

9 → 0000 1001 → 0910 → 0000 1010 → 0A・・・

15 → 0000 1111 → 0F・・・

コンピュータを作ってしまおう 6

10進数 2進数 16進数

10 → A11 → B12 → C13 → D14 → E15 → F

M-project

Page 7: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

整数は固定小数点表示する

符号ビット s と2進数 α

s=0 なら正の数

s=1 なら負の数 → sα の 0 と 1 を反転し、末尾に 1 を足す (2の補数表現)

コンピュータを作ってしまおう 7

s α

M-project

1ビット

Page 8: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

実数は浮動小数点表示する

符号ビット s と2進数 α と β

s=0 なら正の数

α は指数部(先頭の 1 ビットは符号を表す)、β は2進の小数部分

0.β×10αを表す

コンピュータを作ってしまおう 8

βs α

M-project

符号ビット 指数部 小数部

Page 9: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

2進数の足し算

[0001 1101]2 = [1D]16 = 1×16 + 13 = 29

[0000 1100]2 = [0C]16 = 0×16 + 12 = 12

0001 1101

+ 0000 1100

0010 1001 [29]16 = 2×16 + 9 = 41

コンピュータを作ってしまおう 9

M-project

Page 10: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

2の補数

2の補数は0と1を反転して末尾に1を足したもののこと

[0011 0101]2 = [35]16 = 3×16 + 5 = 53

[1100 1010]2 = [CA]16 (1の補数) 0と1を反転する

[1100 1011]2 = [CB]16 (2の補数) 1の補数の末尾に1を足す

元の数とそれの2の補数を足すと0になる(頭に桁上りした1が生じるので、それを捨てる)

0011 0101

+ 1100 1011

10000 0000

コンピュータを作ってしまおう 10

M-project

捨てる

Page 11: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

足し算で引き算をする

[0001 1101]2 = [1C]16 = 1×16 + 13 = 29

[0000 0101]2 = [05]16 = 0×16 + 5 = 5

[1111 1010]2 = [FA]16 5の「1の補数」 (0と1を反転する)

[1111 1011]2 = [FB] 16 5の「2の補数」 (末尾に1を足す)

0001 1101

+ 1111 1011

1 0001 1000 [18]16 = 1×16 + 8 = 24

コンピュータを作ってしまおう 11

M-project

捨てる

Page 12: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

論理値(真理値)

真理値 論理値

真 true T 1

偽 false F 0

コンピュータを作ってしまおう 12

M-project

Page 13: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

論理関数(ブール関数)

否定(not) 論理積(and) 論理和(or) 排他的論理和(xor)

x y ¬x x ∧ y x∨y x ㊉ y

0 0 1 0 0 0

0 1 1 0 1 1

1 0 0 0 1 1

1 1 0 1 1 0

コンピュータを作ってしまおう 13

M-project

Page 14: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

2変数の論理関数のすべて

回路を表すときは

¬x → x

x ∧ y → x ・ yx ∨ y → x + y または xyx ㊉ y → x ㊉ y NAND → x | y NOR → x ↓ y

コンピュータを作ってしまおう 14

M-project

Page 15: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

回路素子(ゲート)

コンピュータを作ってしまおう 15

M-project

Page 16: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

論理式(ブール式)

0 と 1 は論理式 論理定数(論理値)

x, y, ・・・ などは論理式 論理変数(ブール変数)

α と β が論理式なら α も α・β も α+β も論理式

(x y + 0) + (y + z) x

コンピュータを作ってしまおう 16

M-project

Page 17: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

論理式を表すのに必要なものは・・・

どんな論理式も次の組み合わせだけで表すことができる

(1) 論理否定 ( x ) と論理和 ( x + y )(2) 論理否定 ( x ) と論理積 ( x ・ y )

(3) NAND ( x | y )

(4) NOR ( x ↓ y )

コンピュータを作ってしまおう 17

M-project

Page 18: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

論理式の性質

コンピュータを作ってしまおう 18

M-project

Page 19: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

足し算は途中で桁上りがある

コンピュータを作ってしまおう 19

M-project

xnxn-1・・・x1 10011001

+ ynyn-1・・・y1 + 10110101zn+1 zn zn-1・・・z1 101001110

桁上り

Page 20: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

まず、1ビットの足し算

コンピュータを作ってしまおう 20

M-project

sは x+yのその桁の値となる1ビットcは桁上り

Page 21: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

論理式で表すと・・・

コンピュータを作ってしまおう 21

M-project

Page 22: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

論理回路にすると・・・

コンピュータを作ってしまおう 22

M-project

Page 23: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

桁上りも考慮すると・・・

コンピュータを作ってしまおう 23

M-project

Page 24: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

論理式で表すと・・・

コンピュータを作ってしまおう 24

M-project

Page 25: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

n ビットの足し算回路

コンピュータを作ってしまおう 25

M-project

Page 26: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

回路にすると・・・

コンピュータを作ってしまおう 26

M-project

Page 27: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

じゃんけん回路の設計

コンピュータを作ってしまおう 27

M-project

Page 28: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

その論理設計は・・・

コンピュータを作ってしまおう 28

M-project

Page 29: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

論理式にすると・・・

コンピュータを作ってしまおう 29

M-project

Page 30: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

論理回路は・・・

コンピュータを作ってしまおう 30

M-project

Page 31: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

実際の足し算回路はもっと高速

コンピュータを作ってしまおう 31

M-project

プレフィックス並列計算回路

Page 32: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

実際の足し算回路は桁上りを並列計算して高速化する

コンピュータを作ってしまおう 32

M-project

Page 33: M-project コンピュータを作って しまおう - Waseda …β は 2 進の小数部分 0.β× 10 α を表す コンピュータを作ってしまおう 8 s α β M-project

速さの違い

コンピュータを作ってしまおう 33

M-project

足す数の桁数(ビット数)を 𝑛𝑛 とするとき

• ripple adder (素朴な回路) 𝑛𝑛に比例する時間かかる

• carry look-ahead adder (桁上り先読み並列可算回路) log 𝑛𝑛に比例する時間で計算できる