計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21...

30
計算機アーキテクチャ 2014526電気情報工学科 田島 孝治 7回 計算機アーキテクチャ 1 第7回 計算アーキテクチャ(ARU計算機のハードウェア実装

Transcript of 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21...

Page 1: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

計算機アーキテクチャ

2014年 5月26日

電気情報工学科 田島 孝治

第7回 計算機アーキテクチャ 1

第7回 計算アーキテクチャ(ARU) 計算機のハードウェア実装

Page 2: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

授業スケジュール(前期)

※5/5はこどもの日、7/21は海の日のため休講

※急なスケジュール変更があった場合,掲示およびメールで連絡します

2

第7回 計算機アーキテクチャ

回 日付 タイトル

1 4/7 コンピュータ技術の歴史と コンピュータアーキテクチャ

2 4/14 ノイマン型コンピュータ

3 4/21 コンピュータのハードウェア

4 4/28 数と文字の表現

5 5/12 固定小数点数と浮動小数点表現

6 5/19 計算アーキテクチャ(ARU)

7 5/26 計算装置のハードウェア実装

8 6/2 文字コード

9 6/11? 中間試験(日程は仮)

回 日付 タイトル

10 6/16 主記憶装置とレジスタ

11 6/23 命令実行の流れ

12 6/30 命令形式とアセンブリ言語

13 7/7 命令セット

14 7/14 サブルーチンの実現

15 7/28 PCSpimによるアセンブリ言語プログラム

8/4? 期末試験(日程は仮)

16 9/29? フォローアップ(日程は仮)

Page 3: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

今日の授業の目的

加減算のアルゴリズムを復習し、計算をできるようにする

シフト演算のハードウェア実装について知る

シフトと加減算を組み合わせた乗除算の実装について知る

第7回 計算機アーキテクチャ

3

加減算の計算アーキテクチャを理解する シフトと乗除算のアーキテクチャを理解する

Page 4: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

全加算器の設計と実装

全加算器の真理値表

回路の論理式

第7回 計算機アーキテクチャ

4

A B 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡 S

0 0 0 0 0

0 0 1 0 1

0 1 0 0 1

0 1 1 1 0

A B 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡 S

1 0 0 0 1

1 0 1 1 0

1 1 0 1 0

1 1 1 1 1

Cout = AB + ACin + BCin

S = A⊕ B⊕ C

Page 5: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

1ビット全加算器の回路図

以後簡単のためにボックス化して書く

第7回 計算機アーキテクチャ

5

𝐶𝑖𝑛 B

A

𝐶𝑜𝑢𝑡

S

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

Page 6: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

Nビット全加算器を作るには

1ビット全加算器を複数つなげれば良い

第7回 計算機アーキテクチャ

6

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

𝑆0

𝑆1

𝐴0

𝐴1

𝐵0

𝐵1

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

𝑆2

𝑆3

𝐴2

𝐴3

𝐵2

𝐵3

リプルキャリー型加算器と呼ぶ

0

Page 7: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

減算器を作るには

減算用の論理式を作る?

加算器と同じようにカルノー図を作れば作れる

2の補数を使う

加算器と同じ回路で実現できる

2の補数を計算する回路が必要

2の補数の計算方法

反転して、1を加える

反転:NOT回路を通す

1を加える:最下位ビットの𝐶𝑖𝑛を常に1する

第7回 計算機アーキテクチャ

7

Page 8: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

4ビット減算器

第7回 計算機アーキテクチャ

8

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

𝑆0

𝑆1

𝐴0

𝐴1

𝐵0

𝐵1

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

𝑆2

𝑆3

𝐴2

𝐴3

𝐵2

𝐵3

1

Page 9: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

実際に演算してみよう

符号付きの場合の解釈

第7回 計算機アーキテクチャ

9

問題(10進数) 2進数 結果 10進数 正しい?

(1) 3 + (-5)

(2) (-6) – (-3)

(3) (-3) + (-7)

(4) (-6) – 4

Page 10: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

計算スペース

第7回 計算機アーキテクチャ

10

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

𝐴0 𝐵0

𝑆0

𝐴1 𝐵1

𝑆1

𝐴2 𝐵2

𝑆2

𝐴3 𝐵3

𝑆3

𝐶 𝐶0

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

𝐴0 𝐵0

𝑆0

𝐴1 𝐵1

𝑆1

𝐴2 𝐵2

𝑆2

𝐴3 𝐵3

𝑆3

𝐶 𝐶0

Page 11: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

計算スペース

第7回 計算機アーキテクチャ

11

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

𝐴0 𝐵0

𝑆0

𝐴1 𝐵1

𝑆1

𝐴2 𝐵2

𝑆2

𝐴3 𝐵3

𝑆3

𝐶 𝐶0

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

FA 𝐶𝑖𝑛 𝐶𝑜𝑢𝑡

𝐴 𝐵

𝑆

𝐴0 𝐵0

𝑆0

𝐴1 𝐵1

𝑆1

𝐴2 𝐵2

𝑆2

𝐴3 𝐵3

𝑆3

𝐶 𝐶0

Page 12: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

レジスタと順序回路

加減算の回路

組み合わせ回路だけですべてが実現された

値の保持はどうするのか

レジスタの実装

FFによるものが一般的

この講義で用いるFF

D-FFのみで考える

第7回 計算機アーキテクチャ

12

Q

Q

D

CK

D-FF

入力 出力

D CK Qn+1 Qn+1

0 ↑ 0 1

1 ↑ 1 0

0/1 0 Qn Qn

0/1 1 Qn Qn

0 ↓ Qn Qn

1 ↓ Qn Qn

D-FFの真理値表

立ち上がり

立ち下り

Page 13: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

D-FFの動作確認(タイムチャート)

第7回 計算機アーキテクチャ

13

Q

Q

D

CLK

Page 14: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

D-FFによるシフト回路の実装

4ビットの右シフト回路を考える

パッディングはMSBの値とする

まずは状態遷移図を作る

クロックでシフト

14

0000 0001 0010

0011

0100

0101

0110 0111

1000

1001

1010 1011

1100

1101

1110 1111

Page 15: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

真理値表の作成 15

現在の状態 次の状態

S3 S2 S1 S0 S3 S2 S1’ S0’

0 0 0 0 0 0 0 0

0 0 0 1 0 0 0 0

0 0 1 0 0 0 0 1

0 0 1 1 0 0 0 1

0 1 0 0 0 0 1 0

0 1 0 1 0 0 1 0

0 1 1 0 0 0 1 1

0 1 1 1 0 0 1 1

現在の状態 次の状態

S3 S2 S1 S0 S3 S2 S1’ S0’

1 0 0 0 1 1 0 0

1 0 0 1 1 1 0 0

1 0 1 0 1 1 0 1

1 0 1 1 1 1 0 1

1 1 0 0 1 1 1 0

1 1 0 1 1 1 1 0

1 1 1 0 1 1 1 1

1 1 1 1 1 1 1 1

第7回 計算機アーキテクチャ

Page 16: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

カルノー図の作成1

S0’について

第7回 計算機アーキテクチャ

16

\S3S2 S1S0\

00 01 11 10

00 0 0 0 0

01 0 0 0 0

11 1 1 1 1

10 1 1 1 1

𝑆0′ = 𝑆1

Page 17: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

カルノー図の作成2

S1’について

第7回 計算機アーキテクチャ

17

\S3S2 S1S0\

00 01 11 10

00 0 1 1 0

01 0 1 1 0

11 0 1 1 0

10 0 1 1 0

𝑆1′ = 𝑆2

Page 18: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

カルノー図の作成3

S2’について

第7回 計算機アーキテクチャ

18

\S3S2 S1S0\

00 01 11 10

00 0 0 1 1

01 0 0 1 1

11 0 0 1 1

10 0 0 1 1

𝑆2′ = 𝑆3

Page 19: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

カルノー図の作成4

S3’について

第7回 計算機アーキテクチャ

19

\S3S2 S1S0\

00 01 11 10

00 0 0 1 1

01 0 0 1 1

11 0 0 1 1

10 0 0 1 1

𝑆3′ = 𝑆3

Page 20: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

D-FFによるシフト演算器

この演算器をシフトレジスタということもある

シフトを使うと何ができるのか?

乗除算ができます

第7回 計算機アーキテクチャ

20

S1 S2 S3 S0

Q

Q

CK

D

Q

Q

CK

D

Q

Q

CK

D

Q

Q

CK

D

CLK

Page 21: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

乗除算のルール(直接乗算法)

乗数(除数)の2進数の意味

何ビットずらす(シフトする)か示している

掛け算は左シフト、割り算は右シフト

乗除算に掛け算九九は要らない

21

例) 116 × 28

