計算機アーキテクチャ
第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
© Copyright 2025