• 検索結果がありません。

授業計画

N/A
N/A
Protected

Academic year: 2021

シェア "授業計画"

Copied!
28
0
0

読み込み中.... (全文を見る)

全文

(1)

コンピュータアーキテクチャ

2

2

進演算(数の表現)

2013年10月2日 金岡 晃

(2)

授業計画

1

(9/25)

授業概要・2進数表現・論理回 路の復習

2

(10/2)

2進演算(数の表現)

3

(10/9)

演算アーキテクチャ(演算アル ゴリズムと回路)

4

(10/16)

ノイマン型コンピュータ・命令 とは・命令の使い方

5

(10/23)

休講

6

(10/30)

命令セットアーキテクチャ(命 令の表現・命令の実行の仕組)

7

ハーバードアーキテクチャ・

8

(11/13)

中間試験

9

(11/20)

休講

10

(11/27)

メモリの仕組

11

(12/4)

キャッシュメモリと仮想メ モリ

12

(12/11)

割込みアーキテクチャ

13

(12/18)

パイプライン

14

入出力アーキテクチャ・ま

(3)

【復習】第 1

2進数表現・論理回路の復習

コンピュータアーキテクチャ

(4)

2 進数と 10 進数と 16 進数

2進数 10進数 16進数

0 0 0

1 1 1

10 2 2

11 3 3

100 4 4

101 5 5

110 6 6

111 7 7

1000 8 8

1001 9 9

2進数 10進数 16進数

1010 10 A

1011 11 B

1100 12 C

1101 13 D

1110 14 E

1111 15 F

10000 16 10

10001 17 11

10010 18 12

10011 19 13

2進数 10進数 16進数

10100 20 14

10101 21 15

10110 22 16

10111 23 17

11000 24 18

11001 25 19

11010 26 1A

11011 27 1B

11100 28 1C

11101 29 1D

(5)

2 の補数

負の数を表現する場合は、

2

の補数と呼ばれる表現が使われる

• n

ビット表現のデータの場合、

n+1

ビット目が

1

となる値から負とし て表現したい数値を引くことで求められる

16ビット表現データの場合で (-11010)2 を表す:

10000000000000000-11010=1111111111000110

簡単なやり方:値を反転(逆)にして、その値に1を加える

2

の補数表現を利用する理由

演算が容易になる。

減算(引き算)が2の補数の加算(足し算)で行うことが可能。

(6)

数値の表現:固定小数点数

コンピュータの内部では整数を

2

進数の固定小数点数として表現して いる

固定小数点数:データの中で小数点の位置が固定されている

• 16

ビット(

2

バイト)や

32

ビット(

4

バイト)の大きさで表現される

先頭のビットは符号を表し、符号ビット(

Sign Bit

)と言う

0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

ビット番号:

符号ビット(正:0、負:1)

(7)

浮動小数点数

実数を扱うときには固定小数点数ではなく浮動小数点数(小数点の位置 が動く)で表現される

• 10

進表現の

199610.21

1.9961021x10^5 –

左部分を仮数、右部分を基数と指数

• 32

ビットの場合

先頭

1

ビット:仮数の符号

– 8

ビット:指数部

– 23

ビット:仮数部

0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0

31 30 29 28 27 26

ビット番号:

0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 25 24 23 22 21 20 19 18 17 16

符号ビット(正:0、負:1)

指数部 仮数部

(8)

組合せ回路と順序回路

組合せ回路

これまでやってきた回路のようなもの

• AND

OR

NOT

NAND

NOR

XOR –

入力した値だけで出力結果が決まる回路

順序回路

出力結果が入力の値だけでは決まらず、回路の内部状態と合わ せて結果が決まる

代表例

フリップフロップ

– RS

フリップフロップ

S R Q

0 0 Q 0 1 0 1 0 1 1 1 ×(禁止)

(9)

論理演算

論理演算

ブール演算(

Boolean Operation

)とも。

「真(

1

)」と「偽(

0

)」の

2

つの結果を出す演算

– 3

つの基本的な演算

