コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18...

26
コンピュータアーキテクチャ 13割込みアーキテクチャ 2013年12月18日 金岡 晃

Transcript of コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18...

Page 1: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

コンピュータアーキテクチャ第13週 割込みアーキテクチャ

2013年12月18日

金岡 晃

Page 2: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

授業計画

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 期末試験

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

Page 3: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

【復習】第12週キャッシュメモリと仮想メモリ

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

2 2013/12/18 コンピュータアーキテクチャ

Page 4: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

一度アクセスされたアドレスに近いアドレスは、近い時間内にアクセスされる可能性が高い

参照局所性

2013/12/18 コンピュータアーキテクチャ3

実行中のプログラムが主記憶装置にアクセスする場合には、空間的・時間的な参照局所性(Referential Locality)がある

メモリの空間的参照局所性

一度アクセスされたアドレスは、近い時間内に再びアクセスされる可能性が高い

メモリの時間的参照局所性

アドレス付近の格納データをブロック単位でキャッシュメモリに転送

参照局所性により、効率的なメモリアクセスが可能になる

Page 5: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

• キャッシュメモリの特定のブロックに格納される主記憶装置のブロックを決めておく方式

• 簡単なハードウェアで実現できるが、同一グループ内の他ブロックに対して頻繁にアクセスが生じる場合にはアクセス速度が遅くなる

キャッシュメモリのマッピング方式(1)

2013/12/18 コンピュータアーキテクチャ4

ダイレクトマッピング(Direct Mapping)方式

Page 6: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

キャッシュメモリのマッピング方式(2)

2013/12/18 コンピュータアーキテクチャ5

• キャッシュメモリのどのブロックに対しても、主記憶装置の任意のブロックが転送できる方式

• 転送の自由度は増えるがハードウェアが複雑になる

フルアソシアティブマッピング(Full Associative Mapping)方式

Page 7: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

キャッシュメモリのマッピング方式(3)

2013/12/18 コンピュータアーキテクチャ6

• キャッシュメモリのブロックをグループ化しておき、そこに転送できる主記憶装置のブロックもグループ化しておく方式

• ハードウェアの複雑さとデータ転送の自由度のトレードオフの観点から、現在の多くのコンピュータで採用されている。

セットアソシアティブマッピング(Set Associative Mapping)方式

Page 8: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

主記憶への転送方式(1)

2013/12/18 コンピュータアーキテクチャ7

• キャッシュメモリへの書き込みが生じた際には、それと同時に主記憶装置も更新する方式

• キャッシュメモリの一致性問題を回避することができるが、書き込み時の高速アクセスは実現しない

ライトスルー方式

Page 9: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

主記憶への転送方式(2)

2013/12/18 コンピュータアーキテクチャ8

• キャッシュメモリへの書き込みが生じた場合でも、すぐには主記憶装置への転送を行わない方式

• 一致性問題を抱え制御が複雑になるが、アクセスの高速化は実現できる

ライトバック方式

Page 10: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

仮想メモリ

• マルチタスクと主記憶装置

– コンピュータでソフトウェアを実行する場合にはそのプログラムを主記憶装置に格納しておくことが必要条件

– マルチタスクで複数プログラム+プログラムの高度化によりプログラムのサイズは増加傾向

• 仮想メモリ

– 主記憶装置を仮想的に増大させる技術

– 補助記憶装置(一般的にはハードディスク装置)上に構成された空間

– 実メモリへは参照局所性を活用してアクセス可能性の高い仮想アドレス付近のブロック領域を割り当てる

2013/12/18 コンピュータアーキテクチャ9

比較項目 仮想メモリ キャッシュメモリ

目的 主記憶領域の増大化(空間的) アクセスの高速化(時間的)

ブロックサイズ 大きい(512~8192B程度) 小さい(4~128B程度)

主記憶装置との転送速度 対象が補助記憶装置であるため低速

対象がキャッシュメモリであるため高速

制御方法 OS主体(高速性をさほど重視しない)

ハードウェア主体(高速性を重視)

Page 11: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

仮想メモリの分割方式(1)

2013/12/18 コンピュータアーキテクチャ10

• ブロックサイズをある一定の大きさいに決める方式• ブロックをページと呼

ぶ• 一般的には1ページを4KB

程度のサイズにする• 現在の主流となっている

