計算機アーキテクチャ

計算機アーキテクチャ
第9回 中間テストの結果報告
主記憶装置とレジスタ
2014年 6月16日
電気情報工学科
田島 孝治
第9回 計算機アーキテクチャ
1
授業スケジュール(前期)
回
日付
タイトル
回
日付
タイトル
1
4/7
コンピュータ技術の歴史と
コンピュータアーキテクチャ
10
6/16
主記憶装置とレジスタ
11
6/20
命令実行の流れ
12
6/30
命令形式とアセンブリ言語
13
7/7
命令セット
14
7/14
サブルーチンの実現
15
7/28
PCSpimによるアセンブリ言語
プログラム
8/4?
期末試験(日程は仮)
9/29?
フォローアップ(日程は仮)
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
中間試験(9:00-9:50)
16
※5/5はこどもの日、7/21は海の日のため休講
※授業変更:6/23 1時限→6/20 3時限
第9回 計算機アーキテクチャ
2
今日の授業の目的
中間テストの回答(前半部分の復習)
命令セットアーキテクチャの学習に向けて
メモリとレジスタの概念を復習する

中間試験の結果をまとめる



問題の解説を行う
レジスタの種類と使い方について知る
アーキテクチャによるレジスタ名の違いを知る
第9回 計算機アーキテクチャ
3
4
中間試験の結果について
100.00
90.00
得点率
80.00
70.00
60.00
50.00
40.00
30.00
問1
問2
問3
問4
問番号


問5
平均点74.73点
最高得点者100点(2名)
問6
問7
5
総括

全体としてみてみると・・・



得点率が低かった問題の特徴
問3:穴埋め問題


意外とできていなかった
問5(プログラムの実行問題):得点率が極端に低い




平均点はまぁまぁが・・・80点台が少ないのが気になる
部分点を与えるようにもう少し問題を工夫すべきだった
例題から少し変えた部分の混乱が多かった
最後の答え(8)はほとんどできていた
問7:


除算があまりできていなかった
掛け算とビットシフトの方法を間違えている人もいた
第9回 計算機アーキテクチャ
主記憶装置とレジスタ

レジスタ



フリップフロップで作られた高速な記憶装置
ALU(計算装置)からのアクセスに使われる
大量のデータを保存するには容量不足



X86アーキテクチャ:32bitレジスタを16個保持
汎用レジスタは8個
主記憶装置


いわゆる「メモリ」
読み出し命令と書き込み命令を実行することで
レジスタの値を読み書きできる

読みこみ、書き込みには実行時間が発生する
第9回 計算機アーキテクチャ
6
メモリの種類と分類

ROM(Read Only Memory)

マスクROM:


PROM(programmable ROM)




配線パターンで情報を記録したLSI
ユーザーが何らかの方法で書き込めるROM
UVEPROM、EEPROM、フラッシュメモリ
不揮発性(電源を切っても値が消えない)ものが多い
RAM(Random Access Memory)


SRAM(static RAM):FFで構成されたRAM
DRAM(dynamic RAM):コンデンサで構成されたRAM


普段使っているコンピュータのメモリと言えばSDRAM
定期的な充電(リフレッシュ)が必要
第9回 計算機アーキテクチャ
7
8
レジスタ


用途に応じて名前が異なる
汎用レジスタ




自由に使えるレジスタ
お約束的な使い方はあるが、気にしないでも使える
命令によっては計算結果は特定のレジスタにしか
入れられない場合がある
専用レジスタ



特定の用途に特化されたレジスタ
メモリや計算機の状態を保持するために使われる
何種類かあるので個別に紹介する
第9回 計算機アーキテクチャ
9
汎用レジスタの名前とアクセス方法

X86アーキテクチャの場合
レジスタの名前
アクセス方法
使用用途
A
EAX/AX/AH/AL
算術演算結果の格納
B
EBX/BX/BH/BL
ベースアドレスの格納
C
ECX/CX/CH/CL
カウント結果の格納
D
EDX/DX/DH/DL
データの格納
SP
ESP/SP
スタックポインタの格納
BP
EBP/BP
スタックベースポインタの格納
SI
ESI/SI
ストリーム操作の入力元を表す
DI
EDI/DI
ストリーム操作の出力先を表す
E**とアクセスする場合には32bitアクセス
*H/*Lとアクセスする場合には上位または下位8bitにアクセス
第9回 計算機アーキテクチャ
x86アーキテクチャの専用レジスタ

セグメントレジスタ




15
30
14
NT
次に実行する命令のアドレスを保持するレジスタ
フラグレジスタ

31
メモリの利用方法をまとめた6種類のレジスタ
6個のレジスタの値によってスタック、コード、データ、
その他の領域を分割している
命令ポインタ


10
29
計算結果やプロセッサの状態を表すレジスタ
1bitごとに意味がある
28
13
12
IOPL

27
26
25
24
23
22
11
10
9
8
7
6
OF
DF
IF
TF
SF
ZF
21
20
18
17
16
ID
VIP VIF AC
VM
RF
1
0
5
CF:キャリーフラグ、ZF:ゼロフラグ 等
4
AF
19
3
2
PF
CF
11
(参考)実際のコードを見てみよう

C言語のコード
int main() {
int x = 0;
x = x+1;
return 0;
}

命令
アセンブリコード
call
___main
movl
$0, 12(%esp)
incl
12(%esp)
movl
$0, %eax
leave
レジスタ
12
(参考)実際のコードを見てみよう

C言語のコード
int main() {
int x = 0;
x = x+2;
return 0;
}

アセンブリコード
call
___main
movl
$0, 12(%esp)
addl
$2, 12(%esp)
movl
$0, %eax
leave
レジスタとアーキテクチャ


レジスタや命令の種類は計算機のアーキテクチャ
によって異なる
代表的なアーキテクチャ

x86アーキテクチャ



CISC(Complex Instruction Set Computer)を設計思想に持つ
インテルのマルチプロセッサ4004が原型
MIPSアーキテクチャ





13
RISC(Reduced Instruction Set Computer)を設計思想に持つ
MIPSコンピュータシステムズが開発したアーキテクチャ
Microprocessor without Interlocked Pipeline Stagesの略
組み込み系ハードウェアにおけるシェアが高い
次回の課題はアーキテクチャの調査の予定です
第9回 計算機アーキテクチャ
MIPSアーキテクチャのレジスタ

32個のレジスタがある

今後はこのレジスタをプログラムで使う予定
レジスタ名
共通名
使用用途
$0
Zero
常に0を保持するレジスタ
$1
at
アセンブラ用一時レジスタ(利用不可)
$2,$3
v0,v1
関数の戻り値を格納
$4,$5,$6,$7
a0 - a3
関数の引数を格納
$8,…,$15,$24,$25
t0 - t9
一次変数(関数呼び出し時に破棄)
$16,…,$23,$30
s0 - s8
自由な変数(関数呼び出し時に保持)
$26,$27
k0 – k1 OSカーネルの戻り値を格納
$28
gp
グローバルポインタを格納
$29
sp
スタックポインタを格納
$31
ra
関数から戻る際のアドレスを格納
第9回 計算機アーキテクチャ
14