論理和(

OR

論理積(

AND

否定(

NOT

論理和(

OR

) :

0 or 0

のみ

0

。あとは

1

になる。

論理積(

AND

):

1 and 1

のみ

1

。あとは

0

になる。

否定(

NOT

) :

not 0

1

not 1

0

そのほかに否定論理和(

NOR

)、否定論理積(

NAND

)、排他的論理 和(

XOR

)などがある

(10)

論理回路

論理回路とは

演算回路の組み合わせによりさまざまな論理演算を実現する回路 演算回路

論理演算を実現する回路:

AND

回路、

OR

回路、

NOR

回路など

代表例:加算器(半加算器、全加算器)

複数の桁の2つのデータを入力し、その加算の結果を出力する回路

(11)

加算器

半加算器(Half Adder

• 1つの桁の加算を行う回路。

2つの入力の和を求める。

桁上がり(繰り上がり)が生じる 可能性があるので出力は2

全加算器(Full Adder

• 1つの桁の加算を行う回路。

3つの入力の和を求める。

下位からの桁上がり(繰り上がり)に 対応した加算器

加算器

半加算器と全加算器を 組み合わせることで

複数桁の加算を行う加算器を 実現することができる。

半加算器

全加算器

nビット全加算器

(12)

2 週 2進演算(数の表現)

コンピュータアーキテクチャ

(13)

本日の到達目標と概要

到達目標

コンピュータにおける数の表現を理解する

概要

– 10

進数の表現方法:

2

進化

10

進数、

3

増しコード、グレイコード

負の数の表現

実数の表現:浮動小数点数

(14)

データ表現方法の必要性

2

進化

10

進数(

BCD

3

増しコード 人間:

10

進数

コンピュータ:

2

進表現 対応づけるルールが必要

単に

2

進数では ダメなのか ルールの種類

2

進数

人間がわかりやすい(扱いやすい)

ミスが出にくい

補数が扱いやすい(自己補数化性)

(15)

最上位ビット( MSB )と最下位ビット( LSB )

最上位ビット (MSB: Most Significant Bit)

最下位ビット (LSB: Least Significant Bit)

最上位ビット 最下位ビット

(16)

10 進数の 2 進表現: 2 進化 10 進数( BCD )

10進数の1桁(0-9)を2進(0と1)で表現するためには 少なくとも4ビットが必要

2進数4ビットでは

16通りの表現が可能(0000-1111)

10通りのみを使用して10進数と対応づけた単純な手法:

2進化10進数(BCD:Binary Coded Decimal)

10

進数

BCD 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000

複数桁の10進数は?

各桁の数字を

BCD

で表現

(17)

10 進数の 2 進表現: 3 増しコード

10

進数

BCD 0 0011 1 0100 2 0101 3 0110 4 0111 5 1000 6 1001 7 1010 8 1011 9 1100

BCDに3を加算したコード

0000のデータ割り当てが無い

各ビットを反転する(NOTをとる)と、10進数の9の 補数となる(自己補数化性)

0011(0) → 1100(9)

10進数の9の補数

足すと9になる数のペア 減算に都合

が良い

四捨五入の判断がMSBを見るだけで可能

「データがない」ことを示すのに 0000を利用可能

(18)

10 進数の 2 進表現:グレイコード

10

進数 グレイコード

0 0000

1 0001

2 0011

3 0010

4 0110

5 0111

6 0101

7 0100

8 1100

9 1101

10進数のデータが1変わるときに、対応するコードのビッ トの変更が1か所だけで済む表現

たとえばBCDで(7)10から(8)10に増えるとき, 0111が1000になるので

計4ビットのデータを変換しなければならないが グレイコードでは1ビットのデータ変換だけで良い

(19)

グレイコードの作り方

0 1

1ビット

コード

2ビット

コード

0

1 1 0

①そのまま

②反転

0

0 1 1

②0と1を付加

0 0 0 1 1 1 1 0

2ビット

コード

3ビット コード

(20)

演習: 2 進表現

10

進数の数をそれぞれの

2

進表現方法で表す

2

進化

10

進数

BCD

3

増しコード グレイコード

10

134

(21)

補数と擬補数

補数

擬補数

𝑅

進数において桁数を

𝑚

とすると

数値

𝑛

𝑘

の補数で表現すると次のようになる。

𝑅

𝑚

− 𝑅 − 𝑘 − 𝑁

2

進数の時の

1

の補数

10

進数の時の

9

の補数

𝑅

進数での

𝑅 − 1

の補数を擬補数と呼ぶ。

(22)

負の数の表現:符号と絶対値表現

10

進数

2

進表現

-7 1111

-6 1110

-5 1101

-4 1100

-3 1011

-2 1010

-1 1001

-0 1000

10

進数

2

進表現

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

MSBを符号ビットとし、残りのビット で数値を絶対値にしたデータを表す

(23)

負の数の表現: 2 の補数表現

10

進数

2

進表現

-8 1000

-7 1001

-6 1010

-5 1011

-4 1100

-3 1101

-2 1110

-1 1111

10

進数

2

進表現

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

負の数はその数の絶対値の2の補数で 表す

(24)

演習:負の数の表現

負の数を「符号と絶対値表現」と

2

の補数表現」の

2

種類で表す

-5

8

ビットの表現で やってみよう

符号と

絶対値表現

2

の補数表現

(25)

実数の表現:浮動小数点数

ビット番号:

0 1 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

31 30 29 28 27 2625 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

実数を

2

進数で表現する

(5.625)10 (101.101)2

整数部を0以外の1桁(つまり2進数の場合 1)に調整(正規化、normalize)する。

1.01101 × 2

2 仮数部 指数部

32

ビット

(単精度)の場合

MSB:仮数の符号

8ビット:指数部

23ビット:仮数部

バイアス表現:

-127乗から128乗まで表すため に、127を加算して2進表現する けち表現(Economized Representation)

2進数を正規化すると必ず1になるため、1を省略して1ビット省略する方法

(26)

浮動小数点数の精度

精度

単精度:4バイト(32ビット)長

倍精度:8バイト(64ビット)長

拡張倍精度:倍精度より大きいサイズを利用

数値の範囲とその限界

範囲のオーバー:Overflow

絶対値が小さすぎ:Underflow

丸め誤差

10進数の2進表現はだいたい循環小数

(27)

演習:浮動小数点数

浮動総数点数で表す

32

ビット:

構成はスライド

23

と同じ バイアスは

127

けち表現

128

0.00001625

(28)

本日の到達目標と概要

到達目標

コンピュータにおける数の表現を理解する

概要

– 10

進数の表現方法:

2

進化

10

進数、

3

増しコード、グレイコード

負の数の表現

実数の表現:浮動小数点数

参照

関連したドキュメント

学位の種類 学位記番号 学位授与の日付 学位授与の要件 学位授与の題目

氏名 学位の種類 学位記番号 学位授与の日付 学位授与の要件 学位授与の題目

氏名 学位の種類 学位記番号 学位授与の日付 学位授与の要件 学位授与の題目

学位授与番号 学位授与年月日 氏名

学位の種類 学位記番号 学位授与の日付 学位授与の要件

氏名 小越康宏 生年月日 本籍 学位の種類 学位記番号 学位授与の日付 学位授与の要件 学位授与の題目..

(注 3):必修上位 17 単位の成績上位から数えて 17 単位目が 2 単位の授業科目だった場合は,1 単位と

・「下→上(能動)」とは、荷の位置を現在位置から上方へ移動する動作。