CPUについての詳しい説明

最小限のコンピュータ
オルゴールは繰り返しはできない
 チューリングマシン
 テープ(メモリ)を読んで
 テープを進める/戻す
 テープに文字を書き込む
 状態を変える
テープ(メモリ)と状態で何をするか決める
普通のコンピュータの構成
PCの構成
メモリ
CPU
ビデオメモリ
USB
GPU
ディスプレイ
キーボード
マウス
制御マイコンの構成
ポテンショメータ
A/Dコンバータ
アナログモータドライバ
D/Aコンバータ
スイッチ/ソレノイド
パラレルI/O
エンコーダ
PWMモータドライバ
カウンタ
CPU
メモリ
CPUの仕組み
デジタル回路
入力電圧,出力電圧が0Vか電源電圧
(5Vや3.3Vが多い)だけをとる回路
組み合わせ回路
順序回路
CPU
メモリ
組み合わせ回路の構成要素
NOT
回路記号
CMOS回路による実現例
+5V
S
A
P MOS FET(VSG <-2.5VでON)
G
Y
D
D
Y=A
AND
N MOS FET(VSG >2.5VでON)
G
A Y
0 1
1 0
S
0V
+5V
A
Y
B
Y=AB
A
0
1
0
1
B
0
0
1
1
Y
0
0
0
1
A
Y
B
0V
組み合わせ回路の構成要素
OR
+5V
A
Y
B
Y=A+B
A
Y
A
0
1
0
1
B
0
0
1
1
Y
0
1
1
1
B
0V
組み合わせ回路
NOT AND ORで,何でも作れる
Y=AB+CDE
A
B
A
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
B
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
C
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
D
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
E
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Y
0
1
0
0
1
1
1
1
0
1
0
0
0
1
0
0
A
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
B
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
C
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
D
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
E
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Y
0
1
0
0
0
1
0
0
0
1
0
0
0
1
0
0
Y
C
D
E
A
B
C
D
E
Y
論理代数
変数は,1か0のどちらか
Y=AB+CDE
・は and
1・1=1, 1・0=0, 0・1=0, 0・0=0
+は or
0+0=0, 1+0=1, 0+1=1, 1+1=1
 は否定(逆)
