8. 入出力とは何か?
• コンピュータの三大コンポーネント
o 計算する 中央処理演算装置
o 記憶する (CPU)
o 入出力(I/O)する
主記憶装置
• I/Oはコンピュータにとって (Main
Memory)
必須ではない
o I/Oなしでも計算はできる
入出力装置
(I/O
Devices)
8
9. 入出力とは何か?
• 電卓で言えば
o 液晶画面(Output)
o テンキー(Input)
9
10. (参考) Linux KVMの仮想マシンのハードウェア構成
CPU
Intel
82441FX
System
Memory
(North-‐bridge)
Cirrus
Logic
LSI
Logic
VGA
CL-‐GD5446
SCSI
HDD
LSI53c895a
Realtek
PCI
PCI
Slot
Ethernet
RTL8029
Bus
PCI
Slot
Ensoniq
Speaker
ES1370
IDE
HDD
PIIX3
PCI
IDE
Intel
82371
PIIX3
CD-‐ROM
Bochs
(South-‐bridge)
PIIX3
PCI
USB
USB
Flash
BIOS
ISA
Bus
ISA
Floppy
Real
Time
Keyboard
Clock
I/O
Interface
PS/2
PC
Speaker
Mouse
Serial
Parallel
10
Port
Port
出典:
KVM徹底入門 (2010年 翔泳社)
14. 割り込み (interrupt)
• デバイスからCPUへイベントを通知するための信号
o IRQ(Interrupt ReQuest) = 割り込み入力用の16本の信号線
• 割り込みハンドラ
o 割り込みが発生すると、CPUは割り込みハンドラに制御を移す
o 今時に言えば…… 何か起きたときの Listener を定義できる
• 使途
o タイマーの通知
o キーボードの状態変化通知
o データ転送完了通知(DMA, MMIO)など
14
27. IRQの共有
• 割り込み信号線を複数のデバイスで共有する
o 15本しかないIRQ
o 例:キーボードとマウスで同じIRQを使う
• 割り込み信号線を共有した場合の問題点
o 割り込みの発生元がわからない
o 割り込みが発生した!キーボードが押された?マウスが動いた?
• 解決策
o 割り込み発生を発生された時に1になるフラグをハードウェアに準備する
o 割り込みが発生したら、各ドライバのステータスをチェックし、必要な
ハンドラのみが実行される
27
30. PCIバス
• Peripheral Component Interconnect
• コンピュータに各種ハードウェアデバイスを接続するための
標準仕様
o 32bit パラレル通信, 33MB/sec, 帯域幅133MB/s
• プラグアンドプレイ(Plug and Play
Pray)
o 接続されたデバイスの種類や必要リソース情報を提供し、OSが自動的に
リソースアサインできるようにする
o I/Oポート、IRQ、メモリマッピングなど
o 活線挿抜ができるわけではない
30
34. MSI
• Message Signal Interrupt
o メモリ書き込みにより割り込みを通知する (0x0FEExxxx)
o PCIデバイスで利用される
o IRQを使わない
o 32 メッセージまで共存可能
• Enhanced MSI (MSI-X)
o PCI Express バス向けの MSI
o PCI Express 2.0 では実装が必須に
o 2048 メッセージまで共存可能
34
38. まとめ
• I/Oとは
o コンピュータに対するデータ入力/出力の機能
• 代表的なI/O方法
o I/Oポート、割り込み
o メモリマップドI/O、DMA
• バス
o 拡張バス
• PCI, PCI-X, PCI Express
o 最近の内部バス
• 現代のコンピュータはほとんどNUMA <-> UMA
• Quick Path Interconnect, Hyper Transport
38