Comments
Description
Transcript
第8回 実際のプロセッサ
計算機システム 第8回 2005年7月1日 湯川 高志 2005-07-01 計算機システム 第8回 1 補講のお知らせ 7月19日(火)に補講をやります 5,6限と7,8限のどちらが良い? 2005-07-01 計算機システム 第8回 2 今日の講義内容 アーキテクチャ(続き) 高速化の工夫(続き) VLIW ハイパースレッディング/チップレベル・マルチスレッディング スーパーコンピュータ ベクトル型 スカラー型 グリッド 実際のCPU 2005-07-01 Z80 計算機システム 第8回 3 高速化の工夫 (続き) 2005-07-01 計算機システム 第8回 4 スーパーパイプライン パイプラインの各ユニットの処理内容を細かくし,ユニッ トの動作を単純化 先程説明したパイプライン: 「命令の読込み」,「命令の解釈」, 「命令の実行」,「結果の書き込み」の4段 各段階をさらに分割: 「命令の読込み」をさらに2つに分ける等 Pentium Proでは10段のパイプライン 各ユニットの動作が単純なので,クロックを高くできる 分岐予測が失敗した時の手戻りが大きい 2005-07-01 計算機システム 第8回 5 投機的実行 4段パイプライン 命令 読み出し 命令解釈 分岐!! 命令実行 結果 書き込み 実行ユニットは1個 分岐が起こったら,それより手前のステージにある命令が単に 捨てられるだけ より深いパイプライン 2005-07-01 実行に関わるユニットが複数になる 分岐の結果がわかるまで実行をはじめてしまって良いのか? やってしまえ!! 分岐予測がはずれたら処理結果を捨てる 計算機システム 第8回 6 SIMD命令 マルチメディア・データの処理 処理対象のデータは異なるが,処理内容(命令)は同 一 例: イメージのすべて画素に対して,周囲の画素の値との平 均値を取る 同じ命令を異なったデータに対して並行して実 行できる回路を設ければ,マルチメディア・デー タの処理を高速化できる SIMD (single instruction multiple data) Pentiumの場合: MMX命令 2005-07-01 計算機システム 第8回 7 並列処理 SISD (single instruction single data) SIMD (single instruction multiple data) ひとつのデータに対してひとつの命令を実行 普通の単一プロセッサのコンピュータ 複数のデータに対し,同一の処理を並行して実行 DSP (digital signal processor), グラフィックプロセッサ等 MIMD (multiple instruction multiple data) 2005-07-01 複数のデータに対し,それぞれ異なった処理を並行して実行 マルチコンピュータ,クラスタコンピュータ,グリッド 計算機システム 第8回 8 インテルのCPUにおける 高速化技術の推移 8086 (第1世代) - 16ビット 80286 (第2世代) - 中途半端な32ビット 80386 (第3世代) - 本格32ビット キャッシュ パイプライン i486 (第4世代) RISC手法の一部取り込み 浮動小数点演算ユニット内蔵 2005-07-01 計算機システム 第8回 9 インテルのCPUにおける 高速化技術の推移 (続き) Pentium (第5世代) MMX Pentium スーパースケーラ 分岐予測 SIMD (MMX; Multi Media eXtensions) Pentium Pro (第6世代) 2005-07-01 RISC手法 アウト・オブ・オーダー実行 レジスタリネーム スーパーパイプライン (10段) 投機実行 計算機システム 第8回 10 インテルのCPUにおける 高速化技術の推移 (続き) Pentium II Pentium III Pentium Pro + 16ビット命令高速化 + MMX SIMD強化=SSE (Streaming SIMD Extension) Pentium IV (第7世代) 2005-07-01 スーパーパイプライン強化 (20段) 計算機システム 第8回 11 VLIW Very Long Instruction Word 普通のCPUの命令語長は8bit~32bit 32bit語長の命令を4つならべたものをひとつの 命令語とする → 命令語長 128bit 32bit 命令(1) まとめて1クロックで実行 命令(2) 命令(3) 命令(4) 128bit コンパイラが同時実行できる命令を並べる 2005-07-01 計算機システム 第8回 12 VLIW 第6世代PentiumにおけるμOPのout of order実行は, ハードウェアで同時実行可能命令を解析 VLIWでは,コンパイラにより同時実行可能な命令を解 析し,それらを並べた命令を生成 より多くの並列実行可能命令の抽出が可能 従来の命令セットの命令をそのまま並べただけではダメ ソフトウェアの(バイナリ)互換性がなくなる 2005-07-01 計算機システム 第8回 13 コードモーフィングソフトウェア (CMS) VLIW コンパイラでプログラムを解析し同時実行可能命令を抽出 ソフトウェアをVLIWで動作させるには再コンパイルが必要 コンパイルの代わりに,機械語になったプログラムを解析して 同時実効命令を抽出し,VLIW命令に変換したら ソフトウェアを変更せずにVLIWで動作 Code Morphing Software (CMS) トランスメタ社のCrusoe, Efficeonが採用 2005-07-01 計算機システム 第8回 14 ハイパースレッディング チップレベル・マルチスレッディング ひとつのプログラムにおける命令の同時実行には限界 あり 最近のOSやプログラム →マルチプロセス,マルチスレッド プロセス: 命令,データともに独立のメモリ空間を持ったプログ ラムの実行単位 スレッド: プロセスと同様に独立した実行単位だが,データを置 くメモリ空間を他のスレッドと共有する 複数のスレッドの命令をCPU内で同時に実行 →スレッドは独立性が高いため,データ依存性が小さい ハイパースレッディング (インテル) チップレベル・マルチスレッディング (SUN) 2005-07-01 計算機システム 第8回 15 スーパーコンピュータ 2005-07-01 計算機システム 第8回 16 スーパーコンピュータ 通常のコンピュータ 計算をする データベース処理をする データ通信をする 各処理のバランスが良い性能である必要 スーパーコンピュータ 2005-07-01 ある利用目的(主として科学技術計算)において非常 に高速なコンピュータ 計算機システム 第8回 17 ベクトル型スーパーコンピュータ 科学技術計算で速度が要求されるもの 微分方程式を解く→有限要素法 固有値問題を解く 行列やベクトル演算の繰り返し CPUにベクトルに対する計算を実行するハード ウェアを装備 CPUそのものも高速の素子を利用 特別な素子 実装・冷却法 メモリも高速 2005-07-01 計算機システム 第8回 18 スカラー型スーパーコンピュータ またはクラスタ・マシン 通常のコンピュータ (CPU+メモリ) PCのようにすべてのI/Fを備え完結したコンピュータ CPUと主記憶とデータ通信I/Fだけを基板上に載せた もの データ通信線で接続 2005-07-01 筐体内で基盤(バックプレーン)等で接続 特別な(高速化)ネットワークI/Fにより接続 汎用のネットワークI/F(イーサーネット)により接続 計算機システム 第8回 19 スカラー型スーパーコンピュータ またはクラスタ・マシン (続き) CPUの処理速度に比較して,データ通信の速度は遅い CPU同士で頻繁にデータを交換しなければならないよう な処理には向かない プログラム開始時にデータを各CPUにばらまき,ずっと 計算して,結果をまとめて回収するような性質の計算に 適している 通常のコンピュータの部品を流用可能なので,安価に 実現でき,コストパフォーマンスが良い 2005-07-01 計算機システム 第8回 20 グリッド (最近流行り) 接続形態 スカラー型スーパーコンピュータのネットワーク結合 をさらに疎なものにする PCがインターネットで接続された形態 処理形態 1. 2. 3. 2005-07-01 インターネットを通じて,サーバから計算対象となる データを受取る 計算を実行 計算結果をインターネットを通じでサーバへ送る 計算機システム 第8回 21 グリッド (続き) 運用形態 従来のスーパーコンピュータ グリッド 2005-07-01 使う人がお金を出してスーパーコンピュータという機械を買う ほぼ占有して使う いろいろな人が普通のPCを自分が使うために買う 持ち主がPCに仕事をさせていない間に,ある特定の計算の ために使う 計算させた人は,使った分に応じたお金を持ち主に払う 計算機システム 第8回 22 グリッド (続き) 最初は遊びから始まった 暗号を解読する: RC4,RC5チャレンジ 宇宙で知的生命体を探す みんなで力をあわせて しらみつぶしに鍵を試すことでしか解読できない暗号を そのとおりにしらみつぶしで 解く!! 電波望遠鏡が受信した電波 知的生命体がいれば,特定のパターンの電波が出ているはず 受信した膨大な電波データをみんなで手分けして解析し 知的生命体をさがそう!! スクリーンセーバーになっていて,一定時間PCに仕事 をさせないと,プログラムが起動し計算を行う 2005-07-01 計算機システム 第8回 23 グリッド (続き) これは使える!! 会社の中 社員のPCのあいている時間を使って 2005-07-01 今では1人1台はPCを持っている 用途は,電子メイル,WWWでの情報収集,ワープロ,表計 算が中心 社員がいる間はずっと電源が入っているが,実際に使われ ている時間は多くない 自社内で必要とされている計算を処理することで,スーパー コンピュータの購入費を節約 他社から計算を受託し,お金をかせぐ 計算機システム 第8回 24 6. 実際のCPU 2005-07-01 計算機システム 第8回 25 実際のCPU: Z80 2005-07-01 計算機システム 第8回 26 Z80 米国ザイログ社が開発(1976年発売) ソフトウェア面(命令セット) インテル8080と命令セットが上位互換 8080の命令で書かれたプログラムは,そのまま動作する さらに便利な命令が追加されている レジスタの追加 ハードウェア面 2005-07-01 5V単一電源化 高クロック化(2.5MHz, 4MHz) DRAMリフレッシュ機能内蔵 割り込み制御の強化 計算機システム 第8回 27 Z80 (続き) 80年代の大ヒットCPU TRS-80, PC8001, PC8801など初期のパーソナルコ ンピュータが使用 後継(互換)CPUが多く作られている 2005-07-01 日立 HD64180 東芝 Z84C015 計算機システム 第8回 28 レジスタ構成 汎用レジスタ 2005-07-01 A [8bit] F(フラグ) [8bit] [16bit] B [8bit] C [8bit] [16bit] D [8bit] E [8bit] [16bit] H [8bit] L [8bit] [16bit] 計算機システム 第8回 29 レジスタ構成 (続き) 汎用レジスタ (裏) 2005-07-01 A' [8bit] F'(フラグ) [8bit] [16bit] B' [8bit] C' [8bit] [16bit] D' [8bit] E' [8bit] [16bit] H' [8bit] L' [8bit] [16bit] 計算機システム 第8回 30 レジスタ構成 (続き) インデックス・レジスタ IX [16bit] IY [16bit] プログラム・カウンタ PC [16bit] スタック・ポインタ SP [16bit] 2005-07-01 計算機システム 第8回 31 レジスタ構成 (続き) 割り込みベクトル・レジスタ I [8bit] リフレッシュ・カウンタ R [7bit] 2005-07-01 計算機システム 第8回 32 メモリー空間,I/O空間 PCが16bit 指定できる番地 8bitCPUなので,データ幅は8bit 2進 0000000000000000B~1111111111111111B 16進 0000H~FFFFH 10進 0~65,535 最大で65,536byte=64Kbyteのメモリーを持てる I/Oのアドレス指定は8bit (メモリー空間とは独立) 指定できる番地 2005-07-01 00H~FFH (0~255) 計算機システム 第8回 33 レジスタの用途 「汎用」なのでどのようにも使えそうだが... 実は,命令によって,オペランドに指定できるレジスタが 制限されている Aレジスタ: アキュムレータ.演算命令や比較命令の対象と なる Fレジスタ: フラグ・レジスタ.演算結果に従って値がセット され,条件命令において判断のために使用される HLレジスタ(ペア): 16ビットのアドレス指定に良く利用され る Bレジスタ,BCレジスタ(ペア): 繰り返し命令でのカウンタ Cレジスタ: 入出力命令のI/O番地指定用 DEレジスタ(ペア): 繰り返し命令の転送先番地指定用 2005-07-01 計算機システム 第8回 34 Fレジスタ S Z H P/V N C C(キャリー): 演算に桁上げ(加算),桁借り(減算)が発生 Z(ゼロ): 演算結果がゼロ S(サイン): 2の補数表現をした場合の符号.演算結果の MSBと同じになる P/V(パリティ/オーバーフロー): パリティ(奇数パリティ) H(ハーフキャリー): 下位4ビットで桁上げが発生 N(サブトラクト): 減算命令を実行した場合に'1' 2005-07-01 計算機システム 第8回 35 命令の表記 実際にCPUが処理するのは0と1からなるビット列の命 令 人間は0と1の羅列ではわかりにくいので 人間にとってよりわかりやすい語(文字列)を命令に対応 させて表記 ニーモニック ニーモニックで書かれたプログラムを,ビット列に変換す るプログラム アセンブラ 2005-07-01 計算機システム 第8回 36 命令の表記 (続き) Z80の特殊事情 8080と命令が互換 ニーモニックも,8080のものを拡張して使えば良い インテル・ニーモニック ザイログ社(インテルとは別の会社)で開発 過去にとらわれず,わかりやすいものを再設計!! ザイログ・ニーモニック 8080とZ80の両方に対応できるアセンブラを作るにはインテル・ニー モニックが好都合 Z80だけを考えるとザイログ・ニーモニックの方が理にかなっている この講義ではザイログ・ニーモニックを使う 2005-07-01 計算機システム 第8回 37 今回はここまで. さて,次回は... 実際のCPU (続き) 2005-07-01 計算機システム 第8回 38