...

コンピュータアーキテクチャ(5) 今日の話題 復習・確認 復習・確認

by user

on
Category: Documents
11

views

Report

Comments

Transcript

コンピュータアーキテクチャ(5) 今日の話題 復習・確認 復習・確認
今日の話題
„
„
コンピュータアーキテクチャ(5)
„
今までの復習
アドレッシング(教3.2)
命令セットアーキテクチャ
„
„
山内長承
命令セット(どんな命令をそろえるか)(教3.1.3)
オペランド(2/1/0/3オペランド)(教3.1.2)
ar_05
復習・確認
分野の位置付け
アプリ
ケーション
システムソフト
(オペレーティング
システム)
復習・確認
システム構成と
命令実行の仕組
CPU
(中央処理装置)
(プロセッサ)
メモリ
(記憶装置)
読出し
(フェッチ)
制御部
プログラム
解読
(デコード)
読出し
解釈
実行
制御信号
論理回路
半導体・
トランジスタ
演算部
命令
命令
命令
命令
データ
ar_05
実行
(エクゼキュート)
次の命令へ
PC←PC+1
レジスタ
ALU
プログラム内蔵と
ノイマン型
命令の実行サイクル
入出力
ハードウェア
アーキテクチャ
502
503
„
プログラム内蔵
„
„
オペランド
読出し
結果の
書込み
„
主記憶中にプログラム
取替え可能 ⇒ 万能箱
ノイマン型(教p12)
„
„
„
プログラム内蔵
逐次実行
(単一メモリ)
ar_05
504
復習・確認
命令の例 ~ COMET II
16ビット
命令のアドレス
命令レジスタ
CPU
デコーダ
OPコード
オペランド
オペランド
のアドレス
ALU
GR7
汎用レジスタ
GR0
R-Rタイプ
今日の話題1 アドレッシング
命令
メモリ(
主記憶)
プログラム
カウンタ
OPコード r1
r2
r1 ← (r1) OP (r2)
汎用レジスタr1, r2間で計算
R-Mタイプ
OPコード r
x
adr
r ← (r) OP (実効アドレス)
レジスタrとメモリadr間で計算
ar_05
505
アドレッシングの種類 (直接)
アドレッシング (教3.2)
„
„
„
„
„
オペランドの指定法
命令中の adr 欄に書いてあるアドレスを
そのまま用いるだけ ではない
OP
„
„
234
もう少し工夫がされている
有効アドレス(教科書)(=実効アドレス)
„
直接アドレッシング = adrの値をそのまま
LD GR3, 234 ⇒ 234番地の内容をLD
ここをアクセス
(基本情報資料では実効アドレス、同じもの)
adrを加工してくれる ⇒ 役に立つときがある
どのように ⇒ 次ページ
大体どのCPUでも同じ(あったり無かったり)
ar_05
„
507
234番地
実効アドレスは adr の値そのまま
ar_05
508
直接アドレッシングをどう使うか
„
„
変数(や定数)を置く
例: y = x + 3;
変数 x, y, 定数 3 を
メモリ上に置く
(アドレスが決まる)
LD
GR3,44
ADDA GR3,43
ST
GR3,45
アドレッシングの種類 (間接)
„
OP
576
ここをアクセス
xをGR3に持ってくる
定数3をGR3に足す
GR3をyに格納する
„
509
GR5
„
523
„
„
234
+
757
567
567番地
7931
ar_05
(注意)COMETには間接アドレッシングは無い
757番地
配列の要素を指定する
例: A[i]
配列A[10]をメモリ上に確保
iの値が実行中に3
Aの先頭を50番地にする
A[i]を読み・書きしたい
A[0]: 50番地
OP
5
50
GR5 (i)
3
3
+
234+523を計算
実効アドレスは adrの値+レジスタxの内容
ar_05
510
指標アドレッシングをどう使うか
指標(インデックス)アドレッシング =
(adrの値 + レジスタxの値)をアドレスと
してメモリをアクセスする
LD GR3,234,GR5 ⇒ (234+GR5)番地をLD
5
234番地
実効アドレスは メモリadr番地の内容
„
アドレッシングの種類 (指標)
OP
234
3: 43番地
x: 44番地
y: 45番地
ar_05
„
間接アドレッシング =
adrの指すメモリの内容をアドレスと思って
もう一度メモリをアクセスする
LD GR3,(234) ⇒ 567番地の内容をLD
LD
511
A[1]: 51番地
A[2]: 52番地
A[3]: 53番地
GR5にiの値が入っているとする
GR3,50,GR5 Aのi番目をGR3にLDする
ar_05
512
アドレッシングの種類 (相対)
„
相対アドレッシングをどう使うか
相対アドレッシング =
(adrの値 + PCの値)をアドレスとして
メモリをアクセスする
LD GR3,+15 ⇒ (15+PC)番地をLD
„
„
本当は
プログラム
カウンタ
(PC)
23
+
38番地
38
PC
23 OP
差分
23+15を計算
15
„
15
ar_05
(注意)COMETには間接アドレッシングは無い
513
ar_05
基底(ベース)アドレッシング =
(adrの値 + ベースレジスタの値)をアド
レスとしてメモリをアクセスする
LD GR3,234 ⇒ (234+BASE)番地をLD
„
即値アドレッシング = adrの値そのものを
処理対象にする
LDA GR3, 234 ⇒ 値234をGR3にLD
OP
OP
5
234
+
ベース
レジスタ
1000
1234
1234番地
234+1000を計算
ベースレジスタは通常
OSの管理下に置かれ
ユーザアプリケーション
は変更できない。
複数プログラムをメモリ
上に配置するために
使われる。
実効アドレスは adrの値+ベースレジスタの内容
„
(注意)COMETには間接アドレッシングは無い
ar_05
514
アドレッシングの種類 (即値)
アドレッシングの種類 (基底/ベース)
„
-2
実効アドレスは adrの値 + PCの内容
„
„
OP
15
38
23番地 OP
ジャンプの行き先を相対で書く
例: Jump -2
命令自分自身より
2つ前の命令に戻る
(ループになる)
PC
23
234
GR3
„
実効アドレスは 考えない
„
515
234
(注意)COMETで「即値アドレッシング」に相当するのは
LDA命令だけ(他の命令(加算等)では即値はできない)
ar_05
516
基本情報処理技術者試験問題から
基本情報処理技術者試験問題から
主記憶へのアクセスを伴う演算命令を実行するとき,命
令解読とオペランド読出しの間に行われる動作はどれ
か。
(基本20春18)
ア 実効アドレス計算
イ 入出力装置起動
ウ 分岐アドレス計算
エ 割込み発生
インデックス修飾によってオペランドを指定する場合,表に示す値
のときの実効アドレスはどれか。 (基本17秋18)
インデックスレジスタの値
10
命令語のアドレス部の値
100
命令が格納されているアドレス
1000
ア 110
イ 1010
ウ 1100
エ 1110
アドレス指定方式のうち,命令読出し後のメモリ参照を行
わずにデータを取り出すものはどれか。(基本16春17)
ア 間接アドレス
イ 指標付きアドレス
ウ 即値オペランド
エ 直接アドレス
ar_05
命令のオペランド部において,プログラムカウンタの値を基準とし,
その値からの変位で実効アドレスを指定する方式はどれか。
(基本14春19)
ア インデックスアドレス指定
イ 絶対アドレス指定
ウ 相対アドレス指定
エ ベースアドレス指定
517
ar_05
518
「命令セット」という考え方
„
CPUを設計する ⇒ 命令をどうするか
„
命令セットアーキテクチャ
どんな命令を揃えればいいか
いろいろな設計思想があってよい
但しやりたい事が全部できる必要がある(完全)
„
„
„
例: 引き算命令を作るか、足し算と符号反転命令か
RISC vs CISCの思想の対立 ⇒ 次回
オペランド指定の形式をどうするか
z=x+y
x、y、z の3つを指定するのか?
„
„
命令中のオペランドフィールドが3つ ⇒ 命令が長い
命令読出しに時間がかかる・「キャッシュ」が大きくなる
いろいろな考え方 ⇒
ar_05
520
オペランド指定の方法
„
z=x+y
„
オペランド指定の方法
x、y、zを指定 ⇒ 3オペランド方式
„
3つともメモリアドレスを書くと、長くなる
第1オペランドの 第2オペランドの 第3オペランドの
メモリアドレス
メモリアドレス
2オペランド方式で一方がレジスタ
x=x+y
x、yを指定する (zとxを重ねる)
„
OPコード メモリアドレス
x側をレジスタにする ⇒ ビット数が減る
第1オペ 第2オペランドの
メモリアドレス
OPコード ランド
„
2オペランド方式
x=x+y
x、yを指定する (zとxを重ねる)
„
„
同じところに書き戻すという制限ができる
⇒ 余分な命令が必要になる可能性がある
1オペランド方式
AC = AC + y 上記のxを特定のACに固定
„
第1オペランドの 第2オペランドの
OPコード メモリアドレス メモリアドレス
ar_05
521
„
スタックマシン =
メモリがスタックであるマシン
„
プッシュ操作
„
例:セルフサービスの食堂
でトレーを置いてある棚
„
係の人は上へ順に重ねて置く
「プッシュ(push)操作」
ポップ操作
„
客は上から順に取ってゆく
「ポップ(pop)操作」
ar_05
522
0オペランド ~ スタックマシン
0オペランド方式
「スタックマシン」の場合に0個になる
スタック:
汎用レジスタでない(1つしか計算用レジスタが無
い)CPUでは、この形も多い
ar_05
オペランド指定の方法
„
⇒ COMETのやり方
523
オペランドがスタック上
スタックのトップ要素を演算
加算:
スタックトップと2つ目を
加算して、スタックへ積む
これだと、命令中に
オペランド指定が不要
⇒ 0オペランド
ar_05
2つのオペランドをポップ
+
結果をプッシュ
524
命令機能の評価(教3.1.4)
基本情報処理技術者試験問題から
命令実行
命令解釈
„
命令読出
„
何サイクルの命令が何回出て
くるかで、全時間は変わる
プログラムにより頻度変わる
命令実行
„
命令解釈
„
1命令当り
Clock Per
3サイクル
4サイクル
Instruction
1命令当りの
クロックサイクル数 = CPI と呼ぶ
命令によってクロック数が違うCPUが多い
⇒ 平均値を取る 単純な平均でなくて
⇒ 命令の出現頻度による「加重平均」
525
ar_05
526
命令機能の評価(教3.1.4)
命令出現頻度による加重平均
„
命令読出
„
例えば、右上のように命令ご
との所要クロック数が与えら
れているとする
更に、右下のようなプログラ
ムの形を考える
この時、プログラム全体の所
要クロックサイクル数=15
命令実行
„
„
クロック
1命令当り
„
„
ar_05
計算機内部の
動き(イメージ)
命令解釈
„
命令読出
命令語に関する記述のうち,適切なものはどれか。(基本19春18)
ア オペランドの個数は,その命令で指定する主記憶の番地の
個数と等しい。
イ 一つのコンピュータでは,命令語長はすべて等しい。
ウ 命令語長が長いコンピュータほど,命令の種類も多くなる。
エ 命令の種類によっては,オペランドがないものもある。
(例)命令
サイクル数
LD
r1, r2 形式
3
LD
r, addr 形式
4
ST
r1, r2 形式
3
ST
r, addr 形式
4
ADDA r1, r2 形式
3
ADDA r, addr 形式
4
„
1命令当り、(前頁での平均で) n サイクル、
„
1クロックサイクル = t 秒とする
命令
LD
GR3,
LD
GR4,
ADDA GR3,
ST
GR3,
„
X
Y
GR4
Z
サイクル数
4
4
3
4
Σ{(命令の出現頻度)
様々なプログラムでの命令
×(サイクル数)} 527
の平均出現頻度で重み付け
ar_05
„
„
„
( クロック周波数 F とすると、t = 1/F )
1命令にかかる時間 = n・t 秒
1秒当りの実行命令数
X = 1/(n・t)= F/n
MIPS (Million Instructions Per Second)
= X/100万(106)
„
1秒あたりの実行命令数を100万単位で表したもの
ar_05
528
計算してみよう
基本情報処理技術者試験
„
50 MIPS のプロセッサの平均命令実行時間は幾らか(基本18春20)
ア 20 ナノ秒
イ 50 ナノ秒
エ 2 マイクロ秒
ウ 5 マイクロ秒
„
クロック周波数が1GHz の処理装置が 命令種
別
ある。この処理装置の命令種別が,
命令1
表に示す二つから成っているとき,
処理能力は約何 MIPS か。
命令2
(基本17春18)(基本20春19)
ア 34
イ 100
ウ 125
1命令当り(加重)平均で3クロックサイクル
„ クロックは3GHz
⇒ X = F/n = 3×109/3 = 109 = 1000 MIPS
(脱) 3GHzの時1クロックサイクルの時間は
1秒間に3×109回
⇒ 1/(3×109)=1/3ナノ秒
光速(30万Km/秒)で走っても 10cm
„
回路内の信号伝達は光速以下(多分2/3位)
⇒ 数cmの配線で1クロック分ずれてしまう程度
ar_05
„
529
„
„
どのような命令出現頻度パターン(「命令ミックス」)
を使うかに依存。パターンは標準化していない
メモリアクセスの時間が変動するが、それを含んで
いない (一般に最高速値~すべてキャッシュ内)
命令の設計に依存する: 命令を簡単にし、同じ事
を複数の命令でやるCPUは、MIPS値は得をする
ar_05
10
60
5
40
エ 133
ar_05
530
まとめ
後の回でいくつかの性能指標(ベンチマーク)を
紹介したい
結論から言うと、MIPS値は性能指標としては
問題が多い
„
実行頻度
(%)
平均命令実行時間が 0.2 マイクロ秒のコンピュータがある。このコ
ンピュータの性能は何 MIPS か。 (基本15秋20)
ア 0.5
イ 1.0
ウ 2.0
エ 5.0
CPU性能指標としてのMIPS
„
実行時間
(クロック)
531
„
„
„
„
アドレッシングの方式を列挙し、それぞれ動作
を説明できるか?
「命令セット」=命令種類を設計するときの揃
え方=の考え方を議論できるか?
命令内のオペランド数の設計について、議論
できるか?
MIPS値を計算できるか?
ar_05
532
Fly UP