์บ์์ ์ง์ญ์ฑ
Caching line
- ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์๋๊ฐ ๋น ๋ฅธ ์ฅ์น์ ๋๋ฆฐ ์ฅ์น๊ฐ์ ์๋์ฐจ์ ๋ฐ๋ฅธ ๋ณ๋ชฉ ํ์์ ์ค์ด๊ธฐ ์ํ ๊ณ ์ ๋ฒํผ ๋ฉ๋ชจ๋ฆฌ
- ์ฃผ๊ธฐ์ต์ฅ์น ๋ด์์ ์์ฃผ ์ฝ๊ณ ์ฐ๋ ๋ฐ์ดํฐ์ ์ผ๋ถ๋ฅผ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ๋ฌ์ ์๋ ์ฐจ์ด๋ฅผ ์ค์ด๊ณ , ์ฃผ๊ธฐ์ต์ฅ์น์ CPU ๊ฐ ์ ํธ ๊ตํ์ ์ด์ฉ๋๋ Memory Bandwidth๋ฅผ I/O ์ฌ์ฉ์ ์ง์คํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ถ๊ทน์ ์ผ๋ก ์ฑ๋ฅ ํฅ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฌ์ต๋๋ค.
- ์บ์์ ์ฑ๋ฅ์ ์์ ์ฉ๋์ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ CPU๊ฐ ์ฐธ์กฐํ ์ธ๋ชจ ์๋ ์ ๋ณด๊ฐ ์ด๋ ์ ๋ ๋ค์ด์๋๋์ ๋ฐ๋ผ ์ข์ฐ๋๊ธฐ ๋๋ฌธ์ CPU๊ฐ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ํ ๊ฒ์ธ๊ฐ๋ฅผ ์ด๋์ ๋ ์์ธกํ ์ ์์ด์ผ ํฉ๋๋ค.
- ์ด๋ ์ ์ค๋ฅ ์ ๊ทน๋ํ ์ํค๊ธฐ ์ํด ๋ฐ์ดํฐ ์ง์ญ์ฑ์ ์๋ฆฌ ์ฌ์ฉ
- ์ง์ญ์ฑ (Locality)์ด๋ ๊ธฐ์ต ์ฅ์น ๋ด์ ์ ๋ณด๋ฅผ ๊ท ์ผํ๊ฒ Access ํ๋ ๊ฒ์ด ์๋ ์ด๋ ํ ์๊ฐ์ ํน์ ๋ถ๋ถ์ ์ง์ค์ ์ผ๋ก ์ฐธ์กฐํ๋ ํน์ฑ(๋ฐ์ดํฐ ์ ๊ทผ์ด ์๊ฐ์ , ํน์ ๊ณต๊ฐ์ ์ผ๋ก ๊ฐ๊น๊ฒ ์ผ์ด๋๋ ๊ฒ)
-
L1 Cache
- ํ๋ก์ธ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ์บ์
- ์๋๋ฅผ ์ํด IC์ DC๋ก ๋๋
- IC(instruction Cache):๋ฉ๋ชจ๋ฆฌ์์ text์์ญ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์บ์
- DC(DATA Cache): ๋ฉ๋ชจ๋ฆฌ์์ text์์ญ์ ์ ์ธํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์บ์
-
L2 Cache
- ์ฉ๋์ด ํผ
-
L3 Cache
- ๋ฉํฐ ์ฝ์ด ์์คํ ์์ ์ฌ๋ฌ ์ฝ์ด๊ฐ ๊ณต์ ํ๋ ์บ์
๋ ์ง์คํฐโL1 ์บ์(sram)โL2์บ์โ์ฃผ๊ธฐ์ต์ฅ์น(Dram)โ๋ณด์กฐ๊ธฐ์ต์ฅ์น(EEPROM)โ์์ผ๋ก ์บ์์ ์ ๊ทผ
cpu๊ฐ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ ๋ ์บ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์ด๋ฅผ ์บ์ํํธ๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ํด๋น ๋ฐ์ดํฐ๊ฐ ์์ด์ DRAM์ ์ ๊ทผํด์ผ ํ๋ค๋ฉด ์บ์ ๋ฏธ์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ ์ค๋ฅ : ์บ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ค ํ์/์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ํ์
Miss Ratio(์คํจ์จ): 1-์ ์ค๋ฅ
- ์๊ฐ ์ง์ญ์ฑ: ํน์ ๋ฐ์ดํฐ๊ฐ ํ๋ฒ ์ ๊ทผ๋์์ ๊ฒฝ์ฐ, ๊ฐ๊น์ด ๋ฏธ๋์ ๋ ํ๋ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
- ๊ณต๊ฐ ์ง์ญ์ฑ: ์ฐธ์กฐ๋ ๋ฐ์ดํฐ ๊ทผ์ฒ์ ์๋ ๋ฐ์ดํฐ๊ฐ ์ ์ ํ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
-
CPU์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๋์์ด ์๋๋ผ ์ ๋ ฅํ๋ ๋์์ด ๋ฐ์ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ฃผ์๊ฐ ์บ์ฑ๋ ์ํ๋ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ ๋๋ ๋์ ์บ์์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฐ์ดํธ ๋๋ค.
-
๋ฐ๋ผ์, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํด์ฃผ์ด์ผ ํ๋๋ฐ ์ด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ์์ ์ ๋ฐ๋ผ ์ ์ฑ ์ด ๋ ๊ฐ์ง๋ก ๋๋๋ค.
-
Write Through ์ ์ฑ
- ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ ๋ฐ์ดํธ
- ๋จ์ํ๊ณ ์บ์์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ง๋ง, ๋งค๋ฒ ๋ฐ๊ฟ์ค์ผ ๋๋ฏ๋ก ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
-
Write Back ์ ์ฑ
- ์บ์๋ง ์ ๋ฐ์ดํธ ํ๋ค๊ฐ, ์ ๋ฐ์ดํธ๋ ๋ฐ์ดํฐ๊ฐ ์บ์์์ ๋น ์ง๊ฒ ๋ ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธ
- ์บ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ก ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ๋๊ฐ ์๋ค.
- ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ์บ์ ๋ธ๋ก๋ง๋ค dirty bit๋ฅผ ์ถ๊ฐํด์ผํ๋ฉฐ ์บ์ ๋ธ๋ก์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์๋ค๋ฉด 1๋ก ๋ฐ๊ฟ์ค ํ ํด๋น ๋ธ๋ก์ด ๊ต์ฒด๋ ๋ dirty bit๊ฐ 1์ด๋ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ค.
์บ์์ ์ ์ฅํ๋ ๋ฐ์ดํฐ์๋ ํด๋น ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ฑ์ ์ด ํ๊ทธ๋ฅผ ๋ฌ์๋์ ํ์๊ฐ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ๊ฐ์ ธ์ค๋ ๋ฐ์ดํฐ ๋ฌถ์(๋จ์)๋ฅผ ์บ์ฑ ๋ผ์ธ์ด๋ผ๊ณ ํ๋ค.
-
์บ์์ ๋ชฉ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์๋ค๋ฉด ๋ฐ๋ก ์ ๊ทผํ์ฌ ์ถ๋ ฅํ ์ ์์ด์ผ ์บ์๊ฐ ์๋ฏธ์์ด์ง
-
์ฆ, ์บ์์ ์ ์ฅํ๋ ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ฑ์ ๊ธฐ๋กํด ๋ ํ๊ทธ๋ฅผ ๋ฌ์๋์์ผ ํจ -> ์ด ๋ฌถ์์ ์บ์ฑ ๋ผ์ธ์ด๋ผ ํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ๊ฐ์ ธ์ฌ ๋๋ ์บ์ฑ ๋ผ์ธ์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ธ์ด
-
์บ์ ๋ฉ๋ชจ๋ฆฌ์ ๋งคํ ํ๋ก์ธ์ค(Mapping Process) ๋งคํ ํ๋ก์ธ์ค๋ ์ฃผ๊ธฐ์ต์ฅ์น๋ก๋ถํฐ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ๋ฒ
-
Full Associative
- ๋น์ด์๋ ์บ์ ๋ฉ๋ชจ๋ฆฌ ์๋ฌด ๊ณต๊ฐ์ ์ ์ฅ
- ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ์ํด cache set์ ๋ชจ๋ ํ์ธํด๋ด์ผ ํ๋ฏ๋ก ์๊ฐ์ด ๊ฝค ๊ฑธ๋ฆผ
-
Set Associative(Fully+Dircet ์ ์ข์์ ์ ์ทจํ ์ค๊ฐ๋ฐฉ์)(ํ์ฌ์ cpu ์บ์๋ ๋๋ถ๋ถ ์ด๋ฐฉ์)
- Direct+Fully ๋ฐฉ์์ผ๋ก ํน์ set์ ์ ํด๋๊ณ (Cache line์ ๋ฌถ์๊ฒ์ด Cache set)
- ๊ทธ์ค ๋น์ด์๋๊ณณ ์๋ฌด ๊ณณ์๋ ์ ์ฅ
- ์ฆ,ํน์ ๋ก์ฐ๋ฅผ ์ง์ ํด ๊ทธ ๋ก์ฐ ์์ ์ด๋ค ์ด์ด๋ ๋น์ด์์ผ๋ฉด ์ ์ฅํจ
-
Direct Map
- ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ index field๋ฅผ ๊ธฐ์ค์ผ๋ก ์บ์ ๋ฉ๋ชจ๋ฆฌ์ Mapping
- ๊ฐ๋จํ๊ณ ๋น ๋ฅด์ง๋ง Conflict Miss๊ฐ ๋ฐ์ํ๋ค๋ ๋จ์ ์กด์ฌ
- Conflict Miss: ๋์ผ ๊ณต๊ฐ์ ๋งคํ๋์ด์ผ ํ๋ ๋ค๋ฅธ ๋ธ๋ก์ ์ํด ์ด๋ฏธ ๋งคํ๋ ์บ์ ๊ณต๊ฐ์ด ํ์ํ ๋
- ์ฌ๋ฌ๊ฐ์ ์ฃผ์๊ฐ ์บ์๋ฉ๋ชจ๋ฆฌ์ ํ ์ฃผ์์ ๋์๋๋ ๋ค๋ ์ผ ๋ฐฉ์
-
-
์บ์ฑ๋ผ์ธ์ ๊ตฌ์ฑ์์
- Tag
- ๋ฉ๋ชจ๋ฆฌ์ ์บ์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ mapping
- Data
- ์บ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ
- Valid bit
- Miss ์ 0์ผ๋ก ํ์
- Invalidation portocol์์ ์ฌ์ฉ
- Dirty bit
- ์ด๋ค block ์ ์ฐ๊ธฐ ๋์์ด ์ผ์ด๋ฌ์ ๋. ๋ฉ๋ชจ๋ฆฌ์ ์ผ๊ด์ฑ์ด ์ ์ง๋์ง ์๋ ์ํ๋ฅผ ํ์
- Tag
- ์บ์์ ์ง์ญ์ฑ์ ๋ํด ์ค๋ช ํ์ธ์.
- ์บ์ ๋ผ์ธ์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?