🎯 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

IF
Instruction Fetch
ID
Instruction Decode
EX
Execute
MEM
Memory Access
WB
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.

// Contoh data hazard
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:

Status: Menunggu eksekusi...

🎯 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 pipelineTime dengan pipeline

Ideal Speedup = Number of pipeline stages (jika tidak ada hazards)

Actual Speedup = CPI tanpa pipelineCPI dengan pipeline × Clock rate factor

📈 Pipeline Efficiency

Efficiency = Speedup actualSpeedup ideal × 100%

Faktor yang mempengaruhi efficiency:

  • Pipeline stall cycles
  • Branch misprediction penalty
  • Structural hazards
  • Instruction mix