๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ(Memory Hierarchy)
๋ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ์ต์ฅ์น๋ฅผ ํ์์ ๋ฐ๋ผ์๋
,์ฉ๋
,์ฑ๋ฅ
์ ๋ฐ๋ผ ๊ณ์ธต์ ์ผ๋ก ๋๋์ด ๋ ๊ฒ์ ์๋ฏธํ๋ค.
ํ์ ๊ณ์ธต
์ผ๋ก ๊ฐ์๋ก ์ฉ๋์ด ๋์ด๋๊ณ , ๊ฐ๊ฒฉ์ด ์ ๋ ดํ์ง๋ง, ์๋๊ฐ ๋๋ฆฌ๋ค. ๋ฐ๋๋ก์์ ๊ณ์ธต
์ ๋น ๋ฅธ ๋์ ์ฉ๋์ด ์๊ณ ๊ฐ๊ฒฉ์ด ๋น์ธ๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค.
๐ ๋ ์ง์คํฐ
์ ์บ์
๋ CPU
๋ด๋ถ์ ์กด์ฌํ๋ค. CPU์ ์์ฃผ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๋ค.
๐ ๋ฉ๋ชจ๋ฆฌ = ์ฃผ๊ธฐ์ต์ฅ์น
๋ CPU
์ธ๋ถ์ ์กด์ฌํ๋ค. ๋ ์คํฐ์ ์บ์๋ณด๋ค ๋ ๋๋ฆฌ๊ฒ CPU์ ์ ๊ทผํ๋ค.
๐ ํ๋๋์คํฌ = ๋ณด์กฐ๊ธฐ์ต์ฅ์น
๋ CPU๊ฐ ์ง์ ์ ๊ทผํ ๋ฐฉ๋ฒ์กฐ์ฐจ ์๋ค. CPU๊ฐ ํ๋ ๋์คํฌ์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ํ๋๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ก ์ด๋์ํค๊ณ , ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ทผํด์ผ ํ๋ค. ์์ฃผ ๋๋ฆฐ ์ ๊ทผ
๋ง ๊ฐ๋ฅํ๋ค.
๋ณด์กฐ๊ธฐ์ต์ฅ์น๋
๋ฌผ๋ฆฌ์ ์ธ ๋์คํฌ
๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ ๊ธฐ์ต์ฅ์น์ด๋ค. ์ฃผ๊ธฐ์ต์ฅ์น๋ณด๋ค๋ ๋๋ฆฌ์ง๋ง ์ปดํจํฐ์ ์ ์์ ๋๋๋ผ๋ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง์ง ์๊ณ ,์๊ตฌ์
์ผ๋ก ๋ณด๊ดํ ์ ์๋ ์ฅ์น์ด๋ค. ๋ํ์ ์ธ ๋ณด์กฐ๊ธฐ์ต์ฅ์น๋HDD
์SSD
๊ฐ ์๋ค.
ํ๋๋์คํฌ
๋ผ ๋ถ๋ฆฌ์ฐ๋ ๋ณด์กฐ๊ธฐ์ต์ฅ์น๋ก, ๋ฌผ๋ฆฌ์ ์ธ ๋์คํฌ๋ฅผ ๊ณ ์์ผ๋ก ํ์ ์์ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ฅ์น์ด๋ค. ๋์คํฌ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ถฉ๊ฒฉ์ ์ฝํ๋ฉฐ, ์์์ด ๋ค์ ๋ฐ์ํ๋ค. ๊ฐ์ฅ ๋์ค์ ์ธ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์์ง๋ง, ํฌ๊ธฐ๊ฐ ์๊ณ ์ฒ๋ฆฌ์๋๊ฐ ํฅ์๋ SSD๊ฐ ๋์ค๋ฉด์ ์ต๊ทผ์ ๋ง์ด ์๋ช ๋๋ ์ํฉ์ด๋ค.
๋ฐ๋์ฒด ๊ธฐ๋ฐ
์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ด๋ค. SSD๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ณ , ์ ๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ HDD์ ๋นํด์ ์๋๊ฐ ์๋ฑํ ๋น ๋ฅด๊ณ , ์์๋ ๋ฐ์ํ์ง ์๋๋ค. ๋ํ, ์ ๋ ฅ์๋ชจ๊ฐ ์ ๊ณ , ๊ฒฝ๋ํ, ์ํํ ํ ์ ์๋ค. ๊ทธ๋ฌ๋, HDD์ ๋นํด์๋ ๊ฐ๊ฒฉ์ด ๋๋ค.
์ฃผ๊ธฐ์ต์ฅ์น
๋ ์ปดํจํฐ ๋ด๋ถ์์ ํ์ฌ CPU๊ฐ ์ฒ๋ฆฌํ๊ณ ์๋ ๋ด์ฉ์ ์ ์ฅํ๊ณ ์๋ ๊ธฐ์ต์ฅ์น์ด๋ค. ์ฆ, CPU์ ๋ช ๋ น์ ์ํด ๊ธฐ์ต๋ ์ฅ์์ ์ง์ ์ ๊ทผํ์ฌ ์ฝ๊ณ ์ธ ์ ์๋ค. ๋ํ์ ์ธ ์ฃผ๊ธฐ์ต์ฅ์น๋ROM
๊ณผRAM
์ผ๋ก ๋๋์ด์ง๋ค.
RAM
์์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅ
ํ๋ฉฐ, ์์ฉ ํ๋ก๊ทธ๋จ, ์ด์์ฒด์ ๋ฑ์ ๋ถ๋ฌ์ CPU๊ฐ ์์ ํ ์ ์๋๋ก ํ๋ ๊ธฐ์ต์ฅ์น์ด๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์๋์ ๊ธฐ๋กํ๋ ์๋๊ฐ ๊ฐ๊ณ ํ๋ก๊ทธ๋จ์ ๋ก๋ฉํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ์ ์ฅํ๊ฑฐ๋ ํ๋ ๊ณณ์ ์ฌ์ฉ๋๋ค.
์ ์์ด ๋์ด์ง๋ฉด ๋ฐ์ดํฐ๊ฐ ์ ๋ถ ์ง์์ง๊ธฐ ๋๋ฌธ์ํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ(Volatile Memory)
๋ผ๊ณ ํ๋ค. ๋ฐ๋ผ์, ์คํํ๊ณ ์๋ ํ์ผ์ ํญ์ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์ ์ฅ์ ํด์ค์ผ ํ๋ค.
ROM
์ ์ ์์ด ๋์ด์ ธ๋ ๊ธฐ๋ก๋ ๋ฐ์ดํฐ๋ค์ด ์๋ฉธ๋์ง ์๋๋นํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ(Non-Volatile Memory)
์ด๋ค.์ค์ง ๊ธฐ์ต๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅ
ํ ์ฅ์น์ด๋ค.
ROM์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ๋ฐ์๊ตฌ์
์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋์ ์์คํ ์ ๊ธฐ์ต์ํค๊ณ ๋ณํ์ํค๋ฉด ์๋๋ BIOS์ ๊ฐ์ ์ฃผ์ ๋ฐ์ดํฐ๋ ์ด ์ฅ์น์ ์ ์ฅ๋๋ค.
์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์์ญ์ผ๋ก
ํ ์คํธ ์์ญ
์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. CPU๋ ์ฝ๋ ์์ญ์ ์ ์ฅ๋ ๋ช ๋ น์ด๋ฅผ ํ๋์ฉ ๊ฐ์ ธ๊ฐ์ ์ฒ๋ฆฌํ๋ค.
ํ๋ก๊ทธ๋จ์ ์์๊ณผ ๋์์ ํ ๋น๋๋ฉฐ, ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ์๋ฉธํ๋ค.
์ ์ญ๋ณ์(Global Variable)
,์ ์ ๋ณ์(Static Variable)
,๋ฐฐ์ด(Array)
,๊ตฌ์กฐ์ฒด(Structure)
๋ฑ์ด ์ ์ฅ๋๋ ์์ญ์ด๋ค.
๐ ์ด๊ธฐํ๋ ๋ฐ์ดํฐ๋ Data์์ญ์ ์ ์ฅ, ๊ทธ์ธ์๋ BBS(Blocked Stated Symbol)
์ ์ ์ฅ๋๋ค.
๐ BBS
์์ญ์ Data์์ญ๊ณผ ๋น์ทํ์ง๋ง ์ด๊ธฐํ๋์ง ์์ ์ ์ญ๋ณ์, ์ฆ ์ ์ ๋ณ์
๋ง ์ ์ฅํ๋ค.
์ฌ์ฉ์๊ฐ
์ง์ ๊ด๋ฆฌ
ํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ฐ์ ์ํด์๋ง ์ฐธ์กฐ๋๊ณ ์ฌ์ฉ๋๋ฉฐ,์ฐธ๊ณ ํ์ (Reference Type)
์ ๋ํ ์ ์ฅ ๊ณต๊ฐ์ด๋ค.
๐ ํ์์ญ์ ์ฌ์ฉ์์ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋์ ์ผ๋ก ํ ๋น๋๊ณ ํด์ ๋๋ค.
๐ ๋ฎ์ ์ฃผ์์์ ๋์ ์ฃผ์์ ๋ฐฉํฅ์ผ๋ก ํ ๋น๋๋ค.
ํจ์์ ํธ์ถ๊ณผ ๊ด๊ณ๋๋
์ง์ญ ๋ณ์
์๋งค๊ฐ๋ณ์
,๋ฉ์๋
,return๊ฐ
๋ฑ์ด ์ ์ฅ๋๋ ์์ญ์ด๋ค. ์คํ ์์ญ์ ํ๋ก๊ทธ๋จ์ด ์๋์ผ๋ก ์ฌ์ฉํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด๊ธฐ ๋๋ฌธ์ ํจ์์ ํธ์ถ๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ, ํจ์์ ํธ์ถ์ด ์๋ฃ๋๋ฉด ์๋ฉธํ๋ค. ์ด๋ ๊ฒ ์คํ ์์ญ์ ์ ์ฅ๋๋ ํจ์์ ํธ์ถ ์ ๋ณด๋ฅผ์คํ ํ๋ ์(Stack Frame)
์ด๋ผ๊ณ ํ๋ค.
๐ ์คํ ์ฌ์ด์ฆ
๋ ๊ฐ ํ๋ก์ธ์ค๋ง๋ค ํ ๋นํ๋ค.
๐ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ๋ ์ฌ์ด์ฆ๊ฐ ๊ณ ์ ๋์ด ์์ด ๋ฐํ์ ์ ๋ณ๊ฒฝ์ ๋ถ๊ฐ๋ฅํ๋ค.
๐ ํ๊ณผ ์คํ์ ์ฌ์ค ๊ฐ์ ๊ณต๊ฐ์ ๊ณต์ ํ์ง๋ง ์์์ง์ ์ด ๋ค๋ฅด๋ค.
๐ ์คํ ์์ญ์ ํธ์(Push)
๋์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ํ(Pop)
๋์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ธ์ถํ๋ค.
๐ Heap
: ํ์ ๋ฉ๋ชจ๋ฆฌ ์์ชฝ ์ฃผ์๋ถํฐ ํ ๋น(๋ฎ์ ์ฃผ์โ๋์์ฃผ์)ํ๋ค.
๐ Stack
: ์คํ์ ๋ฉ๋ชจ๋ฆฌ ์๋์ชฝ๋ถํฐ ํ ๋น(๋์ ์ฃผ์โ๋ฎ์ ์ฃผ์)ํ๋ค.
๐ Stack/Heap Overflow
: ์ด๋ ๊ฒ ์๋ก ๋ค๋ฅธ ์์์ ์์ ํ ๋น๋๋ค๊ฐ ์๋ก ๊ฒน์น๋ ๊ฒ์ Stack/Heap Overflow๋ผ๊ณ ํ๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ
๋ CPU์ ์ฒ๋ฆฌ์๋์ ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ๊ทผ ์๋ ์ฐจ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ณ ์Buffer Memory
์ด๋ค.
๐ CPU๊ฐ ์ฃผ๊ธฐ์ต์ฅ์น์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์ฌ๋, ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ ๋ค ๋ค์ ์ด์ฉํ ๋ ๋ฉ๋ชจ๋ฆฌ์์ ๋จผ์ ๊ฐ์ ธ์ค๋ฉด์ ์๋๋ฅผ ํฅ์์ํจ๋ค.
๐ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ ๊ฒ์ธต ๊ตฌ์กฐ์์ ๊ฐ์ฅ ๋น ๋ฅธ ์์์ด๋ฉฐ, ์ฒ๋ฆฌ์๋๊ฐ ๊ฑฐ์ CPU์ ์๋์ ๋น์ทํ๋ค.
๐ ์บ์๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฃผ ๊ธฐ์ต์ฅ์น๋ฅผ ์ ๊ทผํ๋ ํ์๊ฐ ์ค์ด๋ค์ด ์ปดํจํฐ์ ์ฒ๋ฆฌ์๋๊ฐ ํฅ์๋๋ค.
์บ์๊ฐ ํจ์จ์ ์ผ๋ก ๋์ํ๋ ค๋ฉด, ์บ์์ ์ ์ฅํ ๋ฐ์ดํฐ๊ฐ ์ง์ญ์ฑ์ ๊ฐ์ ธ์ผ ํ๋ค. ์ง์ญ์ฑ์ด๋ ๋ฐ์ดํฐ ์ ๊ทผ์ด ์๊ฐ์ , ํน์ ๊ณต๊ฐ์ ์ผ๋ก ๊ฐ๊น๊ฒ ์ผ์ด๋๋ ๊ฒ์ ์๋ฏธํ๋ค.
๐ ์๊ฐ ์ง์ญ์ฑ
: ํน์ ๋ฐ์ดํฐ๊ฐ ํ๋ฒ ์ ๊ทผ๋์์ ๊ฒฝ์ฐ, ๊ฐ๊น์ด ๋ฏธ๋์ ๋ ํ๋ฒ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ์๋ฅผ ๋ค์ด, For
, while
๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ ์ฐธ์กฐ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฏ๋ก ๋ค์ ์ ์ฅํ๋ค.
๐ ๊ณต๊ฐ ์ง์ญ์ฑ
: ์ก์ธ์ค๋ ๊ธฐ์ต์ฅ์์ ์ธ์ ํ ๊ธฐ์ต์ฅ์๊ฐ ์ก์ธ์ค๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด
์์ ๊ฐ์ ์ฐ์ ์ ๊ทผ์, ์ฐธ์กฐ๋ ๋ฐ์ดํฐ ๊ทผ์ฒ์ ์๋ ๋ฐ์ดํฐ๊ฐ ์ฐธ์กฐ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฏ๋ก ์ ์ฅํ๋ค.
CPU๊ฐ ์์ฒญํ ๋ฐ์ดํฐ๊ฐ ์บ์์ ์์ผ๋ฉด
Cache Hit
๋ผ๊ณ ํ๋ฉฐ, ๋ฐ๋๋ก ์์ด์ ์ฃผ๊ธฐ์ต์ฅ์น์์ ๊ฐ์ ธ์ค๊ฒ๋๋ฉดCache Miss
๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์บ์ฌ ๋ฏธ์ค์๋ 3๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค.
๐Cold Miss
: ํด๋น ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ฒ์ ๋ถ๋ฌ์ ๋๋ miss
๐Conflict Miss
: A์ B๋ฅผ ์ ์ฅํด์ผ ํ๋๋ฐ, A์ B๊ฐ ๊ฐ์ ์ฃผ์์ ํ ๋น๋์ด ์๋ ๊ฒฝ์ฐ ๋๋ miss
๐Capacity Miss
: ๊ณต๊ฐ์ด ๋ถ์กฑํด์ ๋๋ miss
CPU๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋๋ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ
์ผ์์
์ผ๋ก ์ ์ฅํ๋๋ค๋ชฉ์ ๊ณต๊ฐ
์ด๋ค. ํ๋ก์ธ์ค ๋ด๋ถ์ ์๋ ์์ ๊ณต๊ฐ์ผ๋ก ์ฐ์ฐ ์ ์ด, ๋๋ฒ๊น ๋ฑ๋ฑ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
๐ ๋ ์ง์คํฐ๋ ๊ณต๊ฐ์ ์๊ณ ๊ฐ๊ฒฉ์ ๋น์ธ์ง๋ง, CPU์ ์ง์ ์ฐ๊ฒฐ๋์ด ์์ด์ ์ฐ์ฐ ์๋๊ฐ RAM, HDD, SDD๋ณด๋ค ๋น ๋ฅด๋ค.
๐ CPU๋ ์์ฒด์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ผ๋ฏ๋ก ๋ ์ง์คํฐ๋ฅผ ์ด์ฉํ์ฌ ์ฐ์ฐ์ฒ๋ฆฌ ๋ฐ ๋ฒ์ง ์ง์ ์ ๋์์ค๋ค.
๐ ์บ์
: CPU์ ๋ณ๋๋ก ์๋ ๊ณต๊ฐ์ด๋ฉฐ, ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ CPU๊ฐ์ ์๋ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํ ๊ฒ
๐ ๋ ์ง์คํฐ
: CPU์์์ ์ฐ์ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ
๐ ์ด๋ค ๋ช
๋ น์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด๋๋ ์ ์ฅ ๊ณต๊ฐ
๊น๋ํ๊ฒ ์ ์ ๋ฆฌํด๋์ผ์ จ๋ค์
์ฌ์ํ ์คํ๊ฐ ์์ด ์๋ ค๋๋ฆฝ๋๋ค
"๋ฐ์ดํฐ(Date) ์์ญ" -> Data