"CPU๋ ์ ์ด๋ ๊ฒ ์ฑ์ง์ด ๊ธํ ๊น?"
CPU๋ ์์ฒญ ๋น ๋ฆ ๋๋ค. ์ง์ง ๋ง๋ ์ ๋๊ฒ ๋น ๋ฆ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ์ด ๋น ๋ฅธ CPU๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก๋ฐ๋ก ๋ชป ๋ฐ๋๋ค๋ ๊ฑฐ์์. ๋ง์น ๋ฐฐ๋ฌ์์ ์ํจ ์ฌ๋์ด ์์์ด ์ ์ค์ ์ง์ ์๋น์ผ๋ก ๋ฌ๋ ค๊ฐ๋ ๊ฒ์ฒ๋ผ์. ๐คฏ
๊ทธ ์ด์ ๋ ๋ฉ๋ชจ๋ฆฌ(RAM)๊ฐ CPU๋งํผ ๋น ๋ฅด์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์์ง๋ง, CPU ์ ์ฅ์์๋ ๋๋ฌด ๋๋ ค์. ๊ทธ๋์ CPU๊ฐ ๊ธฐ๋ค๋ฆฌ๋ค ํญ๋ฐํ์ง ์๋๋ก ์ค๊ฐ์ '์์ ์ ์ฅ์' ๊ฐ์ ๊ฑธ ๋ ๊ฒ ์บ์(Cache)์ ๋๋ค.
์ถ์ฒ : https://woozzang.tistory.com/155
์บ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ ์ ์ต์๋จ ํฐ์ด์ ์์นํ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ค.
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํจ์ฌ ์๊ณ ๊ฐ๊ฒฉ์ด ๋งค์ฐ ๋น์ธ๋ฉฐ, ๊ทธ๋งํผ ์๋๊ฐ ๋น ๋ฅธ ๊ฒ์ด ํน์ง์ ๋๋ค.
10 ํด๋ญ ์ฌ์ดํด ๋ฏธ๋ง์ ์ ๊ทผ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์บ์ฌ(Caches)
๊ฐ ๋๋ฒ์งธ์ธ ๋ฑ๊ธ์ ์์นํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์บ์๋ CPU ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ ์๋ ๊ฐ๊ทน์ ์ค์ฌ์ฃผ๋ ์์ถฉ์ฌ์ด๋ฉฐ, ๋ฐ๋ผ์ ๋ฒํผ๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํฉ๋๋ค.
(์ด ์๋ ๊ฐ๊ทน ๋๋ฌธ์ ๋ณ๋ชฉํ์์ด ๋ฐ์ํฉ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ๋ฒํผ๋ ์์ถฉ์ฌ๋ผ๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์)
์บ์์๋ ๋ณดํต ๊ฐ๊ฒฉ์ด ๋น์ธ๊ณ ์๋๊ฐ ๋น ๋ฅด์ง๋ง ์ฉ๋ ๋๋น ํฌ๊ธฐ๊ฐ ํฐ SRAM
์ ์ฌ์ฉํ๊ณ , ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์๋ ๊ฐ๊ฒฉ์ด ์ธ๊ณ ์๋๊ฐ ๋๋ฆฐ DRAM
์ ์ฌ์ฉํฉ๋๋ค.
์บ์๋ CPU ๊ฐ๊น์ด์ ๋๊ณ , ์์ฃผ ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ฌํ๋ ์ญํ ์ ํด์.
๊ทธ๋ฐ๋ฐ, ์์ฃผ ์ฐ๋ ๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ์๊น์?
"๋ฏธ๋ฆฌ ์ธ๋งํ ๋ฐ์ดํฐ๋ฅผ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ์บ์์ ์ฎ๊ฒจ๋์"
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ดํตํ๋ ํต์ฌ ๊ฐ๋ ์ ๋ฐ์ดํฐ ์ง์ญ์ฑ (Locality) ์ ๋๋ค. ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ด ์๋ฆฌ๋ก ์๋ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ณต๊ฐ ์ง์ญ์ฑ์ A[0], A[1] ๋ก ๊ตฌ์ฑ๋๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ด ์ฐธ์กฐ๋ ๋ฐ์ดํฐ ๊ทผ์ฒ์ ๋ฐ์ดํฐ๊ฐ ์ ์ํ์ ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ณต๋ฌธ ๋๋ฆด ๋ i, i+1, i+2 ์ด๋ฐ ์์ผ๋ก ์ ๊ทผํ์์์? ์ด๊ฑธ ๋ฏธ๋ฆฌ ์์ธกํด์ ๋ฐ์ดํฐ๋ฅผ ์บ์์ ๋ด์๋๋ ๊ฒ๋๋ค.
๊ฒฐ๊ตญ ์บ์๋ ์ด๋ ๊ฒ ์๊ฐํ๋ฉด ๋ผ์:
"CPU๊ฐ ๊ฐ์ฅ ์๋ผ๋ ์น๊ตฌ! ํญ์ ์์ ๋ถ์ด ๋ค๋๋ ๋น์ ๊ฐ์ ์กด์ฌ"
"์๋ ์บ์๊ฐ ํ ๊ฐ๋ง ์์ผ๋ฉด ์ ๋ผ์? ์ ์๊พธ ๊ณ์ธต์ ๋๋๋ ๊ฑฐ์์?"
๊ทธ๊ฑด ๋ฐ๋ก ์๋ vs ์ฉ๋์ ๊ท ํ ๋๋ฌธ์ ๋๋ค.
CPU์ ์ฑ๋ฅ์ ์ด์ผ๊ธฐํ ๋ "L1 ์บ์๊ฐ ์ผ๋ง๋", "L2๋ ๋ช MB๋" ๊ฐ์ ์๊ธฐ ๋ค์ด๋ณด์ จ์ ๊ฑฐ์์. ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ CPU ๋ฐ๋ก ์์ ์๋ ์ด๊ณ ์ ๋ฉ๋ชจ๋ฆฌ๋ก, ์๋๋ ๋น ๋ฅด์ง๋ง ์ฉ๋์ ์๊ณ ๊ฐ๊ฒฉ์ ๋น์ธ๋ค๋ ํน์ง์ด ์์ด์.
๊ทธ๋์ ๋จ ํ๋์ ์บ์๋ง ๋๊ธฐ๋ณด๋ค๋, ์๋์ ์ฉ๋ ์ฌ์ด์ ๊ท ํ์ ์ก๊ธฐ ์ํด ๊ณ์ธต์ ๋๋ ์ ๊ตฌ์ฑํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก L1, L2, L3 ์บ์ ๊ตฌ์กฐ์
๋๋ค.
์ฌ๊ธฐ์ 'L'์ Level์ ์ค์๋ง๋ก, L1์ด ๊ฐ์ฅ ๋น ๋ฅด๊ณ , L3๋ก ๊ฐ์๋ก ๋๋ฆฌ์ง๋ง ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ด์.
์ด ๊ตฌ์กฐ๋ ๋ง์น ๋์ ์์ ๋ฐฐ๋ฌ ์์คํ ๊ณผ๋ ๋น์ทํด์:
์บ์ ๊ณ์ธต | ๋น์ | ์๋ | ์ฉ๋ | ์์น |
---|---|---|---|---|
L1 | ๋ด ์ฑ ์ ์๋ | ๋งค์ฐ ๋น ๋ฆ | ๋งค์ฐ ์์ (8~64KB) | CPU ๋ด๋ถ |
L2 | ์ง ๋ณต๋์ ์๋ ๋ฌผํํจ | ๋น ๋ฆ | ์์~์ค๊ฐ (64KB~4MB) | CPU ๋ด๋ถ or ์ธ๋ถ |
L3 | ์งํ ์ฐฝ๊ณ | ๋๋ฆผ | ํผ (๋ช MB ์ด์) | ๋ฉ์ธ๋ณด๋ ๋๋ CPU ๊ณต์ |
์ด๋ ๊ฒ ๋ค๋จ๊ณ๋ก ์บ์๋ฅผ ๋ฐฐ์นํ๋ฉด, ์์ฃผ ์ฐ๋ ๊ฑด L1์, ๊ทธ๋ณด๋ค ๋ ์ฐ๋ ๊ฑด L2, ๊ทธ๋ฆฌ๊ณ ํฐ ๋ฐ์ดํฐ๋ L3์ ์ ์ฅํด์ CPU์ ์๋๋ฅผ ์ต๋ํ ์ ์งํ ์ ์์ด์.
๊ฒฐ๊ตญ ์ด ๊ตฌ์กฐ์ ๋ชฉํ๋:
"CPU๊ฐ ๋๋ฆฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ์ต์ํํ๊ธฐ ์ํด, ์์ฃผ ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊น์ด ์์๋๋ก ๋๋ ๋ณด๊ดํ๋ ๊ฒ"
ํนํ L1 ์บ์๋ ๊ตฌ์กฐ์ ์ผ๋ก๋ ํน์ดํด์. ๋ช ๋ น์ด ์บ์(I-Cache) ์ ๋ฐ์ดํฐ ์บ์(D-Cache) ๊ฐ ๋ถ๋ฆฌ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
L1 ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ CPU์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ณต๊ธํด ์ฃผ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ์ ๊ทผ ์ง์ฐ ์๊ฐ(Access latency)์ด ๋งค์ฐ ์ค์ํ๋ฐ,
๋ช
๋ น์ด
๋ ๋ณดํต ๊ณต๊ฐ ์ง์ญ์ฑ์ด ๋๊ณ ๋ฐ์ดํฐ๋ ๋ณดํต ์๊ฐ ์ง์ญ์ฑ์ด ๋์ต๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ด ๋์ ๋๋์ด ์๋ก ๋ค๋ฅธ ์ง์ญ์ฑ์ ์ด์ฉํ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ๋๋๋ฉด ๋์์ ๋ช ๋ น์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์์ด์ CPU์ ํ์ดํ๋ผ์ด๋ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
L2๋ถํฐ๋ ๋ณดํต I/D ๊ตฌ๋ถ ์์ด ํ๋์ ํฐ ์บ์๋ก ๊ตฌ์ฑ๋๋ฉฐ, L1์์ ๋ฐ์ดํฐ๋ฅผ ๋ชป ์ฐพ์ ๋ L2๋ฅผ, ๊ทธ๋ค์์ L3๋ฅผ ํ์ํ๋ ๋ฐฉ์์ด์์.
์๋๋ ARM Cortex-A72์ ๊ตฌ์กฐ์์๋ก, ๊ฐ ์บ์์ ์์น์ ์ญํ ์ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋จ์ํ โ๋น ๋ฅธ ์ ์ฅ ๊ณต๊ฐโ ๊ทธ ์ด์์ ๋๋ค. ์ด๋์ ์์นํ๋๋์ ๋ฐ๋ผ ์ ๊ทผ ์๋์ ์ฉ๋๊ฐ ๋ฌ๋ผ์ง๊ณ , CPU ์ ์ฒด ์ฑ๋ฅ์๋ ์ํฅ์ ์ค๋๋ค.
L1 ์บ์๋ CPU ์ฝ์ด ๋ด๋ถ์ ๋ด์ฅ๋์ด ์์ด์.
CPU๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ๊ณ์ฐํ ๋ ์ ์ผ ๋จผ์ ์ ๊ทผํ๋ ์บ์์ด๊ธฐ ๋๋ฌธ์, ์๋๊ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
L1 ์บ์๋ ์์ง๋ง ๊ฐ์ฅ ๋น ๋ฅธ ์ ์ฅ ๊ณต๊ฐ์ด๋ผ, ์ต๊ทผ์ ์ฌ์ฉ๋ ๋ช ๋ น์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ์ ์ฅํ๊ณ , CPU์ ํ์ดํ๋ผ์ธ ํจ์จ์ ๋์ฌ์ค๋๋ค.
L2 ์บ์๋ L1๋ณด๋ค ์ฝ๊ฐ ๋๋ฆฌ์ง๋ง ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์์ด์. ์์ ์๋ CPU ์ธ๋ถ(๋ณด๋ ์ ์นฉ)์ ์์์ง๋ง, ์์ฆ์ ๋๋ถ๋ถ CPU ๋ด๋ถ์ ๋ด์ฅ๋ฉ๋๋ค.
L2 ์บ์๋ L1์ ๋ฐฑ์ ์ญํ ์ ํ๋ฉฐ, ์์ฆ CPU์์ ๋๋ถ๋ถ ์ฝ์ด๋ง๋ค L2๋ฅผ ๋ฐ๋ก ๋ถ์ด๊ฑฐ๋, ๋์ธ ๊ฐ ์ฝ์ด๊ฐ ๊ณต์ ํ๋ ๊ตฌ์กฐ๋ ๋ง์์.
L3 ์บ์๋ ์์ ์ ๋ฉ์ธ๋ณด๋๋ ์นฉ์ ์ ์ธ์ฅ ํํ๋ก ๋ถ๋ ๊ฒฝ์ฐ๋ ์์์ง๋ง, ์ต๊ทผ ์ธํ ์ i5, i7 ์๋ฆฌ์ฆ์ฒ๋ผ ๊ณ ์ฑ๋ฅ CPU๋ L3๋ CPU ์์ ๋ด์ฅ๋์ด ์์ด์. ๋ค๋ง, L3๋ ๊ฐ ์ฝ์ด๊ฐ ๊ณต์ ํด์ ์ฐ๋ ๊ตฌ์กฐ์ ๋๋ค.
์ฌ๋ฌ ์ฝ์ด๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํด์ผ ํ ๋, L3 ์บ์๊ฐ ๊ทธ ์ค์ฌ์ ์ญํ ์ ํด์ค๋๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์๊ฐ์ ์ค์ด๊ธฐ ๋๋ฌธ์, ๋ฉํฐ์ฝ์ด ํ๊ฒฝ์์ ์ฑ๋ฅ ํฅ์์ ๊ธฐ์ฌํด์.
โ L3 ์บ์๊ฐ CPU ์์ ์์ผ๋ฉด ๋ญ๊ฐ ์ข์๊น?
์์ ์๋ L3 ์บ์๊ฐ CPU ์ธ๋ถ, ์ฆ ๋ฉ์ธ๋ณด๋๋ ๋ค๋ฅธ ์นฉ์ ์ ๋ฐ๋ก ๋ถ์ด ์๋ ๊ฒฝ์ฐ๋ ์์์ด์. ํ์ง๋ง ์ต๊ทผ ์ธํ i5, i7 ๊ฐ์ ๊ณ ์ฑ๋ฅ CPU๋ L3 ์บ์๋ CPU ๋ด๋ถ์ ํตํฉํด๋ฒ๋ ธ์ต๋๋ค.
๊ทธ๋ ๊ฒ ํ๋ฉด ๋ญ๊ฐ ์ข๋๋ฉด์:
๊ฒฐ๊ณผ: ๋ฉํฐ์ฝ์ด ์์ ์์ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ๋น ๋ฅด๊ฒ ์ด๋ค์ ธ์ ์ ๋ฐ์ ์ธ ์๋ต์ฑ๊ณผ ์๋๊ฐ ์ข์์ง๋๋ค!
๊ฒฐ๊ณผ: ๋ฉํฐ์ฝ์ด ๋ณ๋ ฌ ์์ ์ด๋ ๋ฉํฐ์ค๋ ๋ ํ๋ก๊ทธ๋จ ์คํ ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
"L3 ์บ์๊ฐ CPU ์์ ์์ผ๋ฉด ๋ ๋น ๋ฅด๊ณ , ์ ๋ ฅ๋ ์ ๊ฒ ๋ค๊ณ , ๋ฉํฐ์ฝ์ด ์ฑ๋ฅ๊น์ง ์ข์์ง๋๋ค!"
์บ์ ์ข ๋ฅ | ์์น | ์ ๊ทผ ์๋ | ๊ณต์ ์ฌ๋ถ | ํน์ง |
---|---|---|---|---|
L1 | ๊ฐ ์ฝ์ด ๋ด๋ถ | ๋งค์ฐ ๋น ๋ฆ | X (๊ฐ๋ณ) | ๋ช ๋ น์ด/๋ฐ์ดํฐ ๋ถ๋ฆฌ, ์ด๊ณ ์ ์ ๊ทผ |
L2 | ์ฝ์ด ๋ด๋ถ ๋๋ ์ฝ์ด๋น 1๊ฐ | ๋น ๋ฆ | ๋ณดํต X | L1์ ๋ฐฑ์ , ์ค๊ฐ ์์ค ์บ์ |
L3 | CPU ๋ด๋ถ, ๋ชจ๋ ์ฝ์ด ๊ณต์ | ๋๋ฆผ | O | ๋ค์ค ์ฝ์ด ํ์ ์ ์ต์ ํ |
์: โCPU โ L1 โ (์์ผ๋ฉด) L2 โ (์์ผ๋ฉด) L3 โ (์์ผ๋ฉด) ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ โ ๋์คํฌโ
L1, L2, L3๋ ๋คํธ์ํฌ ๊ณ์ธต, ์บ์ ๋ฉ๋ชจ๋ฆฌ, ์ด๋ฅ์ฐจ ๋ฑ์์ ์ฌ์ฉ๋๋ ์ฉ์ด๋ก, ๊ฐ๊ฐ ๋ค๋ฅธ ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋คํธ์ํฌ์ ๊ณ์ธต์ ๋ฐ๋ผ ๊ตฌ๋ถ๋๋ ์ค์์น๋ก, L1์ ํ๋ธ, L2๋ ์ค์์นญ ํ๋ธ, L3๋ ๋ผ์ฐํฐ๋ผ๊ณ ๋ ํฉ๋๋ค.
ํ
์จ์ ๊ธฐ์ ์ด์ผ๊ธฐ(L1 ์ค์์น)์ ๋ฐ๋ฅด๋ฉด:
L1 ์ค์์น๋ ๋ฌผ๋ฆฌ ๊ณ์ธต(Layer1)์ผ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค.
L2 ์ค์์น๋ ๋ฐ์ดํฐ๋งํฌ ๊ณ์ธต(Layer2)๋ฅผ ํตํด MAC ์ฃผ์๋ฅผ ๋ณด๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค.
L3 ์ค์์น๋ ๋คํธ์ํฌ ๊ณ์ธต(Layer3)๋ฅผ ํตํด IP ์ฃผ์๋ฅผ ๋ณด๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํฉ๋๋ค.
์บ์ ์ฉ๋์ด ํฌ๋ฉด ์ฑ๋ฅ์ ๊ธ์ ์ ์ธ ์ํฅ์ ์ฃผ๋ ๊ฑด ๋ง์ง๋ง, ์ฌ์ฉ์๊ฐ ์ฒด๊ฐํ ์ ์๋ ์์ค์ ์๋ ์๋ ์์ด์.
์ค์ ๋ก๋ ๋ฒค์น๋งํฌ ํด์์ ์์น๋ก ๋ํ๋๋ ์ ๋์ด๋ฉฐ, ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ํ๊ฒฝ์์๋ ํฐ ์ฐจ์ด๋ฅผ ๋๋ผ๊ธฐ ์ด๋ ต์ต๋๋ค.
๊ฒฐ๊ตญ, CPU๋ฅผ ์ ํํ ๋ ์บ์๋ ๋ณด์กฐ์ ์ธ ํ๋จ ๊ธฐ์ค์ด ๋ ์๋ ์์ง๋ง, ์ ๋์ ์ธ ๊ธฐ์ค์ ์๋๋ผ๋ ์ ์ ๊ธฐ์ตํด๋๋ฉด ์ข์์.
์บ์๋ ๋ง๋ฒ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ตํ๋ ๊ฒ ์๋๋๋ค. ๊ฝค ์ฒด๊ณ์ ์ธ ๋ฐฉ์์ผ๋ก ๋์ํด์. ๊ทธ๊ฒ ๋ฐ๋ก ๋งคํ(Mapping) ๊ธฐ๋ฒ์ ๋๋ค.
์ถ์ฒ : https://ssoonidev.tistory.com/35
cpu๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ผ๋ ค๊ณ ํ์ง๋ง, cpu๊ฐ ์ฐ๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ์์๋ ์ธ๊ณ์ด ์ ๋๋ค.
๋ฐ๋ผ์ ์ค๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ฅ์น(MMU)๊ฐ ๊ฐ์ด๋ฐ์์ ๋ฒ์ญํ์ฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ ๋จน์ ์ ์๋ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณํํด์ค์!
์ด๊ฑธ ๋ง์น ์ฐ์ฒด๊ตญ ์ฌ์ํจ ์ฐพ๊ธฐ์ฒ๋ผ ์๊ฐํ๋ฉด ๋ผ์:
๊ฒฐ๊ตญ ์ด๊ฑธ ํตํด์ ์ฐ๋ฆฌ๋ ์ด๋ ๊ฒ ๋งํ ์ ์์ด์:
"์บ์๋ ์ฃผ์๋ฅผ ํ๊ทธ์ ์ธ๋ฑ์ค๋ก ๋ถํดํด์, '์ด ํธ์ง๊ฐ ๋ํํ ๋ง๋์ง'๋ฅผ ํ๋จํ๋ ์ค๋งํธํ ์ฐ์ฒดํต์ด๋ค."
์ข์์! ๋ ๊ฐ์ ๊ธ์ ํฉ์น๋ฉด ์บ์์ ๊ตฌ์กฐ์ ์ฃผ์ ๋งคํ ์๋ฆฌ๊น์ง ํ๋ฆ ์๊ฒ, ์ฝ๊ฒ ์ค๋ช ํ ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ ๋ฆฌํด๋ณผ๊ฒ์.
์์ ๋ชฉ์ ์๋ฆฌ์ฆ ํ์์ ๋ง์ถฐ์:
์ด๋ฒ ํ์์๋ ์บ์๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ์๊ฒผ๋์ง๋ฅผ ํํค์ณ ๋ด
๋๋ค.
์ปดํจํฐ ์ ์บ์๋ ๊ฒฐ๊ตญ์ ์ ๋๋ ์นธ์นธ์ด ์๋ฉ์ฅ ๊ฐ์ ๊ตฌ์กฐ๋๊น์!
์บ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก '์บ์ ๋ผ์ธ(Line)' ๋จ์๋ก ๊ตฌ์ฑ๋์ด ์์ด์.
๊ฐ ์บ์ ๋ผ์ธ์๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์จ '๋ธ๋ก(Block)'์ด ๋ค์ด๊ฐ๊ณ , ์ด์ ํจ๊ป ์ ํจ ๋นํธ(Valid bit)์ ํ๊ทธ(Tag) ์ ๋ณด๋ ํจ๊ป ์ ์ฅ๋ฉ๋๋ค.
์บ์ ๋ผ์ธ๋ค์ '์ธํธ(Set)'๋ผ๋ ๋จ์๋ก ๋ฌถ์ฌ ์์ด์.
์ด๋ CPU๊ฐ ์ฐธ์กฐํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ ํน์ ํ ์ธํธ ํ๋์๋ง ๋งคํ๋๊ณ , ๊ทธ ์ธํธ ์์ ๋ผ์ธ ์ค ํ๋์ ์ ์ฅ๋ฉ๋๋ค.
์ฆ,
์ธํธ โ ๋ผ์ธ โ ๋ธ๋ก
์ด๋ผ๋ ๊ตฌ์กฐ๋ก ๊ธฐ์ตํ๋ฉด ๋ผ์.
์บ์๊ฐ ์ ์ฒด์ ์ผ๋ก S๊ฐ์ ์ธํธ๋ก ๊ตฌ์ฑ๋์ด ์๊ณ ,
๊ฐ ์ธํธ์๋ E๊ฐ์ ์บ์ ๋ผ์ธ์ด ์์ผ๋ฉฐ,
๊ฐ ๋ผ์ธ์ ํ๋์ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ ์ ์ฅํด์.
๋ฐ๋ผ์ ์ด ์บ์ ํฌ๊ธฐ๋:
๐ฆ S ร E ร B ๋ฐ์ดํธ (B๋ ๋ธ๋ก์ ํฌ๊ธฐ)๋ก ๊ณ์ฐํ ์ ์์ด์.
์ธํธ๋น ๋ผ์ธ์ ์(E)์ ๋ฐ๋ผ ์บ์์ ํํ๋ ๋ฌ๋ผ์ง๋๋ค.
์บ์ ๊ตฌ์กฐ | ์ค๋ช |
---|---|
Direct-mapped Cache | ์ธํธ๋น ๋ผ์ธ์ด 1๊ฐ (E = 1) |
โ ๋ธ๋ก์ ํน์ ํ ํ ์๋ฆฌ์๋ง ๋ค์ด๊ฐ ์ ์์ด์ | |
Set-associative Cache | ์ธํธ๋น ๋ผ์ธ์ด ์ฌ๋ฌ ๊ฐ (E > 1) |
โ ๋ธ๋ก์ ํด๋น ์ธํธ ์์ ์ฌ๋ฌ ์๋ฆฌ ์ค ํ ๊ณณ์ ๋ค์ด๊ฐ ์ ์์ด์ | |
Fully-associative Cache | ๋ชจ๋ ๋ธ๋ก์ด ๋ชจ๋ ๋ผ์ธ์ ๋ค์ด๊ฐ ์ ์์ด์ |
โ E = ์ ์ฒด ๋ผ์ธ ์ |
์ด์ ์บ์ ๊ตฌ์กฐ๋ฅผ ์์์ด์. ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก์ด ์ด๋ป๊ฒ ์บ์์ ๋ค์ด๊ฐ๋์ง ์์๋ณด๋ฉด, ๋ฐ๋ก "๋งคํ ๋ฐฉ์" ์ด์์.
์ฅ์ : ๋น ๋ฅด๊ณ ๊ตฌํ์ด ๊ฐ๋จํจ.
๋จ์ : ์ถฉ๋(Conflict)์ด ๋ง์ด ๋ฐ์ํ ์ ์์.
์ฅ์ : ์ถฉ๋ ์์.
๋จ์ : ์ด๋ค ๋ธ๋ก์ด ์ด๋ ์๋์ง ์ฐพ์ผ๋ ค๋ฉด ๋ชจ๋ ๋ผ์ธ์ ๋ค ๊ฒ์ฌํด์ผ ํ๋ ๋๋ฆผ (๋น์).
์ฅ์ : ์ ๋นํ ์ ์ฐ์ฑ๊ณผ ์๋.
๋จ์ : ๊ตฌํ ๋ณต์ก๋๋ ์ข ์์.
๋ฐฉ์ | ์์น ๊ฒฐ์ | ์ถฉ๋ ๊ฐ๋ฅ์ฑ | ์๋ | ์ ์ฐ์ฑ |
---|---|---|---|---|
์ง์ ๋งคํ | ๊ณ ์ ๋ ๋ผ์ธ | ๋์ | ๋น ๋ฆ | ๋ฎ์ |
์์ ์ฐ๊ด | ์๋ฌด ๋ผ์ธ | ์์ | ๋๋ฆผ | ๋์ |
์ธํธ ์ฐ๊ด | ์ธํธ ๋ด ์ ํ | ์ค๊ฐ | ์ค๊ฐ | ์ค๊ฐ |
์บ์ ๋ฉ๋ชจ๋ฆฌ ์ฑ๋ฅ ํฅ์์ ์ํด ์ ์ ํ ์บ์ ์ ์ฑ ์ ์ทจํด์ผ ๋ ์ดํด์๋ฅผ ์ค์ด๋ฉด์ ๋์ญํญ์ ๋์ด์ฌ๋ฆด ์ ์์ต๋๋ค.
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ ๋ธ๋ก์ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ํน์ ์งํฉ์๋ง ๋ค์ด๊ฐ ์ ์๋๋ก ๋์ด ์์ต๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ 2๋ฒ์งธ ๋ธ๋ก (00001) โ ์บ์์ 2๋ฒ์งธ ์งํฉ(Set 2 : 001)์๋ง ๋ค์ด๊ฐ ์ ์์ด์
์ ๊ทธ๋ฐ๊ฑธ๊น์?
CPU ๊ฐ ์ฐธ์กฐํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์บ์์ ์ ๋ฌํ ๋, ์บ์๋ ํด๋น ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ญ์ด ์บ์์ ์๋์ง ํ์ํด์ผ ํฉ๋๋ค.
์ด ๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ญ์ด ๋ง๊ตฌ์ก์ด๋ก ์ ์ฅ๋์ด ์๋ค๋ฉด ์ ํ์ผ๋ก ํ์ํด์ผ ํ ๊ฒ์
๋๋ค. = O(N x E)
๊ทธ๋ฐ๋ฐ ์์ ๊ฐ์ด ํด์ ๋ฐฉ์์ผ๋ก ์ ์ฅ๋์ด์์ผ๋ฉด O(E) ๋ก ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ด๋ E๋ ํ์ ๋ ์ซ์์ด๋ฏ๋ก O(1)์ ์๋ ดํฉ๋๋ค.
๋๋ถ์ ํ์์ Set ๋ด์์๋ง ํ๋ฉด ๋จ โ O(E), ๊ฑฐ์ O(1) ์์ค!
์ฃผ์ m =
t (ํ๊ทธ)
+s (์ธํธ ์ธ๋ฑ์ค)
+b (๋ธ๋ก ์คํ์ )
์ด๋ฆ | ์ญํ |
---|---|
t (Tag) | ๊ฐ์ Set ์์์ ์ด๋ค ๋ธ๋ก์ธ์ง ๊ตฌ๋ณ |
s (Set index) | ์ด๋ Set์ ๋ค์ด๊ฐ์ง๋ฅผ ๊ฒฐ์ |
b (Block offset) | ๋ธ๋ก ์์์ ๋ช ๋ฐ์ดํธ ๋จ์ด์ก๋์ง (๋ธ๋ก ๋ด ์์น) |
โ ๋ฐ๋ผ์, ์ฃผ์ m๋นํธ๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋๋ ์ ์์ด์:
๊ตฌ๋ถ | ๋นํธ ์ |
---|---|
Tag (t) | m - b - s |
Set Index (s) | s |
Block Offset (b) | b |
์บ์๋ โ๋ด๊ฐ ๋ฐฉ๊ธ ์ผ๋ ๋ฐ์ดํฐโ๋ฅผ ์์ฃผ ๋น ๋ฅด๊ฒ ๋ค์ ๊บผ๋ด ์ฐ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ด์.
๊ทธ๋ฐ๋ฐ CPU ์
์ฅ์์๋ ์ด๋ ๊ฒ ๋ฌผ์ด๋ด์ผ ํด์:
"๋ด๊ฐ ์ฐพ๊ณ ์ถ์ ์ด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ง๊ธ ์บ์์ ์๋?"
์ด ์ง๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ตํ๋ ค๋ฉด, ๊ทธ ์ฃผ์๊ฐ ๋ค์ด๊ฐ '์๋ฆฌ(์์น)'๊ฐ ์ ํด์ ธ ์์ด์ผ ํด์.
๊ทธ๋์ผ O(1)์ ๊ฐ๊น์ด ์๋๋ก ์ฐพ์ ์ ์๊ฒ ์ฃ !
CPU๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฌ์ฉํ ๋, ๊ทธ ์ฃผ์๋ฅผ ์ธ ๋ถ๋ถ์ผ๋ก ์ชผ๊ฐ์ ์บ์์ ์ ๋ฌํด์.
[ Tag | Set Index | Block Offset ]
โ โ โ
| | โโ ๋ธ๋ก ์์์ ๋ช ๋ฒ์งธ ๋ฐ์ดํธ์ธ์ง
| โโโโโโโโโโโโโโ ์ด๋ ์ธํธ(Set)์ ๋ค์ด๊ฐ์ง
โโโโโโโโโโโโโโโโโโโโโโโโโ ์ธํธ ์์์ ์ด๋ค ๋ธ๋ก์ธ์ง
์บ์๋ฅผ ์ํํธ ๋จ์ง๋ผ๊ณ ์๊ฐํด๋ณผ๊ฒ์:
์ฃผ์ = โ์ํํธ 101๋ 302ํธ, ์ํ ์์ ์๋ ์ฑ โ
CPU๋ ์ด ์ฃผ์๋ฅผ ๋ณด๊ณ ๋ฐ๋ก 101๋(์ธํธ)์ ๋ค์ด๊ฐ์, ๊ฑฐ๊ธฐ์ 302ํธ(Tag)์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ณ , ๊ทธ ์์์ ์ํ ์(Offset)์ ๊ฐ์ ๊บผ๋ด๋ ๊ฑฐ์์.
์:
๊ทธ๋ฌ๋ฉด:
์ฆ, CPU๊ฐ ๋ณด๋ ์ฃผ์๋ ์ด๋ ๊ฒ ๋๋ ์ ธ ์์ด์:
[ Tag (18๋นํธ) | Set (8๋นํธ) | Offset (6๋นํธ) ]
์ด๋ ๊ฒ ํ๋ฉด CPU๋ ์์ฃผ ๋น ๋ฅด๊ฒ ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์์ด์:
๋๋ถ์ O(1)์ ๊ฐ๊น์ด ์๋๋ก ํ์์ด ๊ฐ๋ฅํด์.
๊ทธ๋ฅ ๋ฌด์์ ๋ค ๋ค์ง๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด์ฃ !
์ฉ์ด | ์ค๋ช |
---|---|
๋ธ๋ก | ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ ์กฐ๊ฐ |
๋ผ์ธ | ๋ธ๋ก ํ๋๋ฅผ ์ ์ฅํ ์ ์๋ ์บ์์ ์นธ |
์ธํธ | ์ฌ๋ฌ ๋ผ์ธ์ ๋ฌถ์ ๊ทธ๋ฃน |
ํ๊ทธ(Tag) | ๋์ผ ์ธํธ ๋ด ๋ธ๋ก์ ์๋ณํ๋ ๊ณ ์ ์ ๋ณด |
Valid Bit | ํด๋น ๋ผ์ธ์ด ์ ํจํ์ง ๋ํ๋ด๋ ํ๋๊ทธ |
Set Index | ์ด๋ ์ธํธ์ ๋ค์ด๊ฐ์ง๋ฅผ ์ ํจ |
Block Offset | ๋ธ๋ก ์์์์ ์์น (๋ช ๋ฒ์งธ ๋ฐ์ดํธ?) |
m๋นํธ ์ฃผ์ = [Tag (t) + Set Index (s) + Block Offset (b)]
CPU๋ ์ฐธ์กฐํ๊ณ ์ถ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์บ์์ ์ ๋ฌํฉ๋๋ค. ๊ทธ๋ ์บ์๋ ์ด๋ ๊ฒ ๋์ํด์:
s
๋นํธ๋ฅผ ์ฌ์ฉํด ์ด๋ค Set์ ์ฐธ์กฐํ ์ง ๊ฒฐ์ t
๋ฅผ ๋น๊ตํด ์ผ์นํ๋ ๋ธ๋ก์ด ์๋์ง ํ์ธ์ํฉ | ์ค๋ช |
---|---|
์บ์ ํํธ | ์์ฒญํ ๋ฐ์ดํฐ๊ฐ ์บ์์ ์กด์ฌ โ Block Offset(b)๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ ๋ฐํ |
์บ์ ๋ฏธ์ค | ๋ฐ์ดํฐ๊ฐ ์์ โ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ํด๋น ๋ธ๋ก ์ ์ฒด๋ฅผ ๊ฐ์ ธ์ Set์ ์ ์ฅ ํ ๋ฐ์ดํฐ ๋ฐํ |
๐ ๋ธ๋ก ๋จ์๋ก ๊ฐ์ ธ์จ๋ค๋ ์ ! ์์ง ๋ง์ธ์.
1๋ธ๋ก = 1์บ์๋ผ์ธ = ๋ฐ์ดํธ ์ฌ๋ฌ ๊ฐ ๋ฌถ์
Set์ ์ด๋ฏธ ๋ฐ์ดํฐ๊ฐ ๊ฝ ์ฐจ์๋ค๋ฉด, ์ด๋ค ๋ธ๋ก์ ์ ๊ฑฐํ๊ณ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์๊น?
์๊ณ ๋ฆฌ์ฆ | ์ค๋ช |
---|---|
Random | ๋ฌด์์ ๋ธ๋ก ์ ๊ฑฐ. ๊ตฌํ์ ์ฌ์ |
FIFO (์ ์ ์ ์ถ) | ๋จผ์ ๋ค์ด์จ ๋ธ๋ก๋ถํฐ ์ ๊ฑฐ |
LRU (Least Recently Used) | ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ๋ธ๋ก ์ ๊ฑฐ |
LFU (Least Frequently Used) | ๊ฐ์ฅ ์ฌ์ฉ ํ์๊ฐ ์ ์ ๋ธ๋ก ์ ๊ฑฐ |
์ ์ฑ | ์ค๋ช | ์ฅ์ | ๋จ์ |
---|---|---|---|
Write-through | ์บ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์์ ์์ | ์ผ๊ด์ฑ ๋ณด์ฅ | ๋ฒ์ค ๋ณ๋ชฉ ๊ฐ๋ฅ |
Write-back | ์บ์๋ง ์์ , ๋์ค์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ | ๋น ๋ฆ | ์ผ๊ด์ฑ ์ ์ง ์ด๋ ค์, VI bit ํ์ |
โ Write-back์ VI (Valid-Invalid) ๋นํธ๋ก โ์์ ๋ ์ํโ๋ฅผ ํ์ํด๋ฌ์ผ ํจ
์ ์ฑ | ์ค๋ช | ํน์ง |
---|---|---|
Write-allocate (Fetch on Write) | ๋ฉ๋ชจ๋ฆฌ์์ ๋ธ๋ก์ ๊ฐ์ ธ์ ์บ์์ ์ ์ฅ ํ ์์ | ์์ฃผ ์ฐ๋ ๋ฐ์ดํฐ ์บ์์ ๋ณด๊ด |
No-write allocate (Write-around) | ๋ฉ๋ชจ๋ฆฌ๋ง ์์ ํ๊ณ ์บ์๋ ๊ฑด๋๋ฆฌ์ง ์์ | ์ฐ๊ธฐ๋ง ์ผ์ด๋ ๋ ์ ๋ฆฌ |
์ฉ์ด | ์ ์ |
---|---|
Hit Ratio | Hit / (Hit + Miss) |
Miss Ratio | 1 - Hit Ratio |
Hit Time | ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์๊ฐ |
Miss Penalty | ๋ฉ๋ชจ๋ฆฌ์์ ๋ธ๋ก์ ๊ฐ์ ธ์ค๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ |
์ด ๋ ์ดํด์ | Miss์ผ ๊ฒฝ์ฐ: Hit Time + Miss Penalty |
N๊ฐ | ์ฅ๋จ์ |
---|---|
์์์๋ก (1-Way = Direct Mapped) | ๋น ๋ฆ (Hit Time โ), ์ถฉ๋ โ (Conflict Miss โ) |
ํด์๋ก (Full Associative) | ์ถฉ๋ โ, ํ์ ๋๋ฆผ (Hit Time โ) |
โ ์ํฉ์ ๋ฐ๋ผ Hit Time vs Miss Rate์ ํธ๋ ์ด๋์คํ ์กฐ์
"์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ ๋์ค๊ฐ ๋ฌด์จ ๊ด๋ จ์ด ์์ด์?"๋ผ๊ณ ๋ฌป๋ ๋ถ๋ค์ด ๋ง์๋ฐ,
์ฌ์ค ์ด ๋์ ์บ์(cache)๋ผ๋ ๊ฐ์ ์ฒ ํ์ ๋ฐํ์ผ๋ก ๋ง๋ค์ด์ก์ด์.
ํ์ง๋ง ์ฌ์ฉํ๋ ํ๊ฒฝ๊ณผ ๋ชฉ์ ์ด ๋ฌ๋ผ์.
ํญ๋ชฉ | ์บ์ ๋ฉ๋ชจ๋ฆฌ(Cache Memory) | ๋ ๋์ค(Redis) |
---|---|---|
์ด๋์ ์ฌ์ฉ? | ์ปดํจํฐ ๋ด๋ถ (CPU์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด) | ์๋ฒ ์ธ๋ถ (์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด) |
์ญํ | ๋๋ฆฐ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณต | ๋๋ฆฐ DB ๋์ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณต |
์ ์ฅ ์์น | ํ๋์จ์ด(CPU ์นฉ ์์ชฝ์ ๋ด์ฅ) | ์ํํธ์จ์ด(๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์ ์ฅ์) |
์ ์ฅ ๋ฐฉ์ | ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ธฐ๋ฐ ์๋ ์ ์ฅ | ํค-๊ฐ(Key-Value) ์์ผ๋ก ๋ช ์์ ์ ์ฅ |
์ฌ์ฉ ์ฃผ์ฒด | CPU | ์น์๋ฒ, ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ |
๋ฐ์ดํฐ ํ๋ฐ์ฑ | ์ ์ ๋๋ฉด ์ฌ๋ผ์ง | ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ฐ์ฑ์ด์ง๋ง, ์์ํ ์ค์ ๊ฐ๋ฅ |
๊ตฌํ ๋ฐฉ์ | ํ๋์จ์ด ๋ ๋ฒจ, ๋งค์ฐ ์ ์์ค | ์ํํธ์จ์ด ๋ ๋ฒจ, ๊ณ ์์ค API ์ ๊ณต |
์ฆ, ๋ ๋ค โ์๊ฐ ์ ์ฝโ์ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ ๊ฐ๊น์ด ๋๋ ์ ๋ต์ด์์!
๊ทผ๋ฐ ์ด๊ฒ ์์ฃผ ์กฐํ๋๋ ์ํ์ด๋ผ๋ฉด?
๋งค๋ฒ DB ๋ค๋ ์ค๋ ๊ฑด ๋นํจ์จ์ ์ด๊ฒ ์ฃ ?
product:1234
)"๋๋ฆฐ ๊ณณ์์ ์์ฃผ ๊บผ๋ด ์ฐ๋ ๋ฐ์ดํฐ๋, ๋น ๋ฅธ ๊ณณ์ ๋ฐ๋ก ๋ณต์ฌํด๋์!"
์ฐจ์ด์ | ์บ์ ๋ฉ๋ชจ๋ฆฌ | ๋ ๋์ค |
---|---|---|
๊ณ์ธต ์์น | CPU โ RAM | ์๋ฒ โ DB |
์ ์ฅ ๋์ | ๋ช ๋ น์ด, ๋ฐ์ดํฐ ๋ธ๋ก | JSON, ๋ฌธ์์ด, ํด์, ๋ฆฌ์คํธ ๋ฑ |
์ฌ์ฉ ๋ชฉ์ | CPU ์ฐ์ฐ ์๋ ํฅ์ | ์น์๋น์ค ์๋ต ์๋ ํฅ์ |
์๋ ๋ฐฉ์ | ์๋ (ํ๋์จ์ด ์์ค) | ์๋ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ค์ (์ํํธ์จ์ด ์์ค) |
ํฌ๊ธฐ | ์์ญ KB~์ MB | ์ GB~์์ญ GB (RAM ํ๋๊น์ง) |
์ ์ด ๊ถํ | ๊ฑฐ์ ์์ | ์์ ์ฌ์ฉ์ ์ ์ด ๊ฐ๋ฅ (TTL, ์ญ์ , ์ ๋ฐ์ดํธ ๋ฑ) |
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ โ๋ด ์ฑ
์ ์๋โ
โ CPU๊ฐ ์์ฃผ ๋ณด๋ ์๋ฃ๋ฅผ ๋ฐ๋ก ๊บผ๋ด ์ฐ๋ ค๊ณ ๋ฃ์ด๋ ์นธ
๋ ๋์ค๋ โํ์ฌ ๋ณต์ฌ๋ณธ ํด๋โ
โ ์ฌ๋๋ค์ด ์์ฃผ ์ฐพ๋ ๋ฌธ์๋ฅผ ๋ฏธ๋ฆฌ ๋ณต์ฌํด๋๊ณ , ์๋ณธ(DB)์ ๊ฑด๋๋ฆฌ์ง ์๊ฒ ํจ
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ CPU๋ฅผ ์ํ ํ๋์จ์ด ์บ์,
๋ ๋์ค๋ ์๋ฒ/์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ํํธ์จ์ด ์บ์์ ๋๋ค.
๋ ๋ค "๋น ๋ฅธ ์๋ต"์ ์ํด ๋น์ทํ ์ฒ ํ์ ๊ณต์ ํ์ง๋ง,
์ฐ๋ ์์น, ์ฃผ์ฒด, ๊ตฌํ ๋ฐฉ์์ด ๋ค๋ฅผ ๋ฟ์ด์์!
ARM์ CPU๋ฅผ ์ง์ ๋ง๋ค์ง ์์์. ๋์ , ๊ฐ๋ณ๊ณ ํจ์จ์ ์ธ CPU ์ค๊ณ๋๋ฅผ ๋ง๋ค์ด์ ๋ค๋ฅธ ๋ฐ๋์ฒด ํ์ฌ๋ค์๊ฒ ๋ผ์ด์ ์ค(์ค๊ณ ์ฌ์ฉ๊ถ) ํํ๋ก ํ์ฃ .
์ด๋ฐ ๋จ์ํ๊ณ ๊ฐ๋ฒผ์ด ์ค๊ณ๋ ์ ๋ ฅ ์๋ชจ๋ฅผ ์ค์ด๋ฉด์๋ ๋น ๋ฅธ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ค์. ๊ทธ๋์ ์ค๋งํธํฐ, IoT ๊ธฐ๊ธฐ, ๋์งํธ์นด๋ฉ๋ผ ๋ฑ ์ ์ ๋ ฅ์ด ์ค์ํ ๊ธฐ๊ธฐ๋ค์ ๋ฑ์ด์์!
1980๋
๋, ์๊ตญ์ '๊ตญ๋ฏผ์๊ฒ ์ปดํจํฐ๋ฅผ ์๋ฆฌ์!'๋ผ๋ BBC ์ปดํจํฐ ๋ฆฌํฐ๋ฌ์ ํ๋ก์ ํธ๋ฅผ ์์ํด์.
BBC๋ ๊ต์ก ๋ฐฉ์ก์ ์ธ ์ปดํจํฐ๋ฅผ ๋ง๋ค์ด๋ฌ๋ผ๊ณ ์์ด์ฝ(Acorn) ์ปดํจํฐ์ฌ์ ์์ฒญํ์ฃ .
๊ทธ ๊ฒฐ๊ณผ ๋ง๋ค์ด์ง ๊ฒ ๋ฐ๋ก BBC ๋ง์ดํฌ๋ก(BBC Micro).
๋น์๋ก์ ๊ณ ์ฑ๋ฅ์ด์๊ณ , ์๊ตญ ๊ต์ก ์์ฅ์ ํ์ ํ์ด์!
ํ์ง๋ง ์์ด์ฝ์ ๋ ๊ฐ๋ ฅํ CPU๊ฐ ํ์ํ๋ค๊ณ ํ๋จ, ์ธํ ์ ํ์กฐ๋ฅผ ์์ฒญํ์ง๋ง ๊ฑฐ์ ๋นํ๊ณ โฆ
๊ฒฐ๊ตญ โ๊ทธ๋ผ ์ฐ๋ฆฌ๊ฐ ๋ง๋ค์!โ ํ๊ณ ์์ฒด CPU ๊ฐ๋ฐ์ ๋ฐ์ด๋ญ๋๋ค.
์ด๋ ๊ฒ ํ์ํ ๊ฒ ๋ฐ๋ก ARM = Acorn RISC Machine์ด์์!
์ฒซ ARM CPU์ธ ARM2 (1987) ๋ ๋จ 2๋ง 7์ฒ ๊ฐ์ ํธ๋์ง์คํฐ๋ก ๊ตฌ์ฑ๋์ง๋ง,
์ธํ
์ 80286๋ณด๋ค ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฌ์ค์!
์ด ๊ธฐ์ ๋ ฅ ๋๋ถ์ ์ ํ๋ ์ฃผ๋ชฉํ๊ฒ ๋๊ณ ,
์์ด์ฝ์ ARM ๋ถ์๋ฅผ ๋ถ์ฌ์์ผ ์ง๊ธ์ ARM Holdings๊ฐ ๋ฉ๋๋ค.
์ ๋ ฅ ์๋ชจ๊ฐ ์ ๊ณ , ๋ฐ์ด๋ ๋ฎ์ผ๋ฉด์๋ ์ถฉ๋ถํ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์
๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์๋ ARM์ ๋ฐ๋ผ์ฌ ์ ์๋ ์ํคํ
์ฒ๊ฐ ์์์ฃ .
2020๋ , ์ ํ์ด ๋ฐํํ M1 ์นฉ์ ARM ๊ธฐ๋ฐ CPU์์.
์ด์ ๊น์ง๋ ๋งฅ๋ถ์ ์ธํ
CPU๋ฅผ ์ผ์ง๋ง,
M1๋ถํฐ๋ ์ ํ์ด ์ง์ ์ค๊ณํ ARM ๊ธฐ๋ฐ SoC๋ฅผ ์ฌ์ฉ!
์ ์ ๋ ฅ์์๋ ๋ถ๊ตฌํ๊ณ ์ฑ๋ฅ์ด ์์ฒญ๋์,
๋ฐ์คํฌํ ๋ถ์ผ์์๋ ARM์ด ๊ฒฝ์๋ ฅ์ ์
์ฆํ์ด์.
๊ตฌ๋ถ | ๋ด์ฉ |
---|---|
ARM์ด๋? | ์ ์ ๋ ฅ RISC ๊ธฐ๋ฐ CPU ์ค๊ณ ํ์ฌ (์ง์ ์์ฐ X) |
์ค๊ณ ์ฒ ํ | ๋จ์ํ ๋ช ๋ น์ด ์ธํธ โ ๋น ๋ฅด๊ณ ์ ๋ ฅ ํจ์จ ๋์ |
์์์? | 1980๋ ๋ ์๊ตญ, BBC ๊ต์ก์ฉ ์ปดํจํฐ์์ ํ์ |
์ ๋ช ์ ํ | ์ ํ M1, ์์ดํฐ, ๋ํ ๋ DS, ์ค๋งํธํฐ ๋๋ถ๋ถ |
์ฅ์ | ์ ๋ ฅ ํจ์จ, ์ ๋ฐ์ด, ๋ชจ๋ฐ์ผ/IoT์ ์ต์ ํ |
ํ์ฌ | ๋ ธํธ๋ถ(Mac), ์๋ฒ, ์ํผ์ปดํจํฐ๊น์ง ํ์ฅ ์ค! |
โ๋จ์ํ ์ค๊ณ๋ก, ์ธ์์ ๋ฐ๊พผ CPUโ
์ด๊ฒ ๋ฐ๋ก ARM์ ์ด์ผ๊ธฐ์ ๋๋ค ๐
์ถ์ฒ : https://woozzang.tistory.com/155
Apple์ ์์ฌ๊ฐ ์ค๊ณํ ์นฉ์ ์ค์ง ์์ฌ ๊ธฐ๊ธฐ์์๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์,
๊ฒฝ์์ฌ์ฒ๋ผ ์ธ๋ถ ๊ตฌ์กฐ๋ฅผ ํฌ๋ช
ํ๊ฒ ๊ณต๊ฐํ์ง ์์ต๋๋ค.
๊ทธ๋์ ์ค๊ณ๋ ์์ฒด๋ ์ ์ ์์ง๋ง, ๊ฐ ํํธ์ ์คํ ์์ค์ ๋ค์๊ณผ ๊ฐ์ด ์๋ ค์ ธ ์์ต๋๋ค.
ํญ๋ชฉ | Firestorm (๋น ์ฝ์ด) | Icestorm (๋ฆฌํ ์ฝ์ด) |
---|---|---|
์ฝ์ด ์ | 2์ฝ์ด | 4์ฝ์ด |
ํด๋ญ | 2.99GHz | 1.82GHz |
L1 ๋ช ๋ น์ด ์บ์ | 192KB | 128KB |
L1 ๋ฐ์ดํฐ ์บ์ | 128KB | 64KB |
L2 ์บ์ | 8MB | 4MB |
System Cache (๊ณตํต) | 16MB |
192KB L1 I-Cache (๋ช
๋ น์ด ์บ์)
โ ์ผ๋ฐ์ ์ธ ARM ๋น
์ฝ์ด๋ณด๋ค 3๋ฐฐ, x86 ์ํคํ
์ฒ๋ณด๋ค 6๋ฐฐ ํผ
โ ๊ทธ๋ฐ๋ฐ๋ ์ก์ธ์ค ๋ ์ดํด์๋ ๋จ 3์ฌ์ดํด!
128KB L1 D-Cache (๋ฐ์ดํฐ ์บ์)
โ ํฌ๊ธฐ ์์ฒด๋ ๋งค์ฐ ํผ
8MB L2 ์บ์
โ ์ฝ์ด ๋จ๋
or ๊ณต์ ์ฌ๋ถ๋ ๋ฏธ๊ณต๊ฐ์ง๋ง, L2๋ ์๋นํ ๋๋ํจ
128KB L1 I-Cache
โ ์ฌ์ง์ด ์ด ๋ฆฌํ ์ฝ์ด์กฐ์ฐจ๋ ์ผ๋ฐ ๋น
์ฝ์ด๋ณด๋ค ํฐ ๋ช
๋ น์ด ์บ์๋ฅผ ๊ฐ์ง
64KB L1 D-Cache
4MB L2 ์บ์
CPU๋ ๋ด๋ถ์์ ๋ชจ๋ ๋์์ ํด๋ญ ์ฌ์ดํด(clock cycle) ๋จ์๋ก ์ฒ๋ฆฌํฉ๋๋ค.
์ฝ๊ฒ ๋งํ๋ฉด, โํฑํก ํฑํกโ ํ๋ ์๊ณ์ฒ๋ผ ๋์ํ๋ CPU์ ๋ฐ์๋ผ๊ณ ์๊ฐํ๋ฉด ๋ผ์.
์๋ฅผ ๋ค์ด,
CPU ์
์ฅ์์๋ ๋งค ์ด๋ง๋ค ์์ญ์ต ๋ฒ(=GHz ๋จ์) ์ฐ์ฐ์ ํ๋๋ฐ,
์ด๋ ๊ฒ 1~2 ์ฌ์ดํด๋ง ์ฐจ์ด๋๋ ์ ์ฒด ์ฐ์ฐ ์๋์ ์๋นํ ์ํฅ์ ์ค์.
โ ์ฌ์ดํด์ด ์๋ค โ ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ฌ ์ ์๋ค โ ์ฑ๋ฅ์ ๋ ์ ๋ฆฌ
์บ์ ์ฌ์ดํด ์๋ฅผ ์ค์ด๋ ๊ฑด ๋จ์ํ โ๋น ๋ฅด๊ฒ ํด์ฃผ์ธ์~โ ํ๋ค๊ณ ๋๋ ๊ฒ ์๋๋๋ค. ๊ธฐ์ ์ ์ ์ฝ์ด ์์ด์:
์ฌ์ดํด ์ค์ด๋ ๊ฒ ํ๋ ์ด์ |
---|
์บ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก โ ๋ฐ์ดํฐ๋ฅผ ๋ ๋ง์ด ์ ์ฅํด์ผ ํด์ โ ํ์ ์๊ฐ ์ฆ๊ฐ |
์๊ณ ๋น ๋ฅด๊ฒ ๋ง๋ค๋ ค๋ฉด โ ํ๋ก ๋ณต์ก๋๊ฐ ์ฆ๊ฐ + ์ ๋ ฅ ์๋ชจ ์ฆ๊ฐ |
์ ๋ ฅ, ๋ฐ์ด, ์ค๊ณ ๋ณต์ก๋ ๋ฑ ๊ณ ๋ คํด์ผ ํ ๊ฒ์ด ๋ง์ |
๊ทธ๋์ ๋๋ถ๋ถ์
๋น๊ต ํญ๋ชฉ | ์ค๋ช |
---|---|
โ ๋ฎ์ ์ฌ์ดํด | ๋น ๋ฅธ ์๋ต ์๋, ์ฑ๋ฅ ์ ๋ฆฌ |
โ ๋์ ์ฌ์ดํด | ๋๋ฆผ, ํ์ดํ๋ผ์ธ stall ๊ฐ๋ฅ์ฑ |
โ ๏ธ Trade-off | ๋ฎ์ถ๋ ค๋ฉด ์บ์ ํฌ๊ธฐ, ์ ๋ ฅ, ์ค๊ณ ๋์ด๋ โ |
๐ ์์ฝ ํ ์ค:
์บ์ ์ ๊ทผ ์ฌ์ดํด ์๋ ์์์๋ก ๋น ๋ฅด๊ณ ์ข์ง๋ง, ์ค์ด๊ธฐ ์ด๋ ค์ด ๊ธฐ์ ์ ์ ์์์.
Apple Silicon์ด ๋๋จํ ์ด์ ๋, ์์ฒญ ํฐ ์บ์ ์ฉ๋์ ์์ฒญ ๋น ๋ฅธ ์๋(3์ฌ์ดํด)๋ก ์ด์ํ๋ค๋ ์ ์ด์์!
Apple Silicon์ ์บ์๋ โ๋ฌด์ง๋ง์งํ๊ฒ ํฌ๊ณ ๋น ๋ฅด๋คโ.
ํนํ Firestorm์ 192KB ๋ช ๋ น์ด ์บ์๋ ๋ ์ดํด์ 3์ฌ์ดํด์ด๋ผ๋ ๋๋ผ์ด ํจ์จ์ ๋ณด์ฌ์ฃผ๋ฉฐ,
ARM/AMD/Intel์ ์ ํต์ ์ค๊ณ๋ฅผ ๋ฐ์ด๋๋ ์์ค.
โ์ ํ์ ํ์ ์๋ค๊ณ ํ๋ ์ฌ๋๋ค์, ์ ํ์ ์ ๋ชจ๋ฅด๋ ์ฌ๋๋คโฆโ
์ด ๊ตฌ์กฐ ํ๋๋ง ๋ด๋ Apple์ด ์นฉ ์ค๊ณ์์ ์ผ๋ง๋ ๊ทน๋จ์ ์ธ ์ต์ ํ๋ฅผ ์ถ๊ตฌํ๋์ง ์ ์ ์์ต๋๋ค.
์ปค์คํ
ISA๋ ์๋์ง๋ง, ๋ง์ดํฌ๋ก์ํคํ
์ฒ ์ค๊ณ ์์ฒด๋ ์ต๊ณ ์์ค์ด๋ผ ํ๊ฐ๋ฐ๋ ์ด์ ์ด๊ธฐ๋ ํ์ฃ .