Comments
Description
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 セグメント メモリ連続領域 隠れ面消去