πμΊμμ μλ―Έ
π μμ£Ό μ°λ λ°μ΄ν°λ₯Ό μλ μ μ₯λ κ³³λ³΄λ€ μλκ° λ λΉ λ₯Έ μμ μ μ₯μ(μΊμ)μ μ μ₯ν΄μ, λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μ½μ΄μ¬ μ μκ²λ νλ κ²μ΄ μΊμ
ν¬κ² λκ°μ§ κ²½μ°
ex1) CPU μ½μ΄μ λ©λͺ¨λ¦¬ μ¬μ΄μ λ³λͺ© νμ μν(νλ‘μΈμμμμ μΊμ)
ex2) μΉ λΈλΌμ°μ μΊμ νμΌμ, νλλμ€ν¬μ μΉνμ΄μ§ μ¬μ΄μ λ³λͺ© νμμ μν(λ©λͺ¨λ¦¬, λμ€ν¬, μΉμλ²μμμ μΊμ)
πλ³λͺ©νμ(bottleneck)
π μ¦ λ΄μ μ μλ λ°μ΄ν°μ μμ μ μΌλ νκΊΌλ²μ λ§μ μμ λ°μ΄ν°κ° μ μ λ¨μΌλ‘μ¨ μ»΄ν¨ν°κ° λλ €μ§λ νμ
νλ‘μΈμμμμ μΊμλ CPUμ λ©μΈλ©λͺ¨λ¦¬μ μ²λ¦¬μλμμ ν¬κ² ν¨κ³Όκ° λλλ° λ§€λ² μΌλ°μ μΌλ‘ μ²λ¦¬νλ©΄ μλκ° νμ ν λ리기 λλ¬Έμ μ€λ²ν€λκ° μ»€μ§κ² λκ³ μμ£Ό μ°λ λ°μ΄ν°λ₯Ό λ©μΈλ©λͺ¨λ¦¬λ³΄λ€ λ λΉ λ₯Έ μΊμ λ©λͺ¨λ¦¬μ λμ΄μ λ 빨리 μ½μ΄μ¬μ μκ² νλ€.
λΈλΌμ°μ μμμ μΊμλ μΉνμ΄μ§κ° κ°μ§κ³ μλ μ΄λ―Έμ§λ μ©λμ΄ ν° μ΄λ€ λ°μ΄ν°μ μ¬λ³Έμ κ°μ§κ³ μμλ μ¬μ©μκ° νμ΄μ§λ₯Ό μ¬λ°©λ¬Έν λ λ°μ΄ν°λ₯Ό μμ ν λ€μ λ€μ΄λ‘λ νλκ²λ³΄λ€λ λ‘컬 μ¬λ³Έμ μ¬μ©νλ κ²μ΄ ν¨μ¬ λΉ λ₯΄λ€.
πμΊμ±μ κ³Όμ
μ 보λ₯Ό λΈλ‘ λ¨μλ‘ λμμ λΆλ¬μ€κ²λλλ° μλ₯Όλ€μ΄μ λ¨μΌ λ°μ΄νΈμ λν μμ²μ΄ μ¨λ€λ©΄ κ·Έ μ£Όλ³μ μ°μλ λ©λͺ¨λ¦¬ μμΉλ₯Ό ν¬ν¨ν λΈλ‘ λν λΆλ¬μ¨λ€ μλνλ©΄ μΈμ ν μ 보λ€μ 곧 μ¬μ©λ κ°λ₯μ±μ΄ λμΌλ―λ‘ λ―Έλ¦¬ λΆλ¬μμ νμν λλ§λ€ μΊμμμ λ°λ‘ κΊΌλ΄κΈ° μ’κΈ° λλ¬Έμ΄λ€.
π₯ κ°μ₯ κ°κΉμ΄ λ³Όμμλ μΊμ μ’ λ₯ :
νν μ°λ VSCode, μλ, μμ
κ°μ νλ‘κ·Έλ¨μ μ²μ μ»΄ν¨ν°λ₯Ό ν€κ³ λ€μ λκ³
λ€μ μ€νν΄λ³Έλ€λ©΄ λλ²μ§Έ μΌ°μλ μλκ° νμ ν λΉ λ₯Όκ²μ΄λ€. κ·Έκ²μ νλ‘κ·Έλ¨μ
λͺ
λ Ήμ΄κ° μμ§ λ©λͺ¨λ¦¬μ μκ³ λ©λͺ¨λ¦¬κ° λμ€ν¬μ λν μΊμλ‘ μ¬μ©μ΄ λκΈ° λλ¬Έμ΄λ€.
κ·Έλ¦¬κ³ μ΅κ·Ό νμΌ κ°μ΄ λ¨λ κ²λ λν μΊμμ΄λ€.
πμΊμμ μ±λ₯
μμ μ©λμ μΊμ λ©λͺ¨λ¦¬μ CPU κ° μ΄νμ μ°Έμ‘°ν , μΈλͺ¨ μλ μ λ³΄κ° μ΄λ μ λ λ€μ΄μλλμ λ°λΌ μ’μ°λκΈ° λλ¬Έμ΄λ€. μ΄λ μ μ€μ¨(Hit Rate)μ κ·Ήλν μν€κΈ° μν΄ λ°μ΄ν° μ§μμ± μ리(Locality)λ₯Ό μ¬μ©ν©λλ€. μ§μμ±μ μ μ 쑰건μΌλ‘ νλ‘κ·Έλ¨μ λͺ¨λ μ½λλ λ°μ΄ν°λ₯Ό κ· λ±νκ² μμΈμ€ νμ§ μλλ€λ νΉμ±μ κΈ°λ³ΈμΌλ‘ νλ€. μ¦ μ§μμ± μ리λ κΈ°μ΅ μ₯μΉ λ΄μ μ 보λ₯Ό κ· μΌνκ² μμΈμ€ νλ κ²μ΄ μλ μ΄λ ν μκ°μ νΉμ λΆλΆμ μ§μ€μ μΌλ‘ μ°Έμ‘°νλ νΉμ±μΈ κ²μ΄λ€.
λ°μ΄ν° μ§μμ±μ ν¬κ² μκ° μ§μμ±(Temporal Locality)κ³Ό κ³΅κ° μ§μμ±(Spatial Locality)μΌλ‘ λλ©λλ€.
π μκ° μ§μμ± : μ΅κ·Όμ μ°Έμ‘°λ μ£Όμμ λ΄μ©μ 곧 λ€μμ λ€μ μ°Έμ‘°λλ νΉμ±.
π κ³΅κ° μ§μμ± : λλΆλΆμ μ€μ νλ‘κ·Έλ¨μ΄ μ°Έμ‘°λ μ£Όμμ μΈμ ν μ£Όμμ λ΄μ©μ΄ λ€μ μ°Έμ‘°λλ νΉμ±
μΊμλ μκ°μ΄ νλ₯΄κ² λλ©΄ μ μ₯λ λ©λͺ¨λ¦¬ μ΄μ λλ μκ°μ΄ κ½€ νλ₯Έ μΊμλ€μ μλμΌλ‘ μλ‘ μ λ°μ΄νΈ λ μΊμλ‘ μ±μ°κ² λλ©° μ΅κ·Ό νμΌ κ°μ κ²λ μμ μ μ μ₯λ μΊμ λ©λͺ¨λ¦¬ κ°μ κ²½μ°λ λ€ μλμΌλ‘ μμ΄μ§ κ²μ λλ€.
π Catching Line
λ€μ λ§νλ©΄ μΊμ(cache)λ νλ‘μΈμ κ°κΉμ΄μ μμΉνλ©΄μ λΉλ²νκ² μ¬μ©λλ λ°μ΄ν°λ₯Ό λλλ μ₯μμ λλ€. νμ§λ§ μΊμκ° μ무리 κ°κΉμ΄ μλλΌλ μ°Ύκ³ μ νλ λ°μ΄ν°κ° μ΄λ κ³³μ μ μ₯λμ΄ μλμ§ λͺ°λΌ λͺ¨λ λ°μ΄ν°λ₯Ό μνν΄μΌ νλ€λ©΄ μκ°μ΄ μ€λ κ±Έλ¦¬κ² λ©λλ€. κ·Έλ¬λ©΄ λͺ©μ μ μ΄κΈλλ―λ‘ μΊμμ λ°μ΄ν°λ₯Ό μ μ₯ν λ νΉμ μλ£κ΅¬μ‘°λ₯Ό μ¬μ©νμ¬ λ¬ΆμμΌλ‘ μ μ₯νκ² λλλ° μ΄λ₯Ό μΊμ± λΌμΈμ΄λΌκ³ ν©λλ€.
νλ‘μΈμ€λ λ€μν μ£Όμμ μλ λ°μ΄ν°λ₯Ό μ¬μ©νλ―λ‘ λΉλ²νκ² μ¬μ©νλ λ°μ΄ν°μ μ£Όμ λν ν©μ΄μ Έ μλ€. λ°λΌμ μΊμμ μ μ₯νλ λ°μ΄ν°μλ λ°μ΄ν°μ λ©λͺ¨λ¦¬ μ£Όμ λ±μ κΈ°λ‘ν΄ λ νκ·Έλ₯Ό λ¬μλμ νμκ° μμ΅λλ€. μ΄λ¬ν νκ·Έλ€μ λ¬Άμμ μΊμ± λΌμΈμ΄λΌκ³ νκ³ λ©λͺ¨λ¦¬λ‘λΆν° κ°μ Έμ¬ λλ μΊμ± λΌμΈμ κΈ°μ€μΌλ‘ κ°μ Έμ€κ² λ©λλ€. ν¬κ² μΈκ°μ§ λ°©μμ΄ μμ΅λλ€.
π Full Associative :
λΉμ΄μλ μΊμλ©λͺ¨λ¦¬κ° μμΌλ©΄ κ·Έλ₯ λ§μλλ‘ μ£Όμλ₯Ό μ μ₯νλ λ°©μ. μ¦ μ μ₯μ ν¬κ² μκ³ λ¦¬μ¦ λΉμ©μ΄ μμ΄ κ°λ¨νλ°, μ°Ύμ λ λ¬Έμ . λͺ¨λ λΈλμ μνν΄ λ°μ΄ν°κ° μλμ§ κ²μ¬. μ΄λ₯Ό μν΄ CAM(content Addressable memory)λΌλ νΉμν ννμ λ©λͺ¨λ¦¬ ꡬ쑰λ₯Ό μ¬μ©νλλ° κ°κ²©μ΄ λΉμΈλ΅λλ€.
π Set Associative:
νΉμ λ‘μ°λ₯Ό μ§μ ν΄μ κ·Έ λ‘μ°μμ μ΄λ€ μ΄μ΄λ λΉμ΄μμΌλ©΄ μ μ₯. νλ μλκ°λ€λ cpu μΊμλ€μ λλΆλΆ μ΄λ°©μμ μ·¨νκ³ μλ€.
π Direct Map:
λ©λͺ¨λ¦¬ 곡κ°μ΄ 32κ° (00000βλΆν° 11111β), μΊμ λ©λͺ¨λ¦¬ 곡κ°μ΄ 8κ° (000βλΆν° 111β)
Ex ) 00000β, 01000β, 10000β, 11000βμΈ κ³³μ λ°μ΄ν°λ₯Ό μΊμ λ©λͺ¨λ¦¬μ μ£Όμκ° 000βμΈ κ³³μλ§ μ½κ³ μ°λ λ°©μμ΄λ€.
μλλ°©μ ex)
μλ₯Ό λ€μ΄ cpuκ° λ©μΈ λ©λͺ¨λ¦¬μ 00000β μ£Όμμ λ°μ΄ν°λ₯Ό λ λ² μ°μμΌλ‘ μ½λλ€κ³ νλ€λ©΄ λ¨Όμ μΊμλ©λͺ¨λ¦¬λ₯Ό λ€μ μ΄λλ° μμ²ν μ£Όμκ° 00000βμ΄λ―λ‘ μΊμ λ©λͺ¨λ¦¬μ μ£Όμκ° 000βμΈ κ³³μ νμΈν©λλ€. νμΈ ν μ무κ²λ μλ κ²μ νμΈνκ³ μ§μ λ©μΈ λ©λͺ¨λ¦¬μ 00000β μ£Όμλ₯Ό μ°Έμ‘°νμ¬ λ°μ΄ν°λ₯Ό μ½μ΄μ΅λλ€. μ΄λ μΊμ λ©λͺ¨λ¦¬μ 000βμΈ κ³΅κ°μ 00βνκ·ΈλΉνΈμ μκΉ μ½μ λ©μΈ λ©λͺ¨λ¦¬ 00000βμ λ°μ΄ν°λ₯Ό μ μ₯ν΄ λλλ€. κ·Έ λ€μ λ°λ‘ κ°μ λμμ μννλ©΄μ λκ°μ΄ μΊμ λ©λͺ¨λ¦¬μ 000β μΈ κ³³μ νμΈνλλ° μ΄λ²μ λ°μ΄ν°κ° λ€μ΄μμΌλ κ·Έ λ°μ΄ν°κ° CPUκ° μꡬν μ£Όμμ λ°μ΄ν°μ μΌμΉνλμ§ νκ·Έ λΉνΈλ₯Ό λΉκ΅νλ κ²μ¬λ₯Ό ν λ€ νκ·Έ λΉνΈλ§μ μΌμΉνλ©΄ μΊμ λ©λͺ¨λ¦¬μμ λ°μ΄ν°λ₯Ό κ°μ Έμ΅λλ€.
κ°λ¨νκ³ λΉ λ₯΄μ§λ§ λμ μ½μ μ΄ κ΅μ₯ν ν°λ°, Conflict miss(μΆ©λ) λ¬Έμ κ° κ΅μ₯ν ν° λ°©μμ λλ€. μ§κ΄μ μΌλ‘ μκ°ν΄μ μ κ·Έλ¦Όμ νμ λ°μ΄ν°λ νλλ μ μ₯ν νμκ° μλλ° μ£Όν©μ λ°μ΄ν° μ€ 2κ° μ΄μμ λμμ μ μ₯ν΄μΌ νλ μΌμ΄ μκΈ°λ©΄ κ΅μ₯ν 골μΉμν κ²μμ μ μ μμ΅λλ€.
π₯ νμ§λ§ κ°λ°μλ€ μ¬μ΄μμλ λΈλΌμ°μ μΊμλ₯Ό κΌ clearνλΌκ³ ν©λλ€. μμΌκΉμ?
κ·Έλ κ² ν΄μΌ μΉνμ΄μ§κ° μλ‘μ΄κ±Έ μ
λ°μ΄νΈ ν λλ§λ€ μ
λ°μ΄νΈ λ λ΄μ©μ λ³Ό μ μμκ²μ΄λ©°
κ°μΈμ 보 λν λ³΄νΈ ν μ μκ³ λμ€μ μΉνμ΄μ§λ₯Ό μμΈμ€ν λ λΈλΌμ°μ μ κ·Ό λ¬Έμ κ°
μκΈΈμλ μκ³ μΊμκ° λ무 μ¬λ¬ λΈλΌμ°μ μ κ·ΌμΌλ‘ μμΈ μνμ΄λ©΄ νΉμ μΉμ¬μ΄νΈλ₯Ό μ¬λ°©λ¬Έν λ
λλ μλκ° λ λ€μλ μμ΅λλ€.