CPU๋ ๋น ๋ฅด๊ณ ๋ฉ๋ชจ๋ฆฌ๋ ๋๋ฆฌ๋ค.
์ด ์๋ ์ฐจ์ด๋ 100๋ฐฐ ์ด์ ๋๊ธฐ๋ ํ๋ค.
๋ฐ๋ผ์ ๋ณ๋ชฉํ์์ด ์ผ์ด๋๋ค.
โ CPU๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋๊ณ ์๊ฒ ๋๋ค.
๊ทธ๋์ ๋ฑ์ฅํ ๊ฒ์ด Cache(์บ์).
์์ฃผ ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ CPU ๊ฐ๊น์ด์ ์ ์ฅํด๋๋ ์ฅ์น๋ค.
์บ์๋ ์ฑ๋ฅ๊ณผ ๋น์ฉ์ ๋ฐ๋ผ ๋ค์์ฒ๋ผ ๋ค์ธต ๊ตฌ์กฐ๋ก ์ค๊ณ๋๋ค.
| ๊ณ์ธต | ์์น | ์ฉ๋ | ์๋ | ํน์ง |
|---|---|---|---|---|
| L1 | CPU Core ๋ด๋ถ | ์์ญ KB | ๐ข ๊ฐ์ฅ ๋น ๋ฆ | ๋ฐ์ดํฐ/๋ช ๋ น์ด ๋ถ๋ฆฌ |
| L2 | CPU Core ๋ด๋ถ | ์๋ฐฑ KB | ๐ก ๋น ๋ฆ | ํตํฉ ์บ์ |
| L3 | CPU ์ ์ฒด ๊ณต์ | ์ MB | ๐ต ๋๋ฆผ | ๋ชจ๋ ์ฝ์ด๊ฐ ๊ณต์ |
โ L1์ ์์ง๋ง ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๊ณ , L3๋ ๋๋ฆฌ์ง๋ง ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ณต์ ํ๋ค.
์บ์๋ "์ฐ๋ฆฌ๋ ์์ฃผ ์ฐ๋ ๋ฐ์ดํฐ๋ง ์์ฃผ ์ด๋ค"๋ ์ ์ ๋ฅผ ๋ฐํ์ผ๋ก ํ๋ค.
| ์ง์ญ์ฑ ์ข ๋ฅ | ์ค๋ช | ์์ |
|---|---|---|
| Temporal Locality | ์ต๊ทผ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฅผ ๋ ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ | ๋ฃจํ ๋ณ์, ์กฐ๊ฑด ์นด์ดํฐ |
| Spatial Locality | ๊ทผ์ฒ์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์ฌ์ฉํ ๊ฐ๋ฅ์ฑ | ๋ฐฐ์ด ์ ๊ทผ, ํจ์ ์คํ ํ๋ ์ |
โ ๊ทธ๋์ ์บ์๋ "์ฌ์ฉํ ๊ฐ๋ง ์ ์ฅ"ํ์ง ์๊ณ , ์ฃผ๋ณ ๊ฐ๊น์ง ๋ฏธ๋ฆฌ ๊ฐ์ ธ์จ๋ค(prefetching).
CPU๊ฐ ์ฃผ์ A๋ฅผ ์ฝ์ผ๋ ค ํ๋ค.
์บ์์์ A๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ค.
์บ์์ ํฌ๊ธฐ๊ฐ ์๊ธฐ ๋๋ฌธ์, ์ผ์ ์ ์ฑ ์ ๋ฐ๋ผ ๊ธฐ์กด ๋ฐ์ดํฐ์ ๊ต์ฒด(eviction)ํ๋ค.
| ์ข ๋ฅ | ์ค๋ช | ๋ฐ์ ์์ธ |
|---|---|---|
| Cold Miss | ์ฒ์ ์ ๊ทผํ๋ ๋ฐ์ดํฐ | ์์ง ์บ์์ ์์ |
| Capacity Miss | ์บ์ ๊ณต๊ฐ์ด ๋ถ์กฑํจ | ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์ |
| Conflict Miss | ์บ์์ ํน์ ์ฌ๋กฏ์ ์ถฉ๋ | Set-associative ๊ตฌ์กฐ ํ๊ณ |
ํนํ Conflict Miss๋ ๋ฐฐ์ด์ stride ์ ๊ทผ ๋ฑ์์ ์์ฃผ ๋ฐ์ํ๋ฉฐ, ๊ณ ๊ธ ์ฑ๋ฅ ํ๋์ ํต์ฌ์ด๋ค.
๐ก ์บ์๋ ๋ฐ์ดํฐ๋ง ์ ์ฅํ๋ ๊ฒ ์๋๋ผ, ์ฃผ์ ๋ณํ ๊ฒฐ๊ณผ๋ ์ ์ฅํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ ์ฒด๋ฅผ ๋น ๋ฅด๊ฒ ๋ง๋ ๋ค.
PintOS๋ ์ง์ CPU ์บ์๋ฅผ ์ ์ดํ์ง๋ ์์ง๋ง, ๋ค์ ์ํฉ์์ ์บ์์ ๊ฐ๋ ์ ์ดํดํ๊ณ ์์ด์ผ ํ๋ค.
| ๊ณ์ธต | ์์ | ์๋ (cycle) | ์ค๋ช |
|---|---|---|---|
| Register | rax, rsp | 1 | CPU ๋ด๋ถ, ๊ฐ์ฅ ๋น ๋ฆ |
| L1 Cache | CPU Core ๋ด๋ถ | 3~4 | ์ด๊ณ ์ ์บ์ |
| L2 Cache | Core ๋ด๋ถ | 10~15 | ์กฐ๊ธ ๋๋ฆผ |
| L3 Cache | Socket ๊ณต์ | 30~50 | ์ฌ๋ฌ ์ฝ์ด ๊ณต์ |
| DRAM | ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ | 100~300 | ์ธ๋ถ ๋ฉ๋ชจ๋ฆฌ |
| SSD | NVMe ๋ฑ | 10,000~1,000,000+ | ๋นํ๋ฐ์ฑ ์ ์ฅ์ |
๐ ์บ์๋ฅผ ์ ํ์ฉํ์ง ๋ชปํ๋ฉด, ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด ๋ณ๋ชฉ์ด ๋๋ค.