เนื้อหาหลัก Key Topics
- บทบาทของระบบ I/O I/O เป็นเสาหลักที่สามของคอมพิวเตอร์ มีความหลากหลายสูง (ความเร็ว ความหน่วง ทิศทาง) และสามารถริเริ่มการสื่อสารเองได้ (asynchronous)
- Programmed I/O — Polling CPU วน loop ตรวจสอบสถานะอุปกรณ์ซ้ำๆ เรียบง่ายแต่สิ้นเปลือง CPU รอบสูง เหมาะกับอุปกรณ์ที่ตอบสนองเร็วและงาน real-time เรียบง่าย
- Interrupt-Driven I/O CPU ทำงานอื่นต่อไป เมื่ออุปกรณ์พร้อมจะส่ง Interrupt signal ให้ CPU หยุดและเรียก ISR (Interrupt Service Routine) มีประสิทธิภาพกว่า polling สำหรับงาน I/O ไม่บ่อย
- Direct Memory Access (DMA) DMA Controller โอนข้อมูลโดยตรงระหว่างอุปกรณ์และ RAM โดยไม่ผ่าน CPU — CPU ว่างทำงานอื่นระหว่างโอน เหมาะกับข้อมูลปริมาณมาก
- Memory-Mapped I/O vs. Port-Mapped I/O Memory-Mapped: register ของอุปกรณ์ดูเหมือน address ในหน่วยความจำ ใช้คำสั่ง load/store ปกติ (วิธีที่ RISC-V ใช้); Port-Mapped: มี address space แยกและคำสั่งพิเศษ IN/OUT (x86)
- การจัดการ Interrupt ใน RISC-V (CLINT / PLIC) CLINT (Core Local Interruptor) — software/timer interrupt; PLIC (Platform-Level Interrupt Controller) — external interrupt จากอุปกรณ์ภายนอก; จัดการลำดับความสำคัญ (priority) และการ masking
- Interconnect สมัยใหม่ PCIe (อุปกรณ์ peripheral), USB (consumer), AMBA AXI (on-chip), CXL (data center) — ทั้งหมดใช้ serial bus แทน parallel bus เพื่อรับมือกับความถี่สูง
สูตรสำคัญ Key Formulas
Interrupt Latency
\[ T_{\text{int latency}} = T_{\text{detect}} + T_{\text{save context}} + T_{\text{ISR}} + T_{\text{restore}} \]
CPU Overhead ของ Polling
จำนวน Poll ต่อวินาที = Data Rate / Bytes per Poll
CPU Overhead = จำนวน Poll × รอบต่อ Poll / Clock Rate
Queuing Theory — Utilization
\[ \rho = \lambda / \mu \quad (\rho < 1 \text{ ระบบเสถียร}) \]
ควรออกแบบให้ ρ ≈ 0.7–0.8 เพื่อสมดุล throughput และ latency
คำสำคัญ Key Terms
การสำรวจสถานะ · Polling
การอินเทอร์รัปต์ · Interrupt
โปรแกรมจัดการอินเทอร์รัปต์ · ISR (Interrupt Service Routine)
DMA (Direct Memory Access)
Memory-Mapped I/O
Port-Mapped I/O
CLINT
PLIC
CSR (Control and Status Register)
ความหน่วงอินเทอร์รัปต์ · Interrupt Latency
PCIe / USB / AMBA AXI / CXL
UART