...

プロセッサのathlon 64 3000図2b

by user

on
Category: Documents
1

views

Report

Comments

Transcript

プロセッサのathlon 64 3000図2b
第5章 制御装置の構成
5.1プロセッサの高速化手法
(1)ハードウェア技術上の改善
論理素子の高集積化・高速化
メモリ素子のアクセス時間の短縮
多層プリント基板や冷却方式
①ロードマップ:発展過程と技術予測
・設計ルール、線幅
現在0.09μm→0.065μm
S:スケールファクタ,
3年で0.7倍
・スケーリング則
ディレイ:S, 面積S2,電力S2
・Mooreの法則
集積度:3年で4倍(10年で100倍)
・配線層:+0.75/3年
2:2倍
密度1/S
現在6∼7層
Cu配線
面積:2倍
RCディレイ:定数
R∝(線長)*(1/断面積)=
S*(1/S2)=1/S
C∝盤面積*(1/盤間隔)=
S2*(1/S)=S
S
・電力:CMOS
?
2
2
S
2
CV fに比例
S
S
アース
閾値
ディレイ:
RCに比例
電子回路
(i)微分回路
ステップ状の信号E(t<0で0,0≦tでE)入力
Vo=Vi-Q/C=iR
i=dQ/dt
が成り立つので,
dVo/dt+Vo/(CR)=dVi/dt
t>0 で dVi/dt=0,t=0 で Vo=E であるので,
Vo=Eexp(-t/(CR))
(ii)積分回路
Vo=E(1-exp(-t/(CR)))
Vi=Ri+V0
積分回路
V0=Q/C
i=dQ/dt
Vi=CRdV0/dt+V0
t>0でVi=E
V0=E+Ae-t/CR
t=0でV0=0
V0=E(1-e-t/CR)
閾値
ディレイ:
RCに比例
単位長当たりのR,Cとすると、
線路長⊿Lでの遅延は(⊿L)2
に比例
V0=E(1-exp(-t/(CR(⊿L)2))
長さ⊿L
R⊿L
信号線
C⊿L
アース線
放電
充電に必要な電力CVDD2
日経マイクロデバイス、
1999年4月号、
p.89
DRAM容量
1970:1kb、2001:1Gb、10年で100倍
プロセッサ速度 1971:750KHz、2001:1.5GHz、10年で13倍
濱本武史氏博士論文より
Intelのマイクロプロセッサの
発展過程
(2)論理方式上の改善
パイプライン構造
命令レベル並列
キャッシュメモリ、投機的実行
(3)機械命令セットの改善
RISCの台頭
高級言語普及とコンパイラ指向
1チップ実装
開発期間の短縮
マルチメディア対応:MMX,SSE
IA-64:コンパイラ指向
(4)コンパイラ技術
ハードとコンパイラの協調
5.2命令パイプラインの実行過程
パイプライン=流れ作業
車輪
時刻1
エンジン
車1
車2
ハンドル
ボンネット
1単位時間に1台
車1
時刻2
時刻3
時刻4
車3
車1
車1
車4
車5
時刻5
車2
車3
車4
車2
車3
車2
流れ作業の乱れ
(1)部品調達遅れ
車輪
時刻1
エンジン
車1
車2
ハンドル
ボンネット
1単位時間に1台
車1
時刻2
時刻3
時刻4
車3
車1
車1
車3
車3
時刻5
車2
車2
車2
2単位時間の空き
流れ作業の乱れ
(2)検査不良による再取付け
車輪
時刻1
エンジン
車1
車2
時刻2
時刻3
時刻4
ボンネット
1単位時間に1台
前輪に不具合発見
車1
(後続車も)
車1
車2
車3
ハンドル
車1
車3
車4
X
車2
X
X
X
車1
時刻5
4単位時間の空き
車輪
①
時刻0.5
時刻1
時刻1.5
時刻2
車1
車2
車3
車4
車1
車2
車3
車1
車2
車3
車6
車5
車4
時刻3.5
時刻4.5
①
車4
車7
時刻4
②
車5
時刻2.5
時刻3
エンジン
車6
車5
②
ハンドル
①
②
ボンネット
①
②
生産量を2倍にするには
各ステージを2分割
車1
車2
車3
車4
車8
車7
車6
車5
車9
車8
車7
車6
0.5単位時間に1台
ベルトコンベヤ速度:2倍
車1
車2
車3
車4
車5
車1
車2
車3
車4
車1
車1
車2
車3
車2
命令1
IF D
EX MA S
命令2
IF D
EX MA S
命令パイプライン
5サイクル
命令1 IF D
EX MA S
1サイクル
命令2
IF
D EX MA S
命令3
IF D EX MA S
IF:命令フェッチ,D:デコード,EX:演算,
MA:メモリアクセス,S:格納
CPI:Cycles Per Instruction,理想的には1
(1)ロードストア命令形式
OP Rd Rs1 RS2
IF:命令のフェッチ
D :命令デコード
OP Rd/s M
EX:演算実行
オペランドアドレス計算
MA:ロードストア命令の場合、
メモリアクセス
演算命令ではNOP
S:結果の格納と命令の後処理
命令キャッシュ
データキャッシュ
アドレス
データ
ロードバイパス
IF
D
EX
MA
演算器バイパス
ストアバイパス
レジスタ
ロードストア命令形式のパイプライン
S
(2)レジスタ−メモリ命令形式
IF D OA OF EX S
OP Rd Rb Rx
レジスターレジスタのとき
OAでは何もしない
メモリ−メモリのとき
IF D
OA OF
:第1マイクロ命令の実行
OA OF EX S
:第2マイクロ命令の実行
D
5.2.2命令パイプラインの乱れの要因
(1)データ依存
ハザード,
ロードストア命令形式
ストール,
①演算データ待ち:
バブル
先行IF D EX MA S
後続
IF D - - EX MA S
演算結果バイパス機構
先行IF D EX MA S
後続
IF D EX MA S
②ロードデータ待ち:
先行
IF D EX MA S
後続
IF D - EX MA S
(2)制御依存
③条件分岐命令の実行
ロードストア命令形式
False側
先行IF D EX MA S
分岐命令
後続 IF D EX MA S
IF D EX MA S
IF D EX MA S
分岐方向確定
True側
先行IF D EX MA S 分岐命令
後続 IF D
無効化
IF
無効化
分岐先命令 IF D EX MA S
IF D EX MA S
単純な分岐方式
命令の一括
フェッチ
分岐命令
連続番地の命令列
FALSE
TRUE
Taken
分岐先命令
Not Taken
こちら側を
選択
レジスターメモリ命令形式
False側
先行 IF D OA OF EX S分岐命令
後続
IF D OA OF EX S
IF D OA OF EX S
IF D OA OF EX S
True側
パイプラインステージ数が長い
分岐結果が後段に得られる
先行 IF D OA OF EX S
ほど:影響大
後続
IF D OA OF EX
IF D OA OF
無効化
IF D OA
IF D
分岐先命令
IF D
④割込みの発生
⑤命令の書換え
⑥制御レジスタの変更
(3)資源競合
メモリアクセス系
⑦キャッシュミスヒット
実記憶装置が8B幅インタリーブ
キャッシュと実記憶速度差30倍
バスが8B、1ブロックを64B
↓↓↓
38クロック
⑧キャッシュアクセス競合:統合キャッシュ
IF D EX MA S
ロード命令
IF D EX MA S
演算命令
IF D EX MA S ストア命令
- IF D EX MA S
命令フェッチは
- IF D EX MA S
待たされる
⑨TLBミスヒット、ページフォールト
演算系
⑩複雑な演算実行
演算時間が長く,1台しかない
先行 IF D EX EX EX MA S
後続
IF D - - EX MA S
5.2.3命令パイプラインとCPI
(1)実行時間T
T=IC*CPI*MC
実行命令数IC
1命令当たりの
クロックサイクル数CPI
クロックサイクル時間MC
(2)CPI
単純な命令パイプライン方式
パイプラインを止める要因
(ハザード)が起これば、
パイプライン全体を止める
CPI=1+Cf+Cd+Cm+Ce
性能低下分(ペナルティ)
Cf:命令供給系
Cd:データ依存
Cm:キャッシュメモリ含む
データアクセス系
Ce:演算装置
ペナルティの隠蔽なし:後続命令ストップ
Ld IF D EX MA MA MA MA MA S
FA
IF D EX - - - - EX EX MA S
IF D - - - - - - EX EX EX MA S
ペナルティ:メモリで4、データ依存で2、都合6
ペナルティの隠蔽あり:後続命令実行
Ld IF D EX MA MA MA MA MA S
FA
IF D EX EX EX - - MA S
IF D - - EX EX EX MA S
ペナルティ:2
ペナルティ4に隠れる
(3)ある汎用大型計算機のCPI
科学技術計算で1.8
(Cf=0.15,Cd=0.3,
Cm=0.15,Ce=0.2)
トランザクション処理で3.6
(Cf=0.4,Cd=0.35,
Cm=1.2,Ce=0.65)
(4)ロードストア命令形式の場合
表5.1 命令頻度
5.2.4 命令供給系での高速化手法
(1)命令フェッチの高速化
命令用キャッシュメモリ
分離型キャッシュ
ハーバードアーキテクチャ
命令バッファ
(2)無条件分岐命令の高速処理
自己相対:PCと変位の加算
インデックスモードM(Rb+Rx+D):
2つの汎用レジスタと変位の加算
無条件分岐IF D EX MA S
分岐先命令
- - IF D EX MA S
(3)条件分岐
①分岐条件の設定操作と
分岐操作の分離
②遅延分岐
③分岐予測
単純な分岐方式
命令の一括
フェッチ
分岐命令
連続番地の命令列
FALSE
TRUE
Taken
分岐先命令
Not Taken
こちら側を
選択
①分岐条件の設定操作と分岐操作の分離
COMP&BR
IF
D
EX
IF
D
MA
S
無効化
IF
IF
COMP
IF
D
IF
BR
EX
D
MA
EX
MA
S
S
D
EX
MA
S
IF
D
EX
MA
S
IF
D
EX
MA
コンパイラが挿入
S
②遅延分岐方式
命令の一括
フェッチ
分岐命令
TRUE
Taken
分岐先命令
連続番地の命令列
数命令実行後
分岐
FALSE
Not Taken
③分岐予測方式
履歴で予測
局所,大域,
連続番地の命令列
ハイブリッド
分岐命令
FALSE
TRUE
Taken
分岐先命令
Not Taken
nビットカウンタ方式
2レベル適応方式
gshare方式
GAs方式
PAs
ハイブリッド方式
局所+大域
ヒット率:90∼95%
パーセプトロン方式
NNNNTNNNN
連想メモリで構成
NTNTNTNTNTNT
NTNT→N
TNTN→T
NTNT→N
TNTN→T
PAs方式
ISCA96,p.12
単純なメモリで構成
ぶつかりによる性能
低下
大域
局所
BHS:Branch History Table,BHSR:Branch History Shift Register
PAs方式
NTNT:0101 カウンタ 5番
このとき次の分岐は必ずNとなる。
初期状態がどこでも状態00となる。
T
11
N
T
10
N
01
T
N
00
N
T
TNTN:1010 カウンタ 10番
このとき次の分岐は必ずTとなる。
初期状態がどこでも状態11となる。
その他のカウンタはこの場合使用されず
ハイブリッド方式
PC
パーセプトロン方式
メモリ量 ∝ 履歴長
weight set
4
-5
2
1
Takenのとき:GBH*1をWeight Setに加算
Untakenのとき:GBH*(-1)をWeight Setに加算
•Taken:1
•Not taken:-1
global branch history bias
1
-1
-1
1
perceptron
1 (taken)
計算量 ∝ 履歴長 4*1+(-5)*(-1)+2*(-1)+1*1=8 >= 0
Path-Based Predictor
パーセプトロン+パス情報
3
2
1
0
time
パス情報
2
PC
2
5
-3
1 ×
pred.
-1
5
×
+
-1
3
×
+
6
+
1
8
>=0
分岐予測ミスによる
ペナルティ
分岐予測ミスによる性能低下
Cf=0.16*(0+2*0.1)=0.03
整数系分岐確率
分岐予測
ミス率
Pentium4では
20
ペナルティ:0.35
予測ミスによる性能低下
条件分岐の出現頻度
整数系16%
浮動小数点系8%
分岐予測ヒット率
整数系90%
浮動小数点系96%
性能低下
整数系
Dステージ
Cf=0.16*(1*0.9+2*0.1)=0.18
IFステージ
=0.16*(0+2*0.1)=0.03
浮動小数点系
Pentium4では
Dステージ
20
Cf=0.08(1*0.96+
ペナルティ:0.35
2*0.04)=0.083
IFステージ
=0.08(0+2*0.04)=0.0064
5.2.4データアクセス系における高速化手法
分離型キャッシュ
64KBデータキャッシュ
ミスヒット率:
整数系/浮動小数点系
0.0271/0.0191
K:整数系/浮動小数点系
0.306/0.345
TL=30
整数系
Cm=0.306*0.0271*30=0.25
浮動小数点系
Cm=0.345*0.0191*30=0.20
分離型キャッシュ
Ts=TH+(βIS+kβDS)TL
統合型キャッシュ
Tu=TH+kTH+(1+k)βuTL
64B
5.2.5データ依存命令への
高速データ供給機構
(1)演算結果バイパス機能
(2)ロード/ストアバイパス
LOAD R1 M(Rb+D1)
MULI R1 R2
STORE M(Rb+D2)
ロードストア命令形式
LOAD IF D EX MA S
演算
IF D - - EX MA S
STORE
IF D - - - EX MA S
↓
LOAD IF D EX MA S
演算
IF D - EX MA S
STORE
IF D - EX MA S
命令キャッシュ
データキャッシュ
アドレス
データ
ロードバイパス
IF
D
EX
MA
演算器バイパス
ストアバイパス
レジスタ
ロードストア命令形式のパイプライン
S
性能低下
①ロードデータ待ち
ロード命令の結果を
次の命令が使用
整数系:25%
浮動小数点系:13%
ロード命令の出現頻度
整数系:26%
浮動小数点系:24%
Cd=0.065:整数系
0.031:浮動小数点系
②整数演算:1クロックサイクルで終了
データ依存による性能
低下なし
③浮動小数点演算:パイプラインの場合
加算と乗算:3段パイプライン
毎サイクル投入
除算:パイプライン化が困難,
実行頻度小,無視
後続命令:浮動小数点無依存命令
IF D EX EX EX MA S
IF D EX EX EX MA S
IF D EX EX EX MA S
m12e1+m22-(e1-e2)2e1
0.00110..210
0.110… 28
後続命令:依存命令
IF D EX EX EX MA
IF D - - EX
IF D - -
バブル2
S
EX EX MA S(依存)
EX EX EX MA S
IF D EX EX EX MA S
バブル1
IF D EX EX EX MA S
IF D - EX EX EX MA S(依存)
命令I:浮動小数点演算命令
命令(I+1),命令(I+2)
とのデータ依存
浮動小数点演算命令の
出現頻度:38%
浮動小数点命令の次の命令で
参照する命令の割合:13%
浮動小数点命令の次次の命令で
参照する命令の割合:無視
Cd=0.38*2*0.13=0.1
パイプライン無しのとき: Cd=0,Ce増大
5.2.6 演算器での競合
①浮動小数点演算:パイプラインなし
バブルは常に2
Cd=0、Ce=0.38*2=0.76
後続浮動小数点命令
IF D EX EX EX MA S
IF D EX EX EX S
後続整数命令
IF D EX EX EX MA S
IF D EX MA S
②演算器パイプライン化
先行命令浮動、後続浮動無依存命令
バブル0
IF D EX EX EX MA S
IF D EX EX EX MA S
先行命令浮動、後続整数命令
バブル2
IF D EX EX EX MA S
IF D EX - MA S
Ce=0.38*2*0.62=0.47
③演算器並列+乱実行
先行命令浮動、後続命令浮動:バブル0
IF D EX EX EX MA S
IF D EX EX EX MA S
先行命令浮動、後続命令整数:バブル0
IF D EX EX EX MA S
IF D EX MA S
合計Ce=0
5.2.7 ロードストア命令形式のCPI
IFステージでの分岐予測
命令キャッシュ64KB
データキャッシュ64KB
演算パイプライン、乱実行の効果
Cf Cm Cd(ロード)Cd(演算)Ce
0.03 0.25 0.065
0.0
0.0
整数系
浮動小数点系
パイプなし 0.006 0.20 0.031
パイプあり 0.006 0.20 0.031
乱実行
0.006 0.20 0.031
0.0
0.1
0.1
全体
1.345
0.76 1.997
0.47 1.807
0.0 1.337
乱実行
0.47
1.807
0
1.337
5.2.8 命令パイプラインのステージ数
深いパイプライン
周波数大→高速になる可能性
分岐予測ミスの場合に性能低下
データ依存の場合の性能低下
PentiumIII:10ステージ、1GHz
Pentium4:20ステージ、
1.5GHz
分岐確定:第19ステージ
1stレベルキャッシュ:2サイクル
整数系性能:IIIと比べて1.2倍
マイクロプセッサをめぐる動き
①大域並列の利用
・パイプライン:時間並列
・乱実行、投機実行による時間並列の高速化プログラムカウンタの
・局所並列:スーパスカラ、VLIW
近傍にある命令の
・非常に複雑な構造
並列実行
IPCの頭打ち
・大域並列:マルチコア型プロセッサ
・周波数向上が困難
深いパイプラインで性能向上:小さくなった
②省電力化
動的消費電力∝f3
キャッシュ、分岐予測ミス
リーク電流の増大
ステージ内ゲート段数
③超高信頼、セキュアなプロセッサ
要因
・製造バラツキ
・ソフトエラー
・経年変化
・セキュリティ・アタック
高信頼化
デバイスレベル
論理回路レベル
パリティ、ECC、ラッチ/フリップフロップの2
重化
アーキテクチャレベル
機能装置の2重化、マルチスレッドでの2重実行、
データパスの2重化
ランタイムチェッカ
イリノイ大学RSE(Reliability and
Security Engine)
高セキュア化
暗号化
スタックオーバフローアタック対策
周波数向上:40%/年
1990年 2002年
設計寸法
1000nm→130nm:1/8
ゲート(FO4)段数/ステージ
84FO4→12FO4:1/7
周波数
33MHz→2GHz:60倍
N.Joppi et.al.,ISCA,2002
オーバヘッド
なし
オーバヘッド:
1.8FO4
オーバヘッド
2FO4 F
12FO4
F1
6FO4
1ステージの中の
有効ゲート数
D
E
10FO4→6FO4:9%性能向上
11.8FO4→7.8FO4:周波数1.5倍
M
S
ステージ数2倍、周波数
1.75倍
F2
D1
D2
E1
E2
分岐予測ミス:
28FO4→32FO4
M1 M2
S1
S2
アイドル状態での電力消費
リーク電流、TR数の増大
Microprocessor
Report
May 2004
5.3割込み
(1)外部割込み
①マシンチェック割込み
緊急マシンチェック
抑制可能マシンチェック
②入出力割込み
(2)内部割込み
①演算例外
②命令例外
③記憶保護例外
④ページフォールト
⑤トレース
⑥スーパバイザコール
(3)割込みの優先順位
割込みマスクビット
5.4 機械命令セットの歴史
5.4.1汎用大型コンピュータ
IBMコンピュータ:
1964年のIBM360の発表
汎用大型コンピュータ
事務用:IBM7070
科学技術計算用:IBM7090
汎用レジスタマシン
バイトアドレスマシン
命令セットを統一、上位互換性、
ファミリシリーズの概念
モデル30:メモリ容量64kB、固定小数点演算時間103μsec
モデル70:メモリ容量512kB、固定小数点加算時間3.4μsec
マイクロプログラムによる旧コンピュータの
高速シミュレーション(エミュレーション)
register-to-register
register and indexed storage
register and storage
storage and immediate
storage-to-storage
5.4.2 スタックコンピュータ
Burroughs B-5000(1961年)
演算スタック(Top:A,Bレジスタ)
PUSH、POP、ADD、・・・
仮想記憶装備(セグメンテーション方式)
高級言語Algol60向き
ブロックの入れ子構造
スコープ規則
レキシカルレベルアドレッシング
ディスプレイレジスタ
ブロック構造
ブロック:
ヘッド(D:宣言文),ボディ(S:実行文)
S:ブロックでも
最外ブロック0
可
D10D20・・・Dm0 S10S20・・・Sn0
D112D212・・・Dk12
S112S212・・・Sm12
D11nD21n・・・Df1n
最内ブロック
S11nS21n・・・Sg1n
D12・・・S12・・
E.I.Organic:Programming
Language Structures,1975
5.4.3高級言語コンピュータ
1970年前後からのソフトウェア危機
1968年:E.W.Dijkstraの論文
Goto Statement considered harmful
構造化プログラミング (プログラミング技法)
1968年:ソフトウェア工学
ソフトウェアの生産過程に対する工学的研究
ハードウェアからの支援
①直接実行型高級言語コンピュータ
②間接実行型高級言語コンピュータ
③構文指向型高級言語コンピュータ
①直接実行型高級言語コンピュータ
コンパイラのないコンピュータ
高級言語プログラムをハードウェアで
インタプリット実行
A:=B+C
変数表:連想メモリ
変数名
C
連想検索
B
A
値
②間接実行型高級言語コンピュータ
高級言語の文(ステートメント)を
1対1に対応した中間言語に変換
中間言語をハードウェアで
インタープリット実行
変数:メモリアドレスに変換済み
実行時誤り検出→高級言語レベルで可能
システム例
アイオワ州立大のSYMBOLコンピュータ
NEC COMBAT
APLアシストフィーチャ
Symbolics3600
通産省の第5世代コンピュータ
Prolog向き間接実行型コンピュータ
データ属性チェック
値域チェック
NECのCombat
③構文指向型高級言語コンピュータ
高級言語の演算、データ、制御構造を
反映した命令セット
コンパイラ指向のコンピュータ
システム例
B-5000シリーズ
VAX
Warrenの提案したPrologコンピュータ
TRONプロジェクト:GMICRO
④可変構造型(ユニバーサル)コンピュータ
高級言語や応用によって機械命令セットを
変更できるコンピュータ
システム例
B1700
カメレオンコンピュータの異名
Fortran,Cobol,システム記述言語に
対応した機械命令セット
QM-1,MLP 900
QA-1/QA-2
5.4.4マイクロプロセッサ
Inte社:80X86シリーズ
Motorola社:6800シリーズ
Zilog社:Z80シリーズ
Intel(Pentium 4,
AMD(Opteron,Athlon 64)
Intel(Itanium-2(VLIW))
Transmeta(Crusoe(VLIW))
SunMicro(SPARC IV)
HP(PA8500)
IBM(POWER 6)
MIPS(R12000)
RISC系
衰退
5.4.5 超CISCコンピュータ:VAX
スーパミニコンピュータ(1978年)
直交型の命令形式
命令操作部とオペランドの
アドレッシングモードが独立
FADD R
M
FADDR-M R
M
FADD
M
R
FADDR-R R R
FADD R
I
FADD R R
直交型
非直交型
FADD,IADD,DADDなどデータタイプごとに命令
タグ方式:一層直交性を追求
ADD オペランド1 オペランド2
属性一致検査:
エラー処理
0
整数
0
整数
1
浮動
1
浮動
2
10進
3 文字列
VAXの豊富なアドレッシングモード
(1)アドレッシングモード
①即値(モード0∼3)
②レジスタ(モード5)
③レジスタ間接(モード6)
④自動ディクリメント(モード7)
⑤自動インクリメント(モード8)
⑥自動インクリメント間接(モード9)
⑦バイト、ワード、ロングディスプレース
メント(モードA、C、E)
⑧バイト、ワード、ロングディスプレース
メント間接(モードB、D、F)
⑨インデックス(モード4)
プログラムカウンタ(R15)の利用
①即値(モード8)
②絶対(モード9)
③相対(モードA、C、E)
④相対間接(モードB、D、F)
(2)VAXの複雑な命令
①演算命令
多項式a0+a1X+・・・+anXn
②キュー操作
③ビット操作
④文字列処理
⑤10進演算
⑥手続き呼出しと復帰
5.4.6 RISCコンピュータ
1975年IBMワトソン研究所John Cocke
IBM801の開発
UC Berkeley:D.A.Patterson
SPARC
スタンフォード大学:John L.Hennessy MIPS
(1)基本アーキテクチャ
①簡潔な命令セット
②デコードの容易な固定長の命令
③少数のアドレッシングモード
④布線論理
⑤ロードストア方式
⑥大容量レジスタ
(2)R3000
①命令形式
命令形式:32ビット固定長,
非直交型
②アドレッシングモード
ディスプレースメントM(R+D)
③単純な命令
Rt←Rsop即値、Rd←RsopRt
5.5 マイクロプログラム制御方式:
CISCの制御方式
5.5.1 M.V.Wilkesのモデル
1949年:EDASAC(Electronic Delay Storage
Automatic Computer)完成
最初のノイマン型コンピュータ
1951年:The best way to design an automatic
calculating machine
5.5.2マイクロ命令の実行
5.5.3機械命令の実行
5.5.5特徴
組織的な設計法
並行作業
トレードオフ
マイクロ診断
エミュレーション
布線論理(Wired Logic)による設計
1 PCリード,DBUS出力
2 MARセット,
メモリアクセス
R1
④
R2
3 IRセット,デコード
4 レジスタ読出し,
演算開始
5 結果格納
クロック
⑤
R0
1002
③
1000
①
②
PC:1000
ADD R0 R1 R2
ストアド論理
5.5.5特徴
組織的な設計法
並行作業
トレードオフ
ハードウェア対マイクロプログラム
マイクロ診断
エミュレーション
旧型機のエミュレーション
ユニバーサルコンピュータ
5.6 CISCとRISC
CISCの特長
①高機能命令の採用
プログラムサイズ小
②高機能命令の並列処理による
高速化
③OSの命令
割込みなどの影響を排除
CISCの欠点
①高級言語の利用環境の普及
②チップ内での制御記憶スペース
③命令のデコードの複雑さ
VAXの命令
ADDL3 R1 M(R2+737) #I456
R3000の命令
LOAD R1 M(R2+737)
ADDI R1 #I456
可変長命令
(4)複雑な命令が単純な命令の
高速実行を阻害
(5)一般性を重視した命令体系
VAXのCall命令
待避レジスタ指定とチェック
MOVE命令
転送元と先で重なりの場合
通常の単純な場合
(6)CISC命令間でのコード最適化
5.6.2VAX8700とR2000の性能比較
5.6.3 現状と将来
(1)現状
超CISCの撤退
RISC/CISCの性能差の縮小
チップ面積の増大
命令レベル並列でいずれも複雑
周波数:同程度
キャッシュメモリ:分離型64KB
(2)RISC/CISC論争の知見
①コンパイラとの協調設計
②命令パイプライン設計
③階層記憶方式
④ニーズに合致した特殊命令
5.7 マルチメディア対応の機械命令
Intel社
①MMX:画像処理,整数演算
64ビットデータに対する
サブワード演算:
8bx8、16bx4など
飽和演算
カラー画像
R,G,B:各8ビット
フィルタ処理:輪郭線抽出など
ラプラシアンオペレータ
∇
2
ϕ
= ∂
2
ϕ / ∂x
2
+ ∂
2
ϕ / ∂y
2
= ϕ ( I + 1, J ) − ϕ ( I , J ) −
( ϕ ( I , J ) − ϕ ( I − 1 , J )) +
ϕ ( I , J + 1) − ϕ ( I , J ) −
( ϕ ( I , J ) − ϕ ( I , J − 1 ))
= ϕ ( I + 1, J ) + ϕ ( I − 1, J )
+ ϕ ( I , J + 1) + ϕ ( I , J − 1)
− 4ϕ ( I , J )
1
1 −41
1
金出武雄博士論文
画像符号化・復号化
DCT:離散コサイン変換
画像符号化
原画像
DCT
量子化
符号化
送信
通信路
IDCT
受信
逆量子化
画像復号化
復号化
安田、藤原監訳
DCT変換(1次元)の証明
情報圧縮技術、bit別
冊、共立、1997
COS{(2n+1)kπ/(2N)}
n=0
1
N/4-1
N/4
K=0
1
1
1
1
K=1
1/(2N) 3/(2N)・・・・・・・・・・・・・・・・・・・・・・・1/2-1/(2N) 1/2+1/(2N)・・・・・・・・・・・・・・・・・・・・・・・1-1/(2N)
K=2 1/N
3/N・・・(1/2-1/N)
N/2-1
1
(1/2+1/N)・・・(1-1/N)
N/2
1
K=N-1
n=1
n=2
n=3
1/2-1/(2N) 3/2-3/(2N) 1/2-5/(2N) 3/2-7/(2N)
Kが小さいほど低周波領域
+
+
+
−
−
−
+
1
(1+1/N)・・・(3/2-1/N)
・・・・・・・・・・・・・・・・・
n=0
3/4N-1
3/4N
N-1
1
1
(3/2+1/N)・・・(2-1/N)
基底ベクトル
c( k,n) = 1 / N : k = 0
( 2n +1)kπ
c( k,n) = 2 / N cos
: k ≠0
2N
720画素
ブロック
8x8画素
1画像:
480画素
90x60
ブロック
画面
各ブロックに対して
DCT(N,M=8)
総和
演算量
各ブロック当たり:64x(63+64*4)=20480
毎秒当たりのブロック数
5400*30=162000 X*cos*cos
演算量:3.2G演算/秒
cos:テーブル参照
各ブロックのDC係数Xuvに量子化
Xquv=Nearest Int(Xuv/Quv)
v
u
各ブロックDC係数をジグザクスキャンし
符号化(ハフマン符号、ランレングス符号)
小泉寿男:マルチメディア
概論、産業図書、1997
動き補償:フレーム間での圧縮
マクロブロック
16x16
±16
±48
動き補償での演算量
マクロブロック当たり:±48,16画素領域
16x16x97x33x3=2458368演算
マクロブロックサイズ 比較演算数
毎秒当たりのマクロブロック処理数:
45x30x30=40500
演算量:1000億:100G演算
フレーム数/秒
②SSE(Streaming SIMD
Extension):
128ビットデータに対する
単精度浮動小数点演算x4
グラフィックス処理
座標変換
(X,Y,Z,1)=(x,y,z,1)A
A:4x4行列
Zバッファによる隠れ面処理
座標変換
Y
⎛ X ⎞ ⎛ cosθ sin θ a ⎞⎛ x ⎞
⎜ ⎟ ⎜
⎟⎜ ⎟
⎜ Y ⎟ = ⎜ − sin θ cosθ b ⎟⎜ y ⎟
⎜1 ⎟ ⎜ 0
⎟⎜ 1 ⎟
0
1
⎝ ⎠ ⎝
⎠⎝ ⎠
y
b
X
a
θ
x
セグメント
メモリ連続領域
隠れ面消去
Fly UP