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

コンピュータアーキテクチャⅠ
コンピュータアーキテクチャとは?
辞書を引くと…,
「アーキテクチャ(architecture)」:
1. 建築術, 2. 建築様式, 3. 建物, 4. 構造, 構成
コンピュータアーキテクチャとは,
「コンピュータの論理的構造」のこと
コンピュータとはどのような機械か?
「あらかじめ指示されたことを正確に高速に行う機械」
= プログラム(program:ある物事の進行状態についての
順序・組み合わせ・筋などのこと。及び、それを書いたもの。 )
コンピュータプログラム= コンピュータに一定の仕事を行わせるための
コンピュータ固有の命令(instruction)の集まり
「命令」とは ?
コンピュータの内部状態を変更するための指示
z データを持ってこい
z データを保存しろ
z 足算しろ,引算しろ,掛算しろ,...
z 二つの数が等しいかどうか判断しろ
z どっちの数が大きいか判断しろ
z ...
1
電卓とコンピュータ : 何が違うか
z 電卓(calculator)
– データ入力と計算手順を人間が操作する
→ 計算速度の限界
z コンピュータ(computer)
あらかじめデータと計算の手順(命令)を記憶装置(メモリ)
に格納しておき,命令を順番に一つずつ取り出して,命令
を実行する。
プログラム内蔵(stored program)方式 / Von Neumann方式
世界最初のプログラム内蔵方式コンピュータ
: EDSAC(ケンブリッジ大学,1949年)
パソコンの中身
マザーボード
プロセッサ(CPU)
主記憶(メモリ)
2
コンピュータの構成要素
プロセッサ
(CPU)
メモリバス
主記憶
(メモリ)
入出力バス
入力装置
出力装置
キーボード
マウス
ディスプレイ
プリンタ
補助記憶装置
ハードディスク
フロッピーディスク
CD、DVD
z プロセッサ : CPU(Central Processing Unit,中央処理装置)とも呼ぶ
z 主記憶 : メインメモリあるいは単にメモリとも呼ぶ
z バス : 信号線の束
プロセッサ(processor:処理装置)
z 演算や実行制御(条件判断,繰返しなど)を行う
z プロセッサには命令(演算命令,条件判断命令など)が定義されている
– プログラムは命令を組み合わせて作られる
– 命令は0と1の組合せによって表現される(機械語:Machine Language)
プロセッサLSI
Large Scale Integrated circuit
3
プロセッサの命令
z 主記憶とレジスタ間のデータの移動命令
z レジスタ同士の演算(算術演算,論理演算)命令
z 条件判断(演算結果の比較)命令
z 制御の移行命令(ジャンプ命令,サブルーチン呼出し)
z その他
プロセッサの命令はきわめて単純な動作しか行わない!
そのような単純な動作の命令を組み合わせて,一定の動作を
させるのが「プログラム / ソフトウェア」。
※商用のソフトウェアは何百万,何千万命令からなる。
メモリ(memory)
¾ 2進数(0と1)で表現されたプログラム(機械語)やデータを記憶する素子
記憶場所の指定
番地
パッケージ
端子
メモリチップ
メモリIC
0
01001010
1
11010111
2
10001111
3
00110110
コネクタ
(メモリスロットに接続)
…
…
PSD
メモリ(1Gbyte)
999999998
10011001
999999999
01101010
命令 / データがメモリに
格納される
4
コンピュータの構成要素
演算データを保持
実行する命令の
番地を保持
プロセッサ
メモリ(1GByte)
0番地
R0
R1
R2
R3
1番地
レジスタ
プログラムカウンタ(PC)
命令,データ
2番地
命令レジスタ(IR)
命令解読器(ID)
ALU
PCの指す番地から
読み出した命令を
保持
計算を実行
命令レジスタの
内容を解読
999999999
番地
プログラムの命令と
データを格納
PC : Program Counter
IR : Instruction Register
ALU : Arithmetic Logical Unit
ID : Instruction Decoder
コンピュータの動作
z プロセッサはメモリに格納された「命令」を順番に実行していく
①
メモリから命令を読み出してくる。 【命令読出し(Fetch)】
●
何番地から命令を読み出すか?
⇒ プロセッサ内部の「プログラムカウンタ(PC)」により指定する
次の命令の実行に備えてPCの値を増やす。
●
② 読み出した命令を解読する。 【命令解読(Decode)】
③ 命令を実行する(計算を行う)。【命令実行(Execute)】
④ 計算結果を格納する。【結果格納(Store)】
命令とデータ
データ
(計算結果)
5
コンピュータの動作
主記憶(1GByte)
プロセッサ
0番地
R0
R1
R2
R3
1番地
レジスタ
プログラムカウンタ(PC)
2番地
命令,
データ
命令レジスタ(IR)
命令解読器(ID)
ALU
230-1=
1073741823
番地
1.命令の読出し:PCが指す番地の内容を主記
憶から命令レジスタへ読み出す。同時に,次
命令の読出しに備えてPCの値を更新
2.命令の解読:命令レジスタの内容を解読
3.命令の実行:解読結果に従って実行
4.格納:実行結果をレジスタに格納
コンピュータの動作(1-1)
プロセッサ
R0
R1
R2
R3
実行する命令
の番地
主記憶
PC
レジスタ
100
IR
add R0, R1, R2
add R0, R1, R2
100番地
sub R0, R2, R0
101番地
sw
102番地
R0, 32(R3)
ID
PCの指す番地から
読み出した命令を
保持
ALU
1.命令の読出し:PCが指す番地の内容を主記
憶から命令レジスタへ読み出す。同時に,次
命令の読出しに備えてPCの値を更新
2.命令の解読:命令レジスタの内容を解読
3.命令の実行:解読結果に従って実行
4.格納:実行結果をレジスタに格納
6
メモリ内の命令は実際には2進数
(0と1の並び)によって表現される
0110010100001000
1101101111010111
0000100100101010
・・・
コンピュータの動作(1-2)
プロセッサ
R0
R1
R2
R3
次に実行する命
令の読出しに備
えてPCを更新
PC
レジスタ
101
IR
add R0, R1, R2
主記憶
add R0, R1, R2
100番地
sub R0, R2, R0
101番地
sw
102番地
R0, 32(R3)
ID
ALU
1.命令の読出し:PCが指す番地の内容を主記
憶から命令レジスタへ読み出す。同時に,次
命令の読出しに備えてPCの値を更新する。
2.命令の解読:命令レジスタの内容を解読
3.命令の実行:解読結果に従って実行
4.格納:実行結果をレジスタに格納
コンピュータの動作(2)
プロセッサ
R0
R1
R2
R3
主記憶
PC
レジスタ
101
IR
add R0, R1, R2
add R0, R1, R2
100番地
sub R0, R2, R0
101番地
sw R0, 32(R3)
102番地
ID
命令解読
ALU
1.命令の読出し:PCが指す番地の内容を主記
憶から命令レジスタへ読み出す。同時に,次
命令の読出しに備えてPCの値を更新する。
2.命令の解読:命令レジスタの内容を解読する。
3.命令の実行:解読結果に従って実行
4.格納:実行結果をレジスタに格納
7
取得した命令を解読
(R1とR2を加算し,R0へ格納)
コンピュータの動作(3)
プロセッサ
R0
R1
R2
R3
主記憶
PC
レジスタ
101
IR
add $R0, $R1, $R2
add R0, R1, R2
100番地
sub R0, R2, R0
101番地
sw R0, 32(R3)
102番地
ID
命令解読
加算
ALU
1.命令の読出し:PCが指す番地の内容を主記
憶から命令レジスタへ読み出す。同時に,次
命令の読出しに備えてPCの値を更新する。
2.命令の解読:命令レジスタの内容を解読する。
3.命令の実行:解読結果に従って実行する。
4.格納:実行結果をレジスタに格納
コンピュータの動作(4)
プロセッサ
R0
R1
R2
R3
主記憶
PC
レジスタ
101
IR
add $R0, $R1, $R2
add R0, R1, R2
100番地
sub R0, R2, R0
101番地
sw R0, 32(R3)
102番地
ID
命令解読
加算
ALU
1.命令の読出し:PCが指す番地の内容を主記
憶から命令レジスタへ読み出す。同時に,次
命令の読出しに備えてPCの値を更新する。
2.命令の解読:命令レジスタの内容を解読する。
3.命令の実行:解読結果に従って実行する。
4.格納:実行結果をレジスタに格納する。
8
以降,1~4の繰返し・・・
プロセッサの時間動作を決めるもの
=動作周波数(クロック周波数)
周波数:1秒間の繰返し回数(単位: Hz(ヘルツ))
時間
クロック信号
(コンピュータの
メトロノーム)
サイクル時間
1秒間に10億回の繰返し
→ 10億Hz=109Hz=1GHz
サイクル時間=
→
1
動作周波数
サイクル時間
1
=10-9=1ns(ナノセカンド)
109
1秒間に 5億回の繰返し
1
→ 5億Hz=500×106Hz=500MHz → 500×106 =0.002×10-6=2×10-9
=2ns(ナノセカンド)
1ns という時間 : 光が約33cm進む距離(光の速度30万km/秒)
量と単位の表し方
接頭語
(補助単位)
単位例
記号
フェムト
f
1兆分の1
ピコ
p
10-9
10億分の1
ナノ
n
10-6
100万分の1
マイクロ
μ
μs
10-3
1000分の1
ミリ
m
ms
10-15
10-12
100
=1
ps
ns
bit
Byte
Hz
103
1000
(210)
キロ
k
kbit
kByte
kHz
106
100万
(220)
メガ
M
Mbit
MByte
MHz
109
10億
(230)
ギガ
G
Gbit
GByte
GHz
1兆
(240)
テラ
T
Tbit
TByte
THz
1000兆
(250)
ペタ
P
1012
1015
9
s
動作周波数(Hz),時間(s)を表す単位
(コンピュータの動作速度の表現)
: 1KHz=1x103Hz(1000ヘルツ)
: 1MHz=1x106Hz (100万ヘルツ)
: 1GHz=1x109Hz (10億ヘルツ)
: 1THz=1x1012Hz (1兆ヘルツ)
•
•
•
•
KHz(キロヘルツ)
MHz(メガヘルツ)
GHz(ギガヘルツ)
THz(テラヘルツ)
•
•
•
•
ミリセカンド(ms) :
マイクロセカンド(μs):
ナノセカンド(ns) :
ピコセカンド(ps) :
1ms=1x10-3秒(1000分の1秒)
1μs=1x10-6秒(100万分の1秒)
1ns=1x10-9秒(10億分の1秒)
1ps=1x10-12秒(1兆分の1秒)
プロセッサの時間動作を決めるもの
=動作周波数(クロック周波数)
1命令の実行サイクル
時刻 1
時刻 2
時刻 3
時刻 4
命令実行
結果格納
クロック信号
(コンピュータの
メトロノーム)
命令読出し
命令解読
500MHz動作
の場合
2ns
2ns
1GHz動作
の場合
1ns
2ns
2ns
8ns(=8×10-9 秒)
= 1命令が8nsで実行できる
1ns
1ns
1ns
4ns(=4×10-9 秒)
= 1命令が4nsで実行できる
10
コンピュータの何が凄いのか
コンピュータの命令はきわめて単純な動作しか実行できない。
しかし,個々の動作はもの凄く高速に実行できる。
ex. 動作周波数1GHzのコンピュータ:4nsに1命令=1sに2.5億命令
(秒)
単純な動作でも何千,何万,何十万,何百万… と組み合わせれば,
「たくさんの便利なこと」ができる。
「たくさんの便利なこと」:文書処理,表計算,コンピュータ通信,
機器(家電品,自動車など)の制御,…
11