28 = (0001 1100)2

116 = (0111 0100)2

0111 0100

011 1010 0

01 1101 00

1011 0000 = -80

0ビットシフト

1ビットシフト

2ビットシフト

3ビットシフト

4ビットシフト ビットがずれて計算しにくい

左シフトは符号が維持できない

Page 22: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

ブース法による乗算

2の補数で負の数も扱える乗算アルゴリズム

乗数の隣り合うビットを用いて演算方法を決定

1ビットづつ演算が決まる

部分積の計算式を利用

nビットの数値、XとYの部分積を𝑃𝑖とする

𝑃𝑖+1 = 2−1(𝑃𝑖 + 𝑦𝑖𝑋2𝑛)

具体的には次の表に従い数値を操作する

22

𝑦𝑖 𝑦𝑖−1 操作

0 0 そのまま右へ1ビット算術シフト

0 1 被乗数を加算した後、右へ1ビット算術シフト

1 0 被乗数を減算した後、右へ1ビット算術シフト

1 1 そのまま右へ1ビット算術シフト

Page 23: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

ブース法による乗算 23

0000 0110 0 0000 0011 0 -)0100 1100 0011 1110 0001 1 1111 0000 1 +)0100 0011 0000 0001 1000 0

4 = (0100)2

6 = (0110)2

