コンピュータアーキテクチャ
第1週 授業概要・2進数表現・論理回路の復習
2013年9月25日 金岡 晃
この授業について
• 講義科目名称
– コンピュータアーキテクチャ
• 英文科目名称
– Computer Architecture
• 開講期間
– 秋学期
• 配当年
– 1学年
• 単位数
– 2
• 科目必選区分 – 必修
• 担当教員
– 金岡 晃
• 開講日時
– 水曜日2限
2013/9/25 コンピュータアーキテクチャ
1
授業計画
2
第1週 (9/25)
授業概要・2進数表現・論理回 路の復習
第2週 (10/2)
2進演算(数の表現)
第3週 (10/9)
演算アーキテクチャ(演算アル ゴリズムと回路)
第4週 (10/16)
ノイマン型コンピュータ・命令 とは・命令の使い方
第5週 (10/23)
休講 第6週
(10/30)
命令セットアーキテクチャ(命 令の表現・命令の実行の仕組)
第7週 (11/6)
ハーバードアーキテクチャ・
RISCとCISC・制御アーキテク チャ
第8週 (11/13)
中間試験 第9週
(11/20)
休講 第10週
(11/27)
メモリの仕組 第11週
(12/4)
キャッシュメモリと仮想メ モリ
第12週 (12/11)
割込みアーキテクチャ 第13週
(12/18)
パイプライン 第14週
(1/8)
入出力アーキテクチャ・ま とめ
1/22-2/8 期末試験
2013/9/25 コンピュータアーキテクチャ
授業概要
• 授業の目的と学習概要 – 教育目標
• コンピュータのハードウェアが、どのようにして命令を処理 するのか、どのように計算をするのか、また処理を高速化す るためにどのような工夫をしているのかを理解する。
今後コンピュータによる情報処理について学ぶ上で、その基 本となる「コンピュータとは何か・何ができるのか」につい て理解することが、出発点になる。
– 期待される学習成果
• 具体的には、数の表現と演算方法、コンピュータの命令セッ ト、制御方式、コンピュータの基本構成などを学ぶ。また、
処理を高速化するためのキャッシュやパイプラインについて も取り上げる。
また、基本情報技術者試験の対象内容を含む科目である。
2013/9/25 コンピュータアーキテクチャ
3
教科書と参考書
• 教科書
– 「図解コンピュータアーキテクチャ入門
[第2版]」
(堀桂太郎著、森北出版)
• 参考書
– 「基本情報技術者試験学習テキスト1 テクノロジ系」
(浅井宗海、 実教出版)
– 「コンピュータアーキテクチャ」
(内田啓一郎・小柳滋著、オーム社)
– 「アセンブラ言語CASLⅡ」
(東田幸樹・広瀬啓雄・山本 芳人著、
工学図書)
2013/9/25 コンピュータアーキテクチャ
4
評価方法とオフィスアワー
• 評価方法
– 平常点(授業参加等) 30%
– 中間試験 30%
– 期末試験 40%
• オフィスアワー
– オフィスアワーについてはメールで個別に時間を予約するもの とする
• 連絡先:[email protected]
2013/9/25 コンピュータアーキテクチャ
5
授業用
Webサイト
• http://www.klab.is.sci.toho-u.ac.jp/classes/
•
金岡が受け持っている講義の資料(この講 義以外も)をアップロードしています
•
「コンピュータアーキテクチャ」のページ も作成しました
•
講義資料を
PDF化してすべて載せていきま す。
2013/9/25 コンピュータアーキテクチャ
6
第
1週 2進数表現・論理回路の 復習
コンピュータアーキテクチャ
7 2013/4/10 コンパイラとプログラム言語
本日の到達目標と概要
• 到達目標
– 2進数の表現と論理回路を学ぶ
• 概要 – 基数
– 数値の表現 – 演算精度
– 論理演算とシフト演算
– 加算器・半加算器・全加算器 – 組合せ回路と順序回路
8 2013/9/25 コンピュータアーキテクチャ
基数
2013/9/25 コンピュータアーキテクチャ
9
人間が日常使っている数値 10進数
コンピュータが扱う数値 2進数
基数とは
10進数では9の次は10、99の次は100、のように 10倍ごとに桁が上がる
桁上がりの基準となる数 基数
2
進数と
10進数の関係(1)
2013/9/25 コンピュータアーキテクチャ
10
2進数 10進数 2のべき乗
0 0
1 1 20
10 2 21
11 3
100 4 22
101 5
110 6
111 7
1000 8 23
1001 9
2進数 10進数 2のべき乗
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15
10000 16 24
10001 17
10010 18
10011 19
2
進数と
10進数の関係(2)
2013/9/25 コンピュータアーキテクチャ
11
10進数の12345 104 × 1 + 103 × 2 + 102 × 3 + 101 × 4 + 100 × 5 各桁の数字は、基数の桁数だけべき乗されている
2進数の1011 23 × 1 + 22 × 0 + 21 × 1 + 20 × 1 = 11
10進数にすると11 2進数の111
2進数の10011010
2進数を10進数に変換する
小数も同じ
2進数の110.101 22 × 1 + 21 × 1 + 20 × 0
+2−1 × 1 + 2−2 × 0 + 2−3 × 1 = 6.625
2
進数と
10進数の関係(3)
2013/9/25 コンピュータアーキテクチャ
12
10進数を2進数に変換する
160 = 128 + 32 = 27 + 25 2のべき乗の足し算に変える
27 10000000 25 100000 27 + 25 10100000
2で割っていき、商とあまりから求める
160 80 40 20 10 5 2 1 0
… 0
… 1
… 0
… 0
… 0
… 0
… 0
… 1
10100000
16
進数
• 0-9,A-Fの16文字で表す
2013/9/25 コンピュータアーキテクチャ
13
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
n進数であることを明示する場合は
(0000111)n のように()と右下に基数を記載する
数値の表現:固定小数点数と
2の補数
• コンピュータの内部では整数を2進数の固定小数点数として表現して いる
– 固定小数点数:データの中で小数点の位置が固定されている
• 16ビット(2バイト)や32ビット(4バイト)の大きさで表現される
• 先頭のビットは符号を表し、符号ビット(Sign Bit)と言う
2013/9/25 コンピュータアーキテクチャ
14
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)
2
の補数
• 負の数を表現する場合は、2の補数と呼ばれる表現が使われる
• nビット表現のデータの場合、n+1ビット目が1となる値から負とし て表現したい数値を引くことで求められる
2013/9/25 コンピュータアーキテクチャ
15
16ビット表現データの場合で (-11010)2 を表す:
10000000000000000-11010=1111111111000110
簡単なやり方:値を反転(逆)にして、その値に1を加える 2の補数表現を利用する理由
演算が容易になる。
減算(引き算)が2の補数の加算(足し算)で行うことが可能。
浮動小数点数
• 実数を扱うときには固定小数点数ではなく浮動小数点数(小数点の位置 が動く)で表現される
• 10進表現の199610.21は1.9961021x10^5 – 左部分を仮数、右部分を基数と指数
• 32ビットの場合
– 先頭1ビット:仮数の符号 – 8ビット:指数部
– 23ビット:仮数部
2013/9/25 コンピュータアーキテクチャ
16
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)
指数部 仮数部
論理演算
• 論理演算
– ブール演算(Boolean Operation)とも。
– 「真(1)」と「偽(0)」の2つの結果を出す演算 – 3つの基本的な演算
• 論理和(OR)
• 論理積(AND)
• 否定(NOT)
• 論理和(OR)
– 0 or 0のみ0。あとは1になる。
• 論理積(AND)
– 1 and 1のみ1。あとは0になる。
• 否定
– not 0は 1、not 1は0
• そのほかに否定論理和(NOR)、否定論理積(NAND)、排他的論理和
(XOR)などがある
2013/9/25 コンピュータアーキテクチャ
17
論理和、論理積、否定
2013/9/25 コンピュータアーキテクチャ
18
論理和(OR)
論理積(AND)
否定(NOT)
X Y X or Y
0 0 0
0 1 1
1 0 1
1 1 1
真理値表
X Y X or Y
0 0 0
0 1 0
1 0 0
1 1 1
真理値表
X not X
0 1
1 0
真理値表
論理和、論理積、否定
2013/9/25 コンピュータアーキテクチャ
19
否定論理和(NOR)
否定論理積(NAND)
排他的論理和(XOR)
X Y X or Y
0 0 1
0 1 0
1 0 0
1 1 0
真理値表
X Y X or Y
0 0 1
0 1 1
1 0 1
1 1 0
真理値表
真理値表 X0 Y0 X or Y0
0 1 1
1 0 1
1 1 0
シフト演算
• シフト演算の種類 – 論理シフト
• 2進数の桁を左または右に移動する演算 – 論理左シフト
– 論理右シフト – 算術シフト
• 符号ビットについてはシフトの対象としない演算 – 算術左シフト
– 算術右シフト
2013/9/25 コンピュータアーキテクチャ
20
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 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0
左に1ビットシフト
論理回路
2013/9/25 コンピュータアーキテクチャ
21
論理回路とは
演算回路の組み合わせによりさまざまな論理演算を実現する回路 演算回路
論理演算を実現する回路:AND回路、OR回路、NOR回路など
代表例:加算器(半加算器、全加算器)
複数の桁の2つのデータを入力し、その加算の結果を出力する回路
加算器
• 半加算器(Half Adder)
• 1つの桁の加算を行う回路。
2つの入力の和を求める。
• 桁上がり(繰り上がり)が生じる 可能性があるので出力は2つ
– 全加算器(Full Adder)
• 1つの桁の加算を行う回路。
3つの入力の和を求める。
• 下位からの桁上がり(繰り上がり)に 対応した加算器
– 加算器
• 半加算器と全加算器を 組み合わせることで
複数桁の加算を行う加算器を 実現することができる。
2013/9/25 コンピュータアーキテクチャ
22
半加算器
全加算器
nビット全加算器
組合せ回路と順序回路
• 組合せ回路
– これまでやってきた回路のようなもの
• AND、OR、NOT、NAND、NOR、XOR – 入力した値だけで出力結果が決まる回路
• 順序回路
– 出力結果が入力の値だけでは決まらず、回路の内部状態と合わ せて結果が決まる
– 代表例
• フリップフロップ
– RSフリップフロップ
2013/9/25 コンピュータアーキテクチャ
23
RS
フリップフロップ
2013/9/25 コンピュータアーキテクチャ
24
S R Q
0 0 Q
0 1 0
1 0 1
1 1 ×(禁止)
1つ前の 入力の状態が 今回の出力に 関係してくる
本日の到達目標と概要
• 到達目標
– 2進数の表現と論理回路を学ぶ
• 概要 – 基数
– 数値の表現 – 演算精度
– 論理演算とシフト演算
– 加算器・半加算器・全加算器 – 組合せ回路と順序回路
25 2013/9/25 コンピュータアーキテクチャ