割り込みと入出力

c 石浦 菜岐佐)
「コンピュータアーキテクチャ」ノート (2015 年度, http://ist.ksc.kwansei.ac.jp/∼ishiura/arc/
割り込みと入出力
6
原因 , 仕組み
SSD について知る
♣ 割り込みの概念,
♣
6.1
HDD
と
を理解する
割り込みとその原因
interrupt
割り込み (
)
プログラムの実行を (プログラムの) 外部から
☆
外部
内部
割り込みと
• 外部割り込み (
中断
⇒
別の
処理を優先して実行
割り込みに分類される
ハードウェア
割り込みとも言う)
– 原因が CPU (および主記憶) の外部にある
– CPU の
割り込み要求
1. 入出力
–
キーボード
や
– 入出力装置からの処理
2.
リセット
(IRQ) 端子に信号を加えることにより発生
マウス
完了
の操作
異常
通知,
通知
, オペレータのコンソール 1 操作
3. タイマー
– 入出力装置やネットワーク等からの応答待ちの
– 一定時間経過によるプロセスの
打ち切り
切替え
4. ハードウェア障害
–
電源
• 内部割り込み (
異常, その他ハードウェアの障害
ソフトウェア
割り込みとも言う)
– 原因が CPU および主記憶にある
1. 演算例外
–
ゼロ除算
2. 記憶例外
– 仮想記憶の
– 主記憶の
,
オーバフロー
ページフォルト
保護
2
領域へのアクセス 3 , メモリー
1 オペレータ
整列
制約違反
(管理者) がコンピュータを操作するための特別な端末
仮想記憶において, アクセスしたデータが主記憶にないこと.
3 C プログラミングの演習で出る “Segmentation fault” の主な原因. 配列のサイズ外の添字や, 初期化されていないポインタでメモリー
をアクセスすると, そのプログラムには許可されていない番地にアクセスすることになり, この割り込みが発生する.
2
6–1
3. 命令例外
–
未定義
命令の実行 (機械語がデコードしようとしたら, 該当命令がない)
特権
– ユーザモードでの
命令の実行
bababababababababababababababababababababab
特権命令
汎用のコンピュータでは, 一般のプログラムがシステムに重大な影響を与えるのを避けるために, 下記の
ような命令は, 特別な権限を持つ「特権モード」で実行されるプログラム (通常
きないようになっている.
停止
∗ コンピュータを
入出力
) にしか実行で
したり, タイマーやシステムレジスタを書き換える命令
∗ 主記憶のアクセス権限の管理 (
∗
OS
保護
領域の設定等) 行う命令
を行う命令
∗ プログラムの実行モードを変更する命令
4. スーパバイザコール (
–
入出力
OS
機能の呼び出し)
の要求, 主記憶の
動的
割当て, 他のプロセスとの
通信
等
☆ ユーザプログラムから OS を「呼び出す」ことはできない. 自ら割り込みを起こして, それを
OS に「拾ってもらう」という方法をとる. つまり, 呼び出したい機能の番号等をオペランド
トラップ
や特定のレジスタに設定した上で,
を実行する.
名称: 割り込みを次のように区別することがある
– トラップ命令の実行により起こる割り込み→
– それ以外 →
6.2
例外
(
exception
命令 (割り込みを
トラップ
(
trap
発生
)
)
割り込みの処理
• 割り込みハンドラ (interrupt
handler
; あるいは「割り込みサービスルーチン」)
– 割り込みに対する処理を行うプログラム
(例) ゼロ除算 → そのプログラムを終了させる
(例) ページフォルト → ページの入れ替え処理 (の起動)
• 割り込みの処理の流れ
0. 割り込みの検出と選択
– 割り込みの
–
複数
原因
を知る (後述)
の割り込みが発生した時の処理 (後述)
– 割り込みの
許可/抑止
を決定 (後述)
1. 割り込みの受け付け
6–2
させる命令)
– 他の割り込みを
禁止
– 割り込まれたプログラムの状態を
∗
保存
プログラムカウンタ
や
汎用レジスタ
復帰
∗ 割り込み処理終了後に, 元のプログラムに
2. 割り込みに対する処理
– 割り込みの原因に対応する
– プログラムの状態 (レジスタ等) の
– 割り込み発生地点への
するため
割り込みハンドラ
3. 元のプログラムへの復帰
等の値を保存
に分岐する
復元
分岐
☆ 復帰する場合としない場合がある
∗ ページフォルト, スーパバイザコール → 復帰
する
∗ 演算例外, 命令例外, ハードウェア障害等 → 復帰
しない
• 割り込みレジスタ
– 割り込み発生時に値がセットされる
– 1 ビットが 1 つの割り込み
原因
に対応 → 割り込みの原因がわかる
page fault
overflow
zero division
....
memory error
(例)
→
ゼロ除算
が発生
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
• 複数の割り込みの処理
– 割り込み処理の途中で別の割り込みが発生 (
∗ 後続の割り込みの許可/抑制を
多重
マスク
(レベル) 割り込み)
(後述) で制御
– 複数の割り込みが
同時
に発生
∗ 割り込みには
優先
順位が定められている
∗ 「プライオリティエンコーダ」等で, 優先順位最高のもの (の番号) を選ぶ
(例) 番号が小さいほど優先順位が高い場合
1
1
1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
priority encoder
8 4 2 1
0 1 0 1 (5)
• 割り込みマスクレジスタ
– 割り込みの許可/抑制を制御するレジスタ
– 割り込みの原因の 1 つに 1 ビットが対応
6–3
∗ i ビット目が 0 → i 番目の原因の多重割り込みを
許可
∗ i ビット目が 1 → i 番目の原因の多重割り込みを
抑制
– マスクレジスタの設定
∗ あるものは
ユーザ
∗ あるものは
OS
がセットできる (
オーバフロー
入出力割り込み
がセットする (
∗ あるものはセットできない (
(割り込みを「マスク」する)
ハードウェア障害
など)
など)
など)
– マスクの設定の可否による分類
maskable interrupt
∗ マスクがセットできない割り込み → non-maskable interrupt ( NMI
∗ マスクがセットできる割り込み →
6.3
6.3.1
)
補助記憶装置
ハードディスク (HDD: hard disk drive)
• 構造
head
sector
–
ヘッド
–
トラック
–
セクタ
–
シリンダ
track
sector
(head) … 磁気データの読み書きを行う部分
(track) … データを記録するディスク上の同心円
(sector) … トラックの一部 (ひとまとまりのデータを記録する)
(cylinder) … 同じ半径のトラックの集合
• 記録されたデータは電源を切っても
• アクセス時間= (1)
シーク
(1) ヘッドをトラックに
(2) 目的の
cylinder
track
セクタ
消えない
時間 + (2)
ヘッド
(3) セクタのデータをヘッドで
不揮発
回転待ち
位置合わせ
が
(
)
時間 + (3)
データ転送
時間
する時間
のところまで来るのを待つ時間
読み書き
する時間
例題 6.1 次のようなハードディスクで 5KB (の連続するセクタ) のデータのアクセスに要する平均時間を求めよ.
平均シーク時間
回転速度
転送速度
15 ms
3000 rpm
10 MB/s
(※) rpm =
revolution per minute
(解) アクセス時間 = (1) シーク時間 + (2) 回転待ち時間 + (3) データ転送時間
(1) シーク時間 = 15 ms
6–4
(1 分あたりの回転数)
半分
(2) 回転待ち時間 = 1 回転の時間 (秒) の
=
(60/3000)/2
= 0.01 = 10 ms
(3) データ転送時間 = 5,000/10,000,000 = 0.5 ms
よって, 合計 15 + 10 + 0.5 = 25.5 ms
• ハードディスクの欠点
– CPU に比べて
遅い
壊れ易い
–
(ディスクとヘッドの接触, シーク制御不良, 回転制御不良等)
• ハードディスクの高速化
– 読み出したデータを RAM やフラッシュに
– 複数のハードディスクにデータを分散し,
キャッシュ
並列
4
にアクセス (メモリーインタリーブと同様)
• ハードディスクの高信頼化
– RAID (redundant array of inexpensive disks)
重複
複数のハードディスクにデータを
記録 (
→ 1 台が故障してもデータが失われない
6.3.2
誤り訂正
技術を併用)
フラッシュメモリと SSD
• フラッシュメモリ (flash memory)
– EEPROM
• Flash
SSD
5
の一種 (
不揮発
)
(solid state drive)
フラッシュメモリをハードディスクと同じインタフェースでアクセスできるようにした装置
– 長所 · · ·
高速
– 短所 · · · 書き込み
6
,
振動や衝撃
回数
が限られる
(フラッシュメモリ単体では
→
仮想
に強い
数百
回程度; SSD では
数十万
回程度 7 )
記憶のスワップ領域, 更新の多いデータベース等には不向き
Nagisa ISHIURA
4 キャッシュメモリーと同じような原理で, 同じデータへの繰り返しアクセスを高速化する. 同様の考え方は, コンピュータの他の部分でも
よく使われていて, 例えば WWW ブラウザ (Internet Explorer 等) でも, 1 度アクセスしたページのデータを HDD に「キャッシュ」する.
5 Electrically Erasable Programmable ROM
6 ハードディスクのようにシーク動作や回転待ちがないため, 特にランダムアクセスの読み出しは高速である. ただし, データの書き込みは
必ずしも高速でない場合がある. データを書き込むためには, 一旦データを消去してから書き込まなければならないが, 書き込みはビット/バ
イト単位ではなくブロック単位でしか行えないため, 書き込み前にブロックのデーターのコピーや消去が必要になる.
7 「ウェアレベリング」と言って, ソフトウェア的に書き換え箇所の集中を避ける工夫が施される.
6–5