CS

[CS] μΊμ‹œ λ©”λͺ¨λ¦¬(Cache Memory)

quedevel 2023. 3. 25. 16:41
728x90
λ°˜μ‘ν˜•

🎯 μΊμ‹œ λ©”λͺ¨λ¦¬(Cache Memory)



μ–΄λ–€ ν”„λ‘œκ·Έλž¨μ„ λ™μž‘μ‹œν‚€κΈ° μœ„ν•΄μ„œλŠ” λ©”λͺ¨λ¦¬μ— μ μž¬κ°€ 되고 CPUλ₯Ό ν• λ‹Ήλ°›μ•„μ•Ό λ™μž‘μ΄ λœλ‹€. μ΄λ•Œ CPU와 λ©”λͺ¨λ¦¬(RAM) μ‚¬μ΄μ—μ„œ ν™œλ°œν•˜κ²Œ 데이터λ₯Ό μ£Όκ³ λ°›κ²Œ λ˜λŠ”λ° CPU에 λΉ„ν•΄ 비ꡐ적 속도가 느린 λ©”λͺ¨λ¦¬μ— μ˜ν•΄μ„œ μ œλŒ€λ‘œ μ„±λŠ₯을 내지 λͺ»ν•œλ‹€.
μΊμ‹œ λ©”λͺ¨λ¦¬λŠ” CPU와 RAM μ‚¬μ΄μ—μ„œ λ°œμƒν•˜λŠ” 병λͺ© ν˜„μƒμ„ μ™„ν™” ν•˜κ³ μž μ‚¬μš©λœλ‹€.

μΊμ‹œ λ©”λͺ¨λ¦¬λŠ” CPU 사이에 μ‘΄μž¬ν•˜λ©° μΊμ‹œ λ©”λͺ¨λ¦¬μ— 데이터가 μ‘΄μž¬ν•œλ‹€λ©΄ λ©”λͺ¨λ¦¬μ— μ ‘κ·Όν•  ν•„μš”κ°€ μ—†μœΌλ―€λ‘œ μ„±λŠ₯상 이점을 얻을 수 μžˆλ‹€.


μΊμ‹œ λ©”λͺ¨λ¦¬μ˜ λͺ©ν‘œ


βœ… μΊμ‹œ 적쀑λ₯ μ˜ μ΅œλŒ€ν™” & 뢀적쀑λ₯ (δΈηš„δΈ­ο§˜)의 μ΅œμ†Œν™”
βœ… μΊμ‹œ λ ˆμ΄ν„΄μ‹œμ˜ μ΅œμ†Œν™”
βœ… μΊμ‹œ λŒ€μ—­ν­μ˜ μ΅œλŒ€ν™”
βœ… μΊμ‹œ μ •μ±… 및 μ•Œκ³ λ¦¬μ¦˜μ˜ μ΅œμ ν™”
βœ… μΊμ‹œ 뢀적쀑에 λ”°λ₯Έ νŒ¨λ„ν‹°μ˜ μ΅œμ†Œν™”
βœ… 데이터 일관성 보μž₯
βœ… 데이터 일관성에 λ”°λ₯Έ μ˜€λ²„ν—€λ“œ μ΅œμ†Œν™”


적쀑 & μ‹€νŒ¨


μΊμ‹œ 적쀑(cache hit): CPUκ°€ 데이터λ₯Ό μš”μ²­ν•˜μ—¬ μΊμ‹œ λ©”λͺ¨λ¦¬μ— μ ‘κ·Όν–ˆμ„ λ•Œ μΊμ‹œ λ©”λͺ¨λ¦¬κ°€ ν•΄λ‹Ή 데이터λ₯Ό 가지고 μžˆλ‹€
μΊμ‹œ 뢀적쀑(cache miss): ν•΄λ‹Ή 데이터가 μ—†μ–΄μ„œ DRAMμ—μ„œ 가져와야 ν•œλ‹€
μΊμ‹œ 적쀑λ₯ (cache hit ratio): (μΊμ‹œ 적쀑 횟수) / (전체 μš”μ²­ 및 μ ‘κ·Ό 횟수) Γ— 100

  • μΊμ‹œ λΆ€μ μ€‘μ˜ μ’…λ₯˜
    • Compulsory miss(λ˜λŠ” Cold miss): ν•΄λ‹Ή λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό 처음 λΆˆλ €κΈ° λ•Œλ¬Έμ— λ‚˜λŠ” 미슀
    • Conflict miss: μΊμ‹œ λ©”λͺ¨λ¦¬μ— A 데이터와 B 데이터λ₯Ό μ €μž₯ν•΄μ•Ό ν•˜λŠ”λ°, A와 Bκ°€ 같은 μΊμ‹œ λ©”λͺ¨λ¦¬ μ£Όμ†Œμ— ν• λ‹Ήλ˜μ–΄μ„œ λ‚˜λŠ” μΊμ‹œ 미슀
    • Capacity miss: μΊμ‹œ λ©”λͺ¨λ¦¬μ— 곡간이 λΆ€μ‘±ν•΄μ„œ λ‚˜λŠ” μΊμ‹œ 미슀. μœ„μ˜ conflict missλŠ” μΊμ‹œμ— 곡간이 λ‚¨μ•„λ„λŠ”λ°λ„ λΆˆκ΅¬ν•˜κ³  μ£Όμ†Œ ν• λ‹Ή λ•Œλ¬Έμ— λ‚˜λŠ” λ―ΈμŠ€μ§€λ§Œ, capacity missλŠ” μ£Όμ†Œ 할당이 잘 λ˜μ–΄μžˆλ”λΌλ„ 곡간이 λΆ€μ‘±ν•˜λ©΄ λ‚˜λŠ” 미슀

