[λ©ν°μ½μ΄CPU] 04. λͺ λ Ήμ΄ νμ΄νλΌμΈ & λΉμμ°¨ μ€ν
μ λ΄ν κ΅μλμ΄ μΆμ²ν μ±
γ νλ‘κ·Έλλ¨Έκ° λͺ°λλ λ©ν°μ½μ΄ CPU μ΄μΌκΈ°γ - κΉλ―Όμ₯ μ§μ
μμ μ± μ ν λλ‘ κ³΅λΆν λ΄μ©μ΄ μμ±λμμ
- νμ΄νλΌμΈ(pipeline)
: μμ μ μ¬λ¬ κ°λ‘ λλκ³ μΈλΆ λ¨κ³κ° μλ‘ λμμ μ€νν μ μμ
: μ°μμΌλ‘ μ£Όμ΄μ§λ μμ μ μ²λ¦¬νλ λ° μμ΄ μ²λ¦¬μ¨μ λμ΄λ μΌλ°μ μΈ μκ³ λ¦¬μ¦ (λ μ΄ν΄μ κ°μ X)
: ν΅μ¬ → μ¬μ¬μ© / λ³λ ¬ μ€ν
: μ΄μμ μΈ μ²λ¦¬μ¨ μ¦κ°λ νμ΄ν λΌμΈ λ¨κ³ μλ§νΌ μ → μλμ 4κ°μ§ 쑰건μ λ§μ‘±ν΄μΌ ν¨
1) κ· λ±ν νμ΄ν λΌμΈ λ¨κ³ (κ° λ¨κ³λ κ· λ±ν κΈΈμ΄λ‘ λλ¨)
2) κ°μ μμ (νμ κ°μ μμ λ§ μνν¨)
3) λ 립μ μΈ μμ (ν¬μ λλ μμ μ μλ‘ μμ‘΄ κ΄κ³ X)
4) νμ΄ν λΌμΈ μ μ§ λΉμ© μ΅μν (μ΅μ μ νμ΄ν λΌμΈ κΉμ΄ μ°ΎμμΌ ν¨)
: λͺ λ Ήμ΄ μ²λ¦¬μ¨ λμ΄λ λ°©λ² → μ΅λν λ§μ μΌμ λ³λ ¬λ‘ μ²λ¦¬ ν΄μΌ ν¨ → λ³λ ¬μ± + νλμ¨μ΄ μ§μ
: ex) λͺ λ Ήμ΄ νμ΄νλΌμΈ : < λͺ λ Ήμ΄ μΈμΆ → λͺ λ Ήμ΄ ν΄λ → νΌμ°μ°μ μΈμΆ → λͺ λ Ήμ΄ μ€ν → κ²°κ³Ό μ μ₯ > μ΄ λ¨κ³λ₯Ό νμ΄ν λΌμΈμΌλ‘ λ리λ κ²
: νμ΄ν λΌμΈ λ¨κ³ νλλ ν μ¬μ΄ν΄ λ΄μ μλ£ λμ΄μΌ ν¨ (κ°μ₯ κΈ΄ νμ΄ν λΌμΈ λ¨κ³κ° νλ‘μΈμ ν΄λ‘ μλ κ²°μ )
: λͺ λ Ήμ΄κ° μꡬνλ μμ μ΄ λ€λ₯΄κΈ°μ μμ λ λ²μ§Έ μ‘°κ±΄μ΄ λ§μ‘± λκΈ° μ΄λ ΅λ€
: μμ κ³Όμ λλ‘ μ§ννλ©΄ λ΄λΆ λ¨νΈν λ¬Έμ λ°μ → λ¨κ³λ₯Ό ν©μΉκ±°λ λλ ν΄κ²°
: νμ΄ν λΌμΈμ κΉμ΄λ μ±λ₯μ ν° μν₯ → ν΄λ μλ κ²°μ νκΈ° λλ¬Έ
: νμ΄ν λΌμΈμ λ¨κ³λ₯Ό λ μκ² λλμ΄ κΈΈκ² λ리면 λΉ λ₯Έ ν΄λ‘ μ»κΈ° κ°λ₯ν¨ ( λ무 μ¬λ €λ²λ¦¬λ©΄ μμ€ν μ±λ₯ νλ½ κ°λ₯ )
- νμ΄ν λΌμΈ ν΄μ λ(hazard)
→ νλ‘μΈμμμ μμ‘΄μ±μΌλ‘ λ°μν μ μλ λ¬Έμ → ν΄κ²° λ°©λ² : stall (νμ΄ν λΌμΈ μ μ§) ?
1) ꡬ쑰 ν΄μ λ (structual hazard) : νλ‘μΈμμ μμ λΆμ‘±μΌλ‘ μΈν μ€ν¨ → μμ μ¦κ° νμ
2) 컨νΈλ‘€ ν΄μ λ (control hazard) : νλ‘κ·Έλ¨μ΄ κ·Όλ³Έμ μΌλ‘ κ°κ³ μλ μμ‘΄μ±μΌλ‘ μΈν΄ λ°μ(ex. λΆκΈ°λ¬Έμ κ²°κ³Ό νμλ‘ μΈν stall λ±) → λΆκΈ°μμΈ‘ (μΆν λ€λ£Έ)
3) λ°μ΄ν° ν΄μ λ (data hazard) : λ°μ΄ν° μμ‘΄μ±κ³Ό λ©λͺ¨λ¦¬ μμ‘΄μ±μΌλ‘ μΈν λ°μ → λ°μ΄ν¨μ€ μ΄μ©
: λ°μ΄ν¨μ€ → μ΄μ λ¨κ³μμ κ³μ°λ κ²°κ³Όλ₯Ό νμ¬ λ¨κ³μμ νμλ‘ νλ κ²½μ°μ μ¬μ©, λ°μ΄ν°κ° μμ§ νμ΄ν λΌμΈμ ν΅ν΄ λ€μ λ¨κ³λ‘ μ΄λνκΈ° μ μ μ΄λ―Έ μ¬μ© κ°λ₯ν κ²½μ°μ μ΄λ₯Ό μ΄μ©
- λΉμμ°¨ μ€ν
: νλ‘μΈμκ° μ§μ λͺ λ Ήμ΄ μ¬μ΄μ μμ‘΄μ±μ λΆμν΄ μ€ν κ°λ₯ν λͺ λ Ήμ 미리 μ€νμμΌ μκ° λ¨μΆ
: μνΌμ€μΉΌλΌ νμ΄νλΌμΈ ꡬ쑰 → νμ΄ν λΌμΈμ΄ μ¬λ¬ κ° μμ΄ λͺ λ Ήμ΄λ₯Ό λ³λ ¬λ‘ μ²λ¦¬νλ ꡬ쑰
1보λ€ν° IPC μ»κ² ν¨
- μ리) λͺ λ Ήμ΄ μμ€ λ³λ ¬μ±(Instruction Level Parallelism, ILP)
: λΉμμ°¨ μ€νμ ILPλ₯Ό μ°Ύμ λ°μ΄ν°μ νλ¦μ λ°λΌ λͺ λ Ήμ΄λ₯Ό μ²λ¦¬νλ κΈ°μ
: 'λμ'μ μ€νλλ λ³λ ¬μ±μ μ€λ λ μμ€ λ³λ ¬μ±(TLP) → λ©ν°μ€λ λ νλ‘κ·Έλ¨ μμ± μ μ»λ λ³λ ¬μ±
; λ°μ΄ν° μμ‘΄μ±λ§ μ§ν¨λ€λ©΄ μ€μ μ€ν μμλ λ°λμ΄λ λ¬Έμ μμ → ILP