0=1, 1=0
足し算の回路
デジタル回路で整数を表す
y=a+b
A1
A2
B1
B2
(a,bは0~3 yは0~6をとる)
整数aの値をA1とA2の電圧で表す
y
a A2 A1
b B2 B1
0
0 0 0
0 0 0
1
1 0 1
1 0 1
2
2 1 0
2 1 0
3
3 1 1
3 1 1
4
5
6
7
a A2 A1 b B2 B1 y Y3 Y2 Y1
0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 1 0 0 1
2 1 0 0 0 0 2 0 1 0
3 1 1 0 0 0 3 0 1 1
0 0 0 1 0 1 1 0 0 1
1 0 1 1 0 1 2 0 1 0
2 1 0 1 0 1 3 0 1 1
3 1 1 1 0 1 4 1 0 0
2進数になってる
Y3
0
0
0
0
1
1
1
1
Y2
0
0
1
1
0
0
1
1
a
0
1
2
3
0
1
2
3
Y1
0
1
0
1
0
1
0
1
A2
0
0
1
1
0
0
1
1
A1
0
1
0
1
0
1
0
1
b
2
2
2
2
3
3
3
3
B2
1
1
1
1
1
1
1
1
Y1
Y2
Y3
B1
0
0
0
0
1
1
1
1
y
2
3
4
5
3
4
5
6
Y3
0
0
1
1
0
1
1
1
Y2
1
1
0
0
1
0
0
1
Y1
0
1
0
1
1
0
1
0
2進数
10進数 0,1,2,3,4,5,6,7,8,9 の10文字と桁で整数を
表記
1, 3, 10
1の位
10の位
2進数 0,1の2文字と桁で整数を表記
1, 11, 1010
1の位
2の位
4の位
8の位
組み合わせ回路のまとめ
入力電圧を与えると対応した出力が得られる
入力と出力の表が作れる.
どんな表でも回路で実現できる.
整数を電圧の組み合わせで表せる
2進数の一つの桁を1つの信号で表す
信号の数を増やせば,大きな整数も表せる
足し算などの計算も,組み合わせ回路で実現できる
順序回路の構成要素
フリップフロップ(レジスタ)
S
Q
Q
R
=
S
0
0
1
1
R
0
1
0
1
Q
?
1
0
記憶
Q
?
0
1
記憶
クロック
1
0
順序回路はクロックに同期して動いている。
例えば、
クロックが1のときに入力や前状態を読み込み、
クロックが0のときに一斉に次状態へ遷移する。
エッジトリガのフリップフロップ
11000
D
CLK
10111
Q
Q
11101
Clock
01010
Clock
D
D
10000
01111
Q
Q
Q
順序回路
4
クロックが入るたびに,
フリップフロップの状態
(Qの値)が変わる
D1 Q1
CLK
D2 Q2
CLK
組み合わ
せ回路
D3 Q3
CLK
D4 Q4
CLK
4つのレジスタ
クロック
4bit(ビット)のレジスタ
組み合わせ回路を変えると,
いろいろなものが作れる
4
4ビット
のレジスタ
組み合わせ
回路
メモリとCPU
メモリ
アドレス(レジスタの選択)
32ビット
32ビット
32ビット
32ビット
のレジスタ
のレジスタ
のレジスタ
のレジスタ
組み合わ
せ回路
Read
Write
データ(値の出し入れ)
CPUとメモリ
レジスタ
アドレス
メモリ
データ
レジスタ
(カウンタ)
組み合わせ回路
レジスタ
レジスタ
レジスタ
レジスタ
CPUの動作
CPUの動作例
レジスタ(IR)
レジスタ(PC)
レジスタ
(カウンタ)
アドレス
メモリ
データ
組み合わせ回路
レジスタ
レジスタ
レジスタ
レジスタ(計算用
r0)
0: レジスタPCの値をひとつ進める
1: メモリの(レジスタPCの値のアドレス)からプログラムを読みだして,レジスタIRに読みだす.
2: メモリのデータを汎用レジスタに読みだす.動作(どこからどこへ)はIRの値による.
3: 組み合わせ回路がいくつかのレジスタの値を演算(+-*/など)して,
結果を別のレジスタに入れる. 動作(演算の種類やレジスタ)はIRの値による.
4: メモリにレジスタ(計算用)の値を書き込む.動作(度のレジスタをどこへ)はIRによる.
レジスタPC:プログラムカウンタ
レジスタIR:インストラクション(命令)レジスタ
カウンタの値
IRに読みだすメモリ上のデータをプログラムと呼ぶ
CPUができること
メモリ中のプログラムに従って
メモリ中のデータを計算して書き換える
プログラムの別の場所に移動する
(PCに値を書き込んで実現)
計算結果に応じて移動先を決める
(計算結果をPCに書き込む...など)
メモリを書き換えることしかできない?
CPUとインタフェース
アドレス
データ
メモリ
アドレス
データ
ビデオメモリ
GPU
ディスプレイ
チップ
セレクト
パラレルI/O
CPU
データ
シリアルI/O
データ
D/A
データ
A/D
データ
カウンタ/PWM
データ
メモリの代わりにいろいろ付ける
プログラムとは
コンピュータの動作を決める手順書
プログラム
レジスタ(IR)
レジスタ(PC)
レジスタ
組み合わせ回路
(カウンタ)
レジスタ
レジスタ
レジスタ
レジスタ(計算用)
アドレス
メモリ
データ
0: レジスタPCの値をひとつ進める
1: メモリの(レジスタPCの値のアドレス)からプログラムを読みだして,レジスタIRに読みだす.
2: メモリのデータを汎用レジスタに読みだす.動作(どこからどこへ)はIRの値による.
3: 組み合わせ回路がいくつかのレジスタの値を演算(+-*/など)して,
結果を別のレジスタに入れる. 動作(演算の種類やレジスタ)はIRの値による.
4: メモリにレジスタ(計算用)の値を書き込む.動作(どのレジスタをどこへ)はIRによる.
 レジスタ(IR)に入れる値の並び
 メモリに並べておく
 普段は順番に読みだす
 時々,戻ったり,飛ばしたりもする