μΊμ‹œ μž‘λ™ 원리


μΊμ‹œ λ©”λͺ¨λ¦¬λŠ” 데이터 지역성(Locality)의 원리λ₯Ό μ΄μš©ν•œλ‹€. 데이터 지역성은 μ‹œκ°„ 지역성(Temporal locality), 곡간 지역성(Spatial Locality), 순차적 지역성(Sequential Locality)으둜 λ‚˜λ‰˜λ‹€.

μ‹œκ°„ 지역성(Temporal locality): forλ‚˜ while 같은 λ°˜λ³΅λ¬Έμ— μ‚¬μš©ν•˜λŠ” 쑰건 λ³€μˆ˜μ²˜λŸΌ ν•œλ²ˆ 참쑰된 λ°μ΄ν„°λŠ” μž μ‹œ 후에 또 참쑰될 κ°€λŠ₯성이 λ†’λ‹€λŠ” 것
곡간 지역성(Spatial Locality): A[0], A[1]κ³Ό 같은 데이터 배열에 μ—°μ†μœΌλ‘œ μ ‘κ·Όν•  λ•Œ 참쑰된 데이터 κ·Όμ²˜μ— μžˆλŠ” 데이터가 μž μ‹œ 후에 μ‚¬μš©λ  κ°€λŠ₯성이 λ†’λ‹€λŠ” 것
순차적 지역성(Sequential Locality): λΆ„κΈ°(branch)κ°€ λ°œμƒν•˜λŠ” λΉ„μˆœμ°¨μ  싀행이 μ•„λ‹Œ 이상 λͺ…령어듀이 λ©”λͺ¨λ¦¬μ— μ €μž₯된 μˆœμ„œλŒ€λ‘œ μ‹€ν–‰ν•˜λŠ” νŠΉμ„±μ„ μ΄μš©ν•œ 원리


μΊμ‹œ 배치 μ •μ±… (Cache Placement Policy)


ν”νžˆ μΊμ‹œ 사상(Mapping) ꡬ쑰라고도 λΆ€λ₯΄λŠ” μ •μ±…μœΌλ‘œ, μ—¬λŸ¬ μΊμ‹œ μ—”νŠΈλ¦¬λ“€μ„ λ°°μΉ˜ν•˜λŠ” 방법을 μ„€λͺ…ν•˜λŠ” 정책이기도 ν•˜λ‹€.

Direct Mapped Cache: κ°€μž₯ 기본적인 μΊμ‹œ 배치 μ •μ±…μœΌλ‘œ, μ§μ—­ν•΄μ„œ '직접 사상(寫像) 방식'이라고도 ν•œλ‹€. DRAM의 μ—¬λŸ¬ μ£Όμ†Œκ°€ μΊμ‹œ λ©”λͺ¨λ¦¬μ˜ ν•œ μ£Όμ†Œμ— λŒ€μ‘λ˜λŠ” λ‹€λŒ€μΌ(n:1) 방식이닀.
Fully Associative Cache: μ™„μ „ μ—°κ΄€ 사상 방식이라고도 λΆ€λ₯΄λ©°, μ‰½κ²Œ μ„€λͺ…ν•˜λ©΄ λΉ„μ–΄μžˆλŠ” μΊμ‹œ λ©”λͺ¨λ¦¬κ°€ 있으면 κ·Έλƒ₯ λ§ˆμŒλŒ€λ‘œ μ£Όμ†Œλ₯Ό μ €μž₯ν•˜λŠ” 방식
Set Associative Cache: 집합 μ—°κ΄€ 사상 방식이라고도 λΆ€λ₯΄λ©°, Direct Mapped Cache의 μž₯점과 Fully Associative Cache의 μž₯점을 μ„žμ—ˆλ‹€κ³  ν•  수 μžˆλŠ” κ°€μž₯ λ‚˜μ€‘μ— λ‚˜μ˜¨ 방식


Reference


λ‚˜λ¬΄ μœ„ν‚€ - μΊμ‹œ λ©”λͺ¨λ¦¬

728x90
λ°˜μ‘ν˜•