ページング方式

Page 12: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

仮想メモリの分割方式(2)

2013/12/18 コンピュータアーキテクチャ11

• プログラムの論理的な区切り(コード部とデータ部など)によってブロックサイズを決める方式

• ブロックをセグメントと呼ぶ

• セグメント内をさらにページに分割するページセグメンテーション方式などがある

セグメンテーション方式

Page 13: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

仮想アドレスのマッピング方式

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

仮想アドレスを実アドレスに対応させる(アドレス変換)

Page 14: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

第13週割込みアーキテクチャ

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

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

Page 15: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

割り込みとは

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

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

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

2013/12/18 コンピュータアーキテクチャ14

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

Page 16: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

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

2013/12/18 コンピュータアーキテクチャ15

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

トラップ(Trap)

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

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

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

例外

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

場合に発生する割り込み

Page 17: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

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

2013/12/18 コンピュータアーキテクチャ16

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

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

Page 18: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

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

2013/12/18 コンピュータアーキテクチャ17

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

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

Page 19: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

割り込みの分類

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

Page 20: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

割り込み:その他

2013/12/18 コンピュータアーキテクチャ19

アボート(Abort)

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

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

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

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

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

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

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

Page 21: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

割り込みベクタ(Interrupt Vector)

2013/12/18 コンピュータアーキテクチャ20

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

Page 22: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

割り込み処理の流れ(1)

2013/12/18 コンピュータアーキテクチャ21

コンディションコードレジスタ(Condition Code Register:CCR)

プロセッサはしばしば様々な演算の状態を示すレジスタ(ステータスレジスタ)を持つ。CCRもその1種。

Page 23: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

割り込み処理の流れ(2)

2013/12/18 コンピュータアーキテクチャ22

マスカブル割り込み処理の流れ

• プログラムカウンタPCとコンディションコードレジスタCCR(フラグレジスタ)の値をスタックに待避する。汎用レジスタのデータは必要に応じてユーザが待避させる

• CCRの割り込みビットIを1にセットし、他の割り込み受付を禁止する• 割り込みベクタテーブルによるアドレスへ分岐する。割り込みルーチン

を実行する• 復帰命令RTEの実行により復帰処理を開始する

• サブルーチンからの復帰命令RTSとは異なることに注意• 待避してあるPCとCCRの値をスタックから復元して通常ルーチンを再

開する

Page 24: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

割り込み受付タイミング

• 一般的には割り込みが発生した時点で処理していた機械語命令の実行を終えてから割り込みの受付を行う

– 割り込みの発生から受付までに待ち時間を生じる

• CISCでは1命令が多いクロック数で実行される場合があるため、実行時間の長い命令に対してはその命令の実行を中断してすぐに割り込みを受け付けるCPUもある。この場合には、割り込みルーチンからの復帰後には、中断した命令を再び実行することになる

2013/12/18 コンピュータアーキテクチャ23

Page 25: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

ウォッチドッグタイマ(WDT)

• プログラムが正常に実行されている場合、プログラムカウンタ(PC)はメモリのプログラムが格納されているアドレスを示している。しかし、何らかのトラブルが発生してPCの値が無意味なアドレスになってしまうとプログラムの制御は不能となる

• WDTは設定したカウントを終了するとシステムをリセットする働きがある。したがって、WDTを起動しておき、カウントが終了する前にWDTをクリアすることを繰り返す

• WDTのクリアが正常に行われていれば、システムはリセットされることはないが、プログラムが制御不能となるとWDTのクリアが行われないのでカウントが終了すると同時にリセット割り込みが発生する

2013/12/18 コンピュータアーキテクチャ24

プログラムが暴走している場合にリセット割り込みを発生させる機能

Page 26: コンピュータアーキテクチャ...割り込みベクタ(Interrupt Vector) 20 2013/12/18 コンピュータアーキテクチャ 割り込み発生時に起きる通常ルーチンから割り込みルーチンへの分岐の分岐先

本日の到達目標と概要

• 到達目標

– 割り込みの仕組みを理解する

• 概要

– 割り込み処理とは

– 割り込み処理の種類:内部割り込み、外部割り込み、リセット割り込み

– 割り込み処理の流れ、受付タイミング

– ウォッチドッグタイマ

25 2013/12/18 コンピュータアーキテクチャ