เนื้อหาหลัก Key Topics
- สมรรถนะอุดมคติของ Pipeline Pipeline N ขั้นทำให้ throughput สูงขึ้น N เท่าในทางทฤษฎี (Speedup = N) แต่ผลจริงต่ำกว่าเนื่องจาก Hazard และ Overhead ของ Pipeline Register
- Structural Hazard เกิดเมื่อทรัพยากรฮาร์ดแวร์ไม่พอ เช่น หน่วยความจำเดียวกันถูกอ่าน 2 ครั้งพร้อมกัน แก้ไขด้วยการแยก Instruction Memory และ Data Memory
- Data Hazard (RAW/WAW/WAR) คำสั่งถัดไปต้องการผลลัพธ์ที่ยังไม่เสร็จ แก้ด้วย Hardware Forwarding (ส่งผลลัพธ์ตรงไปยังขั้นตอนถัดไป) หรือ Software NOP Insertion
- Control Hazard (Branch Hazard) หลัง Branch ไม่รู้ว่าจะเดินไปทางไหน แก้ด้วย Branch Delay Slot (ให้คำสั่งหลัง Branch ทำงานก่อนเสมอ) หรือ Branch Prediction
- Pipeline Datapath เพิ่ม Pipeline Register (IF/ID, ID/EX, EX/MEM, MEM/WB) ระหว่างทุกขั้นตอนเพื่อแยกการทำงานของแต่ละ stage ออกจากกัน
สูตรสำคัญ Key Formulas
Pipeline Speedup (อุดมคติ)
\[ \text{Speedup} = N \quad \text{(N = จำนวน Pipeline Stages)} \]
Speedup จริง (มี Stall)
\[ \text{CPI}_{\text{pipeline}} = 1 + \text{Stall cycles per instruction} \]
\[ \text{Speedup} = \frac{N}{1 + \text{Stall}_{\text{avg}}} \]
ประเภท Data Hazard
RAW (Read After Write) — พบบ่อยที่สุด, ต้องการ Forwarding
WAW (Write After Write) — เกิดในสถาปัตยกรรมที่มีหลาย functional unit
WAR (Write After Read) — พบในสถาปัตยกรรมที่ reorder instructions
คำสำคัญ Key Terms
ไปป์ไลน์ · Pipeline
ขั้นตอน · Stage (IF/ID/EX/MEM/WB)
อุปสรรค · Hazard
Structural Hazard
Data Hazard
Control / Branch Hazard
การหยุด · Stall / Bubble
การส่งต่อตรง · Forwarding / Bypassing
ช่องหน่วง · Branch Delay Slot
ลงทะเบียน Pipeline · Pipeline Register
RAW / WAW / WAR