1
電子情報工学基礎
第1回
コンピュータの歴史とアーキテクチャの基礎
コンピュータとは
2
Compute: 計算する
Computer:電子計算機 (元々は計算をする人を指す)
紀元前3000年頃古代バビロニアで数字が誕生,十進法が定められる.
3
計算する機械• 算盤,Abacus
• 1617 年にネピアによる対数の理論,計算尺の原型の発明
• 歯車式のパスカリーヌ計算機
• ライプニッツの横型ドラム方式の回転計算機
4
パスカリーヌ計算機
国立博物館ホームページより
パスカル(B.Pascal)が製作した現存するものとしては世界最古の計算機械。数字の書かれたダイヤルを回すことによって、中のピン歯車が回転し加算する。歯止め機構をうまく使い桁繰り上げを行う。引き算は補数を使うことにより加算と同じ手順で行えるように工夫されている。
5
ライプニッツの計算機械ライプニッツの計算機では足し算はピン歯車を利用し,かけ算は桁くり上げを助ける動く台を使う.装置下部の円筒には1から9までの数字に該当する長さのちがう歯形がきざまれている.円筒をクランクで回すと円筒の上の小さな歯車が回り,足し算が行われる.
国立博物館ホームページより
ライプニッツ
6
1646~1716年 ドイツ哲学・数学・科学者
微積分の研究者としてよく知られているが,元々は法理学の専門家
7
コンピュータを生み出した概念・理論
• バベッジ:「コンピュータの父」– コンピュータの原形となった階差機関,解析機関を発明.その処理装置や記憶装置といった概念を提言した.
– 現在のコンピュータの基本構造を予言.
・ブール:「ブール代数学」– 論理学と代数学の結合
• チューリング:「仮想論理機械(チューリングマシン) 」– 現在の計算機の理論的な原型
• ノイマン:「ノイマン型コンピュータ」– プログラム内蔵方式(ストアド・プログラム方式)
階差機関とは
8
当時の計算に数表は不可欠
正確な数表を作りたい
Xの自乗数列(X2の解)1 4 9 16 25 36 49
の差を考えると、3 5 7 9 11 13 ← 1次階差
さらにこの差(2次階差)を考えて見ると、2 2 2 2 2
階差機関
対数や三角関数の数表の作製に使用された.
解析機関とは
9
解析機関バベッジ自身が組み立てた解析機関の一部の試作品。サイエンスミュージアム(ロンドン)
未完成に終わったが,現在のコンピュータの基本構成となった.
解析機関の記憶装置
10
ブール代数
• 0を偽(false), 1を真(true)と定義する
• 論理和(OR, 又は)
0+0=0, 1+0=1
• 論理積 (AND, 且つ)
1・1=1, 1・0=0
• 否定(NOT)
• 真理値表
A B A+B A・B
0 0 ? ?
0 1 ? ?
1 0 ? ?
1 1 ? ?
A B A+B A・B
0 0 0 0
0 1 1 0
1 0 1 0
1 1 1 1
11
チューリングマシン
• 1937年チューリングによる仮想論理機械(チューリングマシン)
• 構成:マス目で分割された一本のテープと,テープにデータを書き込み・読み出しする一個のヘッドから成る.
(あくまで仮想機械)
• あらかじめ設定された幾つかの「状態」を持っており,その「状態」とヘッドから読み出したデータの組み合わせによって,「ヘッドをテープ上で一マス移動させる」「テープのヘッドのあるマスにデータを書き込む」「状態」を変更する」のいずれかの動作を行なう.
• 決まった一定の手順によって常に同一の結果をもたらすこと,普遍的な問題に使えること,データとプログラムには本質的な差がないことを証明.
チューリングマシン動作原理
12
13
ストアドプログラム方式
プログラム内蔵方式・ノイマン型コンピュータ
1. プログラムをデータとして記憶して
2. これを逐次読み出して実行する
特徴
• プログラムとデータに原理的に区別がない
• 柔軟なソフトウェアという概念の誕生
14
汎用電子計算機の誕生へ• シャノン
– 電気リレーを用いたブール代数操作についての考案
• 電子汎用計算機ENIAC(Electronic Numerical Integrator and Calculator)
– 十進法・歯車計算機の電子化・最初の電子計算機
• EDVACプロジェクト(Electronic Discrete Variable Arithmetic
Computer)
– 2 進数・逐次実行・メモリ内蔵方式
– 現在のコンピュータの原型
• EDSAC(Electronic Delay
Storage Automatic Calculator)
• Baby Mark-I
15
ENIAC
(Electronic Numerical Integrator and Calculator)
• 真空管による電子計算機
• 1946 年にペンシルバニア大学,
エッカートとモークリ
• 弾道計算用
• 真空管数約18000 本、重量30 トン、
• 消費電力100-170kW
• ワイヤー式プログラム
(ノイマン型ではない)
http://lawton.com/galleries/computers/eniac/eniac01.html
16
コンピュータのアーキテクチャ
アーキテクチャ:
コンピュータの設計思想や設計概念
ハードウェアとソフトウェア比率
ハードウェア(Hardware)
物質的な機構を有する。
実機として動作するために必要
ソフトウェア(Software)
ストアドプログラム方式による比率の増大
ハードウェアの変更なしに動作を変えることができる
17
トレードオフ点
• ハードウェア・ソフトウェア両者の境界をどこに置くか?– 電卓に例えると…..
• +-キーしかない電卓
• 関数キーがある電卓
電子回路
計算式
SOFTWARE HARDWARE
計算手順
四則演算
加減算
加算
計算問題
二進数
関数演算
SOFTWARE HARDWARE
トレードオフ点
トレードオフ点
18
アーキテクチャのトレードオフ問題
• トレードオフ点をどこに置くか?
• ソフトウェアを大きく- 効率的な計算プログラム(無駄な計算をしない)
• ハードウェアを大きく– 一般に高速になる(初期のコンピュータ高速化)
– ソフトウェア開発の簡略化
あらゆる機器開発において
ソフトウェア
設計・動作シミュレーション
ハードウェア
試作・製品作製
19
⇒ コンピュータの発展やソフトウェアの発展(回路シミュレータなど)でトレードオフ点はソフトウェア側に
20
セマンティックギャップ
1. 問題のアルゴリズム化
2. アルゴリズムのプログラムによる実現
3. プログラムの機械コード化
4. ハードウェアによる機械コードの実行
•広義のセマンティックギャップ
•狭義のセマンティックギャップ
広義のセマン
ティックギャップ
高度で複雑
単純化された数多くの行程
プログラマが解決
ソフトウェアが解決
コンピュータアーキテクチャが解決
コンピュータで問題を解決する場合の手続き
狭義のセマンティックギャップ
21
ビット・バイト
• 電圧の高低、電荷の有無などで0、1を示す。
• ビット (bit)
– 一つの0, 1の組み合わせで表されるデータ量
• バイト(byte), ワード(word)
– 1byte=8bit (28=256通り), 1word=2byte
– 1024byte=1kB, 10242byte=1MB
• 1bitを一桁で表す2進数(binary)
– 1byte = 00000000b~11111111b
• 4bitを一桁で示す16進数(hexadecimal)
– 0h~Fh
– 1byteは 00hからFFh
• 3bitを一桁で示す8進数表記(octal)
22
2 進数とビットパターン
B7 B6 B5 B4 B3 B2 B1 B0
LSB
MSB
7
0
2i
i
iBA1バイトで0~255の正数Aを記憶しているとすると、
(10進数に変換)
B0 :最小桁ビット(LSB least significant bit )
B7 :最上位ビット(MSB most significant bit)
23
10進数・2進数変換
• 2進数から10進数に
i
i
ibd 2
181
141632128
21202120
2121202110110101
0123
4567
b
• 10進数から2進数に
181= 2で割ると90 余り・・・・ 1
90 2で割ると45 余り・・・・ 0
45 2で割ると22 余り・・・・ 1
22 2で割ると11 余り・・・・ 0
11 2で割ると5 余り・・・・ 1
5 2で割ると2 余り・・・・ 1
2 2で割ると1 余り・・・・ 0
1 2で割ると0 余り・・・・ 1
10110101b
24
16進数
0000b 0001b 0010b 0011b 0100b 0101b 0110b 0111b
0h 1h 2h 3h 4h 5h 6h 7h
0 1 2 3 4 5 6 7
1000b 1001b 1010b 1011b 1100b 1101b 1110b 1111b
8h 9h Ah Bh Ch Dh Eh Fh
8 9 10 11 12 13 14 15
4ビット
2進数
16進数
bをつける
hをつける(0x)の場合もある。
10進数
25
8進数
000b 001b 010b 011b 100b 101b 110b 111b
0h 1h 2h 3h 4h 5h 6h 7h
&O0 &O1 &O2 &O3 &O4 &O5 &O6 &O7
&Oをつける場合が多い
8進数
3ビット
26
2 進数表記とデジタル演算
• 10 進数の数値計算を手動で行なう場合に用いる手順(アルゴリズム)はn 進数においても使える。
• 数値の二進化→論理演算処理で計算が可能となる。
• 組み合わせ論理回路
• 順序回路
27
半加算器 HA(Half Adder)
半加算器:・1ビットと1ビットの加算を行う回路・入力は2つ、出力はそのビット出力(Sum)と桁上り(Carry)の2つ
・下の桁の桁上がりは考慮していない・ 1桁目は1個の半加算器だけでもよい
回路図
真理値表
XOR:排他的論理和 (2つの入力が異なる時出力が1になる)
xi yi si ci+1
0 0 ? ?
0 1 ? ?
1 0 ? ?
1 1 ? ?
yi
xi
si
ci+1
xi
yi+
sici+1xi yi si ci+1
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
yi
xi
si
ci+1HA=
AND
28
全加算器 FA(Full Adder)
全加算器=2つの半加算器+1つのOR回路
xi
yi
ci
si
ci+1
si
ci+1
xi
yi
ci
HAHA
xi
yi
ci
si
ci+1FA
OR
全加算器 FA
29
ci xi yi si ci+1
0 0 0 ? ?
0 0 1 ? ?
0 1 0 ? ?
0 1 1 ? ?
1 0 0 ? ?
1 0 1 ? ?
1 1 0 ? ?
1 1 1 ? ?
下の桁からの桁上がりがない場合
下の桁からの桁上がりがある場合
ci xi yi si ci+1
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
si
ci+1
xi
yi
ci
HAHA
30
まとめ
• コンピュータの歴史
• コンピュータのアーキテクチャ
(設計思想や設計概念)
• ビットとバイト
• 2進数、10進数、16進数、8進数
• デジタル演算(半加算器、全加算器)
31
演習
① 10進数19を2進数で表せ.
② 2進数1101bを10進数で表せ.
③ 10進数1000を16進数で表せ.