31
コンピュータアーキテクチャ 14パイプライン 2014年1月8日 金岡 晃

コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

コンピュータアーキテクチャ第14週 パイプライン

2014年1月8日

金岡 晃

Page 2: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

授業計画

1

第1週

(9/25)

授業概要・2進数表現・論理回路の復習

第2週

(10/2)

2進演算(数の表現)

第3週

(10/9)

演算アーキテクチャ(演算アルゴリズムと回路)

第4週

(10/16)

休講

第5週

(10/23)

休講

第6週

(10/30)

ノイマン型コンピュータ・命令とは・命令の使い方

第7週

(11/6)

命令セットアーキテクチャ(命令の表現・命令の実行の仕組)

第8週

(11/13)

中間試験

第9週

(11/20)

休講

第10週

(11/27)

ハーバードアーキテクチャ・RISCとCISC・制御アーキテクチャ

第11週

(12/4)

メモリの仕組

第12週

(12/11)

キャッシュメモリと仮想メモリ

第13週

(12/18)

割込みアーキテクチャ

第14週

(1/8)

パイプライン

第15週

(1/17)

入出力アーキテクチャ・まとめ

1/22-2/8 期末試験

2014/1/8 コンピュータアーキテクチャ

Page 3: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

【復習】第13週割込みアーキテクチャ

コンピュータアーキテクチャ

2 2014/1/8 コンピュータアーキテクチャ

Page 4: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

割り込みとは

• 通常ルーチンを処理しているときに割り込みが発生すると、実行していた通常ルーチンを中断して割り込みルーチンへ分岐する。

• 割り込みルーチンの実行が終了した後にもとの通常ルーチンへ復帰する。

– 通常ルーチンは中断するものの、結果としては通常ルーチンと割り込みルーチンが平行して実行されたように見える

2014/1/8 コンピュータアーキテクチャ3

実行中の処理を一度停止して、他の処理を行った後に再開する機能

Page 5: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

割り込みの分類:内部割込み

2014/1/8 コンピュータアーキテクチャ4

ソフトウェア割り込みとも。プログラム中で明示的(意図的)または暗黙的(非意図的)に処理される割り込み

トラップ(Trap)

ソフトウェア割り込みとも。プログラム中で明示的(意図的)または暗黙的(非意図的)に処理される割り込み

• プログラム中で明示的(意図的)に処理される割り込み• ユーザプログラムからOSを呼び出して制御を行うスーパーバイザコール(SVC:

Supervisor Call)命令や、プログラムの中断をOSに知らせるブレークポイント(Break Point)命令などの実行によって割り込みを発生する。

例外

• プログラム中で暗示的に処理される割り込み• ゼロ除算、未定義命令、ユーザモードにおいて特権命令などを実行しようとした

場合に発生する割り込み

Page 6: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

割り込みの分類:外部割込み

2014/1/8 コンピュータアーキテクチャ5

• ハードウェア割り込みとも• 入出力装置からの動作完了信号やタイマからの一定時間経過信号などによっ

て発生する割り込み• 機械語命令とは非同期に発生

Page 7: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

割り込みの分類:リセット割り込み

2014/1/8 コンピュータアーキテクチャ6

• 実行中のルーチンを強制的に終了し、コンピュータを初期状態に戻す割り込み

• CPUのリセット端子に有効な信号を入力することで発生するもっとも優先度の高い割り込み

Page 8: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

割り込みの分類

2014/1/8 コンピュータアーキテクチャ7

Page 9: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

割り込み:その他

2014/1/8 コンピュータアーキテクチャ8

アボート(Abort)

• 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ復帰するのが基本

• 復帰しても通常処理の再開が期待できない場合などは、復帰せずにそのままコンピュータの動作を停止することがある

ノンマスカブル割り込み(NMI:Non Maskable Interrupt)

• 受付を禁止できない割り込み• リセットやハードウェア障害など、優先度の高い割り込みについてはノンマスカ

ブル割り込みを使用する必要がある

マスカブル割り込み(Maskable Interrupt)

