Comments
Transcript
キーボード や マウス の操作 完了 通知, 異常 通知 打ち切り 切替え ゼロ
c 石浦 菜岐佐) 「コンピュータアーキテクチャ」ノート (2016 年度, 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