🎯 Konsep Dasar Pipelining
Apa itu Pipelining?
Pipelining adalah teknik yang membagi eksekusi instruksi menjadi beberapa stage yang dapat dieksekusi secara paralel, mirip dengan assembly line di pabrik.
5-Stage Pipeline MIPS
Instruction Fetch
Instruction Decode
Execute
Memory Access
Write Back
Keuntungan Pipelining
- Increased Throughput: Lebih banyak instruksi diselesaikan per unit waktu
- Better Resource Utilization: Unit hardware digunakan lebih efisien
- Higher Clock Rate: Setiap stage lebih sederhana sehingga bisa berjalan lebih cepat
⚠️ Pipeline Hazards
Hazards adalah situasi yang mencegah instruksi berikutnya dieksekusi dalam clock cycle yang direncanakan.
| Jenis Hazard | Penyebab | Contoh | Solusi |
|---|---|---|---|
| Structural Hazard | Resource conflict | Dua instruksi butuh memory access bersamaan | Resource duplication, scheduling |
| Data Hazard | Data dependency | ADD R1, R2, R3 SUB R4, R1, R5 |
Forwarding, stalling, compiler scheduling |
| Control Hazard | Branch instructions | BEQ R1, R2, label | Branch prediction, delayed branch |
🔄 Data Hazards & Forwarding
Data Forwarding
Teknik mengirim hasil dari stage EX/MEM/WB langsung ke stage EX untuk instruksi berikutnya yang membutuhkan data tersebut.
ADD R1, R2, R3 // Hasil di R1
SUB R4, R1, R5 // Butuh R1 dari ADD
// Dengan forwarding, R1 dari ADD langsung
// dikirim ke SUB tanpa menunggu write back
🎮 Simulasi Data Forwarding
Perhatikan bagaimana forwarding mengatasi data hazard:
🎯 Branch Prediction
Strategi Branch Prediction
1. Static Prediction
- Always Taken: Selalu predict branch taken
- Always Not Taken: Selalu predict branch not taken
- Backward Taken, Forward Not Taken: Untuk loop optimization
2. Dynamic Prediction
- 1-bit Predictor: Remember last outcome
- 2-bit Predictor: Lebih stabil terhadap pattern changes
- Correlation Predictor: Consider recent branch history
Branch Target Buffer (BTB)
Cache yang menyimpan alamat target dari branch instructions yang pernah dieksekusi, mempercepat pengambilan instruksi berikutnya.
📊 Analisis Performa Pipeline
Speedup Calculation
Speedup = Time tanpa pipeline⁄Time dengan pipeline
Ideal Speedup = Number of pipeline stages (jika tidak ada hazards)
Actual Speedup = CPI tanpa pipeline⁄CPI dengan pipeline × Clock rate factor
Pipeline Efficiency
Efficiency = Speedup actual⁄Speedup ideal × 100%
Faktor yang mempengaruhi efficiency:
- Pipeline stall cycles
- Branch misprediction penalty
- Structural hazards
- Instruction mix