例:4×6(4ビット)の場合

𝑃0

𝑃1

𝑃2

𝑃3

右シフト

右シフト

右シフト

右シフト

減算

加算

0001 1000

Page 24: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

ブース法の実装と他のアルゴリズム

ハードウェア

シフトと加算の組み合わせだけで実現可能

アルゴリズムの強み

1の連続に対し加算処理が不要

1と0が交互に繰り返されると不向き

処理アルゴリズムには亜種が存在する

今回は多ビットの加算を行わない基本的な方法を説明

乗算のアルゴリズムにはより高速なものがある

ウォリスの木(Wallace tree)を用いる方法

第7回 計算機アーキテクチャ

24

Page 25: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

除算の実現方法

引き戻し法(restoring division)、引き放し法(nonrestoring division)が広く知られる

引き放し法

演算回数を少なくできる

負の符号も扱えるが、補正が必要になる

符号計算と数値計算を独立させたほうが良い

引き放し法の演算手順

被除数の符号と除数の符号から商の符号を決定

2の補数表現により負の数を正の数に変換

アルゴリズムにより商と剰余を計算

商の符号が負の場合、2の補数に変換 第7回 計算機アーキテクチャ

25

Page 26: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

引き放し法のアルゴリズム

例)26÷5 (商は5、剰余は1)

第7回 計算機アーキテクチャ

26

0001 1010 0101 ÷

-)0101 0 1100 1010 0101

1001 010

0101 +)0101 1110 010 0

Page 27: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

引き放し法のアルゴリズム 27

0101 1110 010 0 0

1100 10 +)0101 0001 10 0101 1 0011 0 -)0101 1110 0 0101 1100

0

+)0101 0001 0

シフトできなくなったら演算修了

商 剰余

Page 28: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

演習問題

次の計算を2進数で行え

全ての数値は8bitで表し、MSBは符号ビットとする

乗算はブース法により行い過程を示すこと

第7回 計算機アーキテクチャ

28

① 41 + 60 ② 52 - 41 ③ 98 + 125 ④ 6 - 55 ⑤ 15 - 173

⑥ 58 × 6 ⑦ 60 ÷ 4 ⑧ -8 × 22 ⑨ -56 ÷ 58 ⑩ -16 × 98

Page 29: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

浮動小数点の加減算

指数部と仮数部は別に考える

先に指数部をシフト(桁合わせ)してから演算する

数値A

数値B

計算のイメージ(指数A>指数B、共にS=0の時)

加減算の結果、正規化が必要な場合は調整する (例:仮数部が桁上がりした場合、1ビットシフトし、指数を1増やす)

29

S 指数A 仮数A

S 指数B 仮数B

仮数A

仮数B

S 指数A 仮数C

指数A - 指数B

Page 30: 計算機アーキテクチャ · 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現

浮動小数点の乗除算

加減算と同様に指数部と仮数部は分ける

指数部は加減算

仮数部は乗除算

必要に応じて結果を正規化

計算の流れ

30

正規化

指数演算 仮数演算