第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理 明星大学 情報学科 2010年度後期 コンピュータ設計論 第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理 @ DENGINEER
本日 の メニュー 1.割り込み 2.パイプライン 3.並列処理 4.演習
1.割り込み(1) 割り込みの仕組み 通常処理 割り込み処理 割り込み 発生! 割り込みルーチンへ 移行 レジスタ等の 退避 一時中断 移行 レジスタ等の 退避 一時中断 割り込み処理の実行 処理を再開 レジスタ等の 復帰
1.割り込み(2) 割り込み機能の特徴 CASE 1 データ処理のように頻繁に実行する、処理A , B と たまにしか変化のない入力ボタンチェックの 処理Z 割り込みの仕組みがないと。。。 割り込みを活用すると。。。 処理 A 処理 A 処理 B 絶えず監視する 必要がある 処理 B ボタン入力! 処理 Z 処理 A 処理 A 処理 B 処理 B 処理 Z その分、処理に 時間を割かれる 処理 Z 処理 A 変化があった時のみ 処理すればよい 処理 A 処理 B 処理 B 処理 A 処理 Z 処理 B
1.割り込み(3) 割り込み機能の特徴 CASE 2 とても時間のかかる処理、処理C , D と すぐに反応がほしい 処理Y 割り込みの仕組みがないと。。。 割り込みを活用すると。。。 処理 C 処理 C 処理が終わるまで 次の処理に移行 しない ボタン入力! 処理 Y ボタン入力! 処理 Y 処理 D 処理 D 長い処理の間は 応答できない 処理 Y 変化があった時、 すぐに対処できる 処理 Y
1.割り込み(4) 内部割込み 実行中のプログラムが原因で起こる割り込み。 プログラム割り込み カーネル呼び出し割り込み オーバーフロー、ゼロ除算、記憶保護例外 など。 カーネル呼び出し割り込み タスクやページ切り替え、ソフトウェア割り込み、 カーネル呼出し命令の実行 など。
1.割り込み(5) 外部割込み 実行中のプログラムに関係ない割り込み。 入出力割り込み タイマ割り込み コンソール割り込み 入出力装置の動作完了や中断、センサ検出 など。 タイマ割り込み 所定の時間が経過したとき。 コンソール割り込み 装置を操作している人が、割り込みを起こすスイッチを 操作したとき。
2.パイプライン(1) 先取り制御 ある命令の「命令取り出し段階」が終了したら、 「命令実行段階」へ移行すると同時に、 次の命令の「命令取り出し段階」へ進む方式。 命令取り出し段階 (fetch cycle) 命令実行段階 (execute cycle) 命令サイクル
2.パイプライン(1) 先取り制御 取出 実行 命令 a 取出 実行 命令 b 取出 実行 命令 c 取出 実行 命令 d 取出 命令 a 処理時間が 1 2 となる。 実行 取出 命令 c 実行 取出 命令 d 実行
2.パイプライン(2) パイプライン 先取り制御をさらに発展させ、 各段階の処理ステージごとに先読みして実行する 方式。 F 各段階の処理ステージごとに先読みして実行する 方式。 F フェッチ 命令取り出し段階 (fetch cycle) D 解析 A PC更新 R 読み出し 命令実行段階 (execute cycle) E 実行 S 格納 命令サイクル
2.パイプライン(2) パイプライン 命令 a F D A R E S 命令 b F D A R E S 命令 a F D 命令 b F A 命令 c F R A D 命令 d F E R A D S E R A 処理時間が 1 6 となる。 S E R S E S
2.パイプライン(3) 先取り制御 や パイプライン の 効果 プログラムの流れがきれいな場合に、 最も効果を発揮する。 分岐命令があると、 流れを乱すことになるので、 先読みしていたものが、 無駄になることがある。
2.パイプライン(3) 先取り制御 や パイプライン の 効果 命令の長さが、 コード長や処理時間において一定だと、 コード長や処理時間において一定だと、 制御機構がシンプルになり パイプライン化しやすい。 RISCのようにシンプルなほど、 高速化も実現しやすく、 命令ステップ数が増えても、 実行速度が上がることもある。
2.パイプライン(3) PICマイコンの例(RISC型)
3.並列処理(1) 並列処理 複数の処理を並行して行なうことにより、 時間のかかる処理をしながら、 他の処理もできるようにして 時間のかかる処理をしながら、 他の処理もできるようにして 効率を上げる方式。 時間がかかる処理の終了を待つことなく、 他の処理が進められるので、早く結果が得られる ようになる。
3.並列処理(2) イメージでの比較 タスクA タスクB タスクC タスクA タスクB タスクC タスクAの要求 タスクBの要求 (リードタイム) タスクB のリードタイム タスクC のリードタイム タスクA タスクB タスクC タスクB の リードタイム タスクC の リードタイム タスクA の要求から終了までの時間 (リードタイム)
3.並列処理(3) マルチプロセッサ 複数のプロセッサを使って、 処理を分散させて、高速化する方式。 CPU A CPU B CPU C 処理を分散させて、高速化する方式。 CPU A CPU B CPU C 共通の プログラムコードや データ 共有 メモリ
3.並列処理(4) マルチプロセッサの活用 CPU CPU A CPU B CPU C タスクA タスクB タスクC タスクA タスクB
@