• 受付を禁止できる割り込み

Page 10: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

割り込みベクタ(Interrupt Vector)

2014/1/8 コンピュータアーキテクチャ9

割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先を示すデータ

Page 11: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

第14週パイプライン

コンピュータアーキテクチャ

10 2014/1/8 コンピュータアーキテクチャ

Page 12: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

本日の到達目標と概要

• 到達目標

– パイプラインとその他のコンピュータの高速化手法を理解する

• 概要

– パイプラインとは

– ハザード

– 遅延分岐と予測分岐

– その他の高速化技術

• スーパーパイプライン、スーパースカラ、VLIW、ベクトルコンピュータ、マルチプロセッサ

11 2014/1/8 コンピュータアーキテクチャ

Page 13: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

コンピュータの命令実行

1. メモリから命令を取り出す(フェッチ)

2. デコード

3. 実行

2014/1/8 コンピュータアーキテクチャ12

命令実行の流れ

4つの命令を実行したとき、各段階にCPUの1クロックを要するとすると4個の命令すべてを実行するのに12クロックを要する

Page 14: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

ワイヤードロジック制御の事例

2013/12/04 コンピュータアーキテクチャ13

デコード情報を配線によって直接的にALUやPC、汎用レジスタなどに与える方法

入力 出力

S1 S0 Y

0 0 レジスタA

0 1 オールゼロ

1 0 入力ポート

1 1 オールゼロ

セレクタの動作

モデル

制御信号

動作

0 ロード(データを読み取る)

1 • PCは、+1(カウントアップ)

• A、出力は、ラッチ• (データの保持)

レジスタの動作

フェッチ

デコード

実行

Page 15: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

パイプラインとは

2014/1/8 コンピュータアーキテクチャ14

各命令の段階(ステージ)を他の命令と並行して行う

Page 16: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

パイプラインの構成

2014/1/8 コンピュータアーキテクチャ15

• IF(フェッチ):メモリから命令を取り出す• RF(デコード):命令の解読、同時にレジスタのオペランドをフェッチする• EX(実行):命令の実行、ロード/ストア命令の場合には有効アドレスの計算、分岐命令の場合

には分岐先アドレスの計算を行う• MEM(オペランドフェッチ):ステージEXで計算したアドレスからデータをフェッチする• WB(ライトバック):ステージEX、MEMの結果をレジスタやメモリなどに書き込む

一般的に各ステージは要する時間は同じ時間(1クロック)ではない。パイプラインでは同じ時間で処理する必要があるため、ステージ処理時間はもっとも長いステージを基準にして決められるため、各ステージの処理時間には待ち時間が含まれることがある

オーバーヘッド:処理を行うために必要な要素

Page 17: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

ストール

2014/1/8 コンピュータアーキテクチャ16

パイプライン処理では各命令が同じステージ数によって処理されていくことが基本

CISCではステージ数が異なる命令が存在する• 多いステージ数に合わせたパイプラインの構成が必要

ストール(Stall):短いステージで実行できる命令は不要なステージで待ち時間を設けるその待ち時間をストールと言う

Page 18: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

パイプライン処理が停滞する可能性

2014/1/8 コンピュータアーキテクチャ17

もっとも有効にパイプライン処理が行われている場合

パイプラインの流れが乱れると処理の効率が低下する

Page 19: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

ハザード

2014/1/8 コンピュータアーキテクチャ18

ハザード(Hazard):パイプラインの効率を低下させる要因

構造ハザード(Structural Hazard)

データハザード(Data Hazard)

制御ハザード(Control Hazard)

Page 20: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

構造ハザードと制御ハザード

2014/1/8 コンピュータアーキテクチャ19

構造ハザード(Structural Hazard)

制御ハザード(Control Hazard)

メモリやレジスタなどの機能を同時にアクセスしようとした際に発生するハザード。同時アクセスを回避するためにストールを挿入する

分岐命令実行時は、結果により次の実行命令が異なる。分岐しない場合にはハザードは起こらないが、分岐する場合は分岐先にある新しい命令をフェッチする必要が生じる割り込みやキャッシュミス、ページフォルトなどによっても発生する

インタロック(Interlock):ハザード発生時にパイプラインの動作を一時停止する

Page 21: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

データハザード

2014/1/8 コンピュータアーキテクチャ20

データをアクセスする際に発生するハザード

RAW(Read After Write)

先行命令がレジスタなどに処理結果を書き込んでいないのに後続命令がそのレジスタを読み込もうとした状態

WAR(Write After Read)

先行命令がレジスタなどからデータを読み取る前に後続命令がそのレジスタにデータを書き込もうとした状態

WAW(Write After Write)

先行命令がレジスタなどへデータを書き込む前に、後続命令が同じレジスタにデータを書き込もうとした状態

Page 22: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

分岐命令におけるハザード対策(1):遅延分岐

2014/1/8 コンピュータアーキテクチャ21

レジスタAの値が負であるときにラベルLOOPへ分岐するものとする

命令 実行フロー

Page 23: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

分岐命令におけるハザード対策(1):遅延分岐

2014/1/8 コンピュータアーキテクチャ22

分岐命令前のロード命令をほかの場所に移動してもプログラムの実行に影響がない場合は変更してロード命令を実行する

Page 24: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

分岐命令におけるハザード対策(2):分岐予測

2014/1/8 コンピュータアーキテクチャ23

繰り返し文による条件分岐ではほぼ毎回分岐する

分岐予測

分岐命令の実行結果を予想しハザードを減らす手法

近年は分岐予測のためにブランチターゲットバッファ(BTB)とブランチヒストリーテーブル(BHT)を備えたCPUが多い

1つの分岐情報によって予測が成功する確率は80~90%、さらに1つ前の分岐情報を用いればこれ以上になる

Page 25: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

他の高速化技術:スーパーパイプライン

2014/1/8 コンピュータアーキテクチャ24

各ステージの実行速度の高速化によるパイプライン処理の動作速度向上従来ステージをさらに分割

Page 26: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

他の高速化技術:スーパースカラ

2014/1/8 コンピュータアーキテクチャ25

各ステージで複数命令に対するフェッチやデコードを行うこと

各ステージで1つの命令に対するフェッチやデコードを行うことをシングルスカラ方式という

Page 27: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

• 非常に長い命令語長• 一般には256ビット以上の命令語長

他の高速化技術:VLIW

2014/1/8 コンピュータアーキテクチャ26

VLIW(Very Long Instruction Word)

スロットと呼ばれる領域で構成スロットはCPU機能と対応→複数の機能を同時動作させることが可能

Page 28: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

他の高速化技術:ベクトルコンピュータ

2014/1/8 コンピュータアーキテクチャ27

科学技術計算ではベクトル演算が多いCPU内にベクトル専用のデータレジスタを搭載して処理速度を高めたのがベクトルコンピュータ

Page 29: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

複数のCPUで同一メインメモリを共有するシステム

他の高速化技術:マルチプロセッサ

2014/1/8 コンピュータアーキテクチャ28

複数のCPUを用いて並列処理を行うことで処理速度の向上を実現

密結合システム(Tightly Coupled System)

個別のメインメモリを使用した各CPUを共有バスによって接続する

疎結合システム(Loosely Coupled System)

Page 30: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

他の高速化技術:マルチプロセッサ

2014/1/8 コンピュータアーキテクチャ29

Page 31: コンピュータアーキテクチャ...割り込み:その他 8 2014/1/8 コンピュータアーキテクチャ アボート(Abort) • 内部割込みと外部割込みは、割り込みルーチンを処理した後に、通常ルーチンへ

本日の到達目標と概要

• 到達目標

– パイプラインとその他のコンピュータの高速化手法を理解する

• 概要

– パイプラインとは

– ハザード

– 遅延分岐と予測分岐

– その他の高速化技術

• スーパーパイプライン、スーパースカラ、VLIW、ベクトルコンピュータ、マルチプロセッサ

30 2014/1/8 コンピュータアーキテクチャ