์บ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ณต์ฌํด๋์ ์์์ ์ฅ์์ด์, ๋น ๋ฅธ ์ฅ์น์ ๋๋ฆฐ ์ฅ์น์์ ์๋ ์ฐจ์ด์ ๋ฐ๋ฅธ ๋ณ๋ชฉ ํ์์ ์ค์ด๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋งํ๋ค.
์บ์๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ๋ฌด์ธ๊ฐ๋ฅผ ๋ค์ ๊ณ์ฐํ๋ ์๊ฐ์ ์ ์ฝํ ์ ์๋ค.
์ค์ ๋ก, ๋ฉ๋ชจ๋ฆฌ์ CPU ์ฌ์ด์ ์๋ ์ฐจ์ด๊ฐ ๋๋ฌด ํฌ๊ธฐ ๋๋ฌธ์ ์ค๊ฐ์ ๋ ์ง์คํฐ ๊ณ์ธต์ ๋๊ณ ์๋ ์ฐจ์ด๋ฅผ ํด๊ฒฐํ๋ค.
์ด์ ๊ฐ์ด ์๋ ์ฐจ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ์ธต๊ณผ ๊ณ์ธต ์ฌ์ด์ ์๋ ๊ณ์ธต์ '์บ์ฑ ๊ณ์ธต'์ด๋ผ ํ๋ค.
์๋ฅผ ๋ค์ด, ์ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ์ ๊ฐ์ด ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์บ์ ์ฌ์ด์ ์ฃผ๊ธฐ์ต์ฅ์น๋ฅผ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์บ์ฑ ๊ณ์ธต์ด๋ผ ํ ์ ์๋ค.
์ง์ญ์ฑ์ ์๋ฆฌ
์บ์๋ฅผ ์ง์ ์ค์ ํ ๋๋ ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค์ ํด์ผ ํ๋ค.
์ง์ญ์ฑ์ ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ๋ํ ๊ทผ๊ฑฐ๊ฐ ๋๋ค.
์๊ฐ ์ง์ญ์ฑ(temporal locality)๊ณผ ๊ณต๊ฐ ์ง์ญ์ฑ(spatial locality)์ด ์๋ค.
์๊ฐ ์ง์ญ์ฑ(temporal locality)
์ต๊ทผ ์ฌ์ฉํ ๋ฐ์ดํฐ์ ๋ค์ ์ ๊ทผํ๋ ค๋ ํน์ฑ์ ๋งํ๋ค.
๋ฐ๋ณต๋ฌธ์ ์๋ก ๋ค ์ ์๋ค. ์๋ ์์์ ๊ฐ์ด ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ด๋ฃจ์ด์ง ์ฝ๋ ์์์ ๋ณ์ i์ ๊ณ์ํด์ ์ ๊ทผ์ด ์ด๋ฃจ์ด์ง๋ค.
์ด๋ ๊ฒ ๋ฐฉ๊ธ ์ ์ ์ ๊ทผํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ค์ ์ฐธ๊ณ ํ๊ฒ ๋ ํ๋ฅ ์ด ๋์์ง๋ ๊ฒ์ด ์๊ฐ์ ์ง์ญ์ฑ์ด๋ค.
let arr=Array.from({length:10}, ()=>0);
for (let i=0; i<10; i+=1){
arr[i]=i;
}
๊ณต๊ฐ ์ง์ญ์ฑ(spatial locality)
๊ณต๊ฐ ์ง์ญ์ฑ์ ์ต๊ทผ ์ ๊ทผํ ๋ฐ์ดํฐ๋ฅผ ์ด๋ฃจ๊ณ ์๋ ๊ณต๊ฐ์ด๋ ๊ทธ ๊ฐ๊น์ด ๊ณต๊ฐ์ ์ ๊ทผํ๋ ํน์ฑ์ ๋งํ๋ค.
์์ for ๋ฐ๋ณต๋ฌธ ์ฝ๋๋ฅผ ์์๋ก ๋ค๋ฉด, ๋ฐฐ์ด arr์ ๊ฐ ์์๋ค์ i๊ฐ ํ ๋น๋๋ฉด์ ํด๋น ๋ฐฐ์ด์ ์ฐ์์ ์ผ๋ก ์ ๊ทผํ๋ ๊ฒ์ ์๋ก ๋ค ์ ์๋ค.
์ด๋ฌํ ์๊ฐ ์ง์ญ์ฑ๊ณผ ๊ณต๊ฐ ์ง์ญ์ฑ์ ํ๋ก์ธ์ค ์คํ ์ค ์ ๊ทผํ ๋ฐ์ดํฐ์ ์ ๊ทผ ์์ ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํ์ํ ์๋ ๊ทธ๋ฆผ์ด ์ ์ค๋ช ํด์ค๋ค.
์บ์ํํธ์ ์บ์๋ฏธ์ค
์บ์์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๊ฒ์ ์บ์ํํธ,
ํด๋น ๋ฐ์ดํฐ๊ฐ ์บ์์ ์์ด์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ค๋ ๊ฒ์ ์บ์๋ฏธ์ค๋ผ ํ๋ค.
์ ๊ทธ๋ฆผ์ฒ๋ผ ์บ์ํํธ๋ฅผ ํ๊ฒ ๋๋ฉด ์ ์ด ์ฅ์น๋ฅผ ๊ฑฐ์ณ ์บ์์ ์ด๋ฏธ ์กด์ฌํ๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ๊ฐ์ ธ์ค๊ฒ ๋๋ค.
์บ์ํํธ์ ๊ฒฝ์ฐ ์์น๋ ๊ฐ๊น๊ณ CPU ๋ด๋ถ ๋ฒ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๋ค.
๋ฐ๋ฉด์, ์บ์๋ฏธ์ค๋ฅผ ํ๊ฒ ๋๋ฉด ์๋ณธ ๋ฐ์ดํฐ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์ค๊ฒ ๋๋๋ฐ, ์ด๋ ์์คํ ๋ฒ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ๋๋ฆฌ๋ค.
๋, ์บ์๋ฏธ์ค๊ฐ ๋ฐ์ํด์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์ค๋ฉด ์บ์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๊ฑฐ๋ ๊ฐฑ์ ํ๋ค.
์บ์ ๋งคํ
์บ์ ๋งคํ์ ์บ์๊ฐ ํํธ๋๊ธฐ ์ํด ๋งคํํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค. ์ด ์ค๋ช ์์ CPU์ ๋ ์ง์คํฐ์ ์ฃผ๋ฉ๋ชจ๋ฆฌ RAM๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ช ํ๋ค.
๋ ์ง์คํฐ๋ RAM์ ๋นํด ๊ต์ฅํ ์๊ธฐ ๋๋ฌธ์, ์์ ๋ ์ง์คํฐ๊ฐ ์บ์ฑ ๊ณ์ธต์ผ๋ก์จ ์ญํ ์ ์ ํด์ฃผ๋ ค๋ฉด ์ด ๋งคํ์ ์ด๋ป๊ฒ ํ๋๋๊ฐ ์ค์ํ๋ค.
์ด๋ฆ | ์ค๋ช |
์ง์ ๋งคํ (directed mapping) |
๋ฉ๋ชจ๋ฆฌ๊ฐ 1~100์ด ์๊ณ , ์บ์๊ฐ 1~10์ด ์๋ค๋ฉด, ์บ์์ ์์น 1์ ๋ฉ๋ชจ๋ฆฌ 1~10์ ๋งคํํ๊ณ , ์์น 2์ ๋ฉ๋ชจ๋ฆฌ 11~20์ ๋งคํํ๊ณ , ์์น 3์ ๋ฉ๋ชจ๋ฆฌ 21~30์ ๋งคํํ๋ ๊ฒ์ ๋งํจ. ๊ตฌํ์ด ์ฝ๊ณ ์ฒ๋ฆฌ๊ฐ ๋น ๋ฅด์ง๋ง ์ ์ค๋ฅ (Hit rate)์ด ๋ฎ์. |
์ฐ๊ด ๋งคํ (associative mapping) |
์์๋ฅผ ์ผ์น์ํค์ง ์๊ณ ๊ด๋ จ ์๋ ์บ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋งคํํจ. ์ ์ค๋ฅ ์ด ๋์ง๋ง ๋ชจ๋ ๋ธ๋ก์ ํ์ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋๋ฆผ. |
์งํฉ ์ฐ๊ด ๋งคํ (set associative mapping) |
์ง์ ๋งคํ๊ณผ ์ฐ๊ด ๋งคํ์ ํฉ์ณ ๋์ ๊ฒ. ์์๋ ์ผ์น์ํค์ง๋ง ์งํฉ์ ๋ฌ์ ์ ์ฅํ๋ฉฐ ๋ธ๋กํ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ฒ์์ ๋ ํจ์จ์ ์. ์๋ฅผ ๋ค์ด, ๋ฉ๋ชจ๋ฆฌ๊ฐ 1~100์ด ์๊ณ ์บ์๊ฐ 1~10์ด ์๋ค๋ฉด ์บ์ 1~5์ ๋ฉ๋ชจ๋ฆฌ 1~50์ ๋ฐ์ดํฐ๋ฅผ ๋ฌด์์๋ก ์ ์ฅ์ํค๋ ๊ฒ์ ๋งํจ. |
์บ์ ๋งคํ ๋ฐฉ์์ ๊ฐ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ํ ์ผํ ์ค๋ช ์ด ํ์ํด์, ์ถํ ์บ์ ๋งคํ ๊ฒ์๊ธ์ ์ถ๊ฐ๋ก ์์ฑํ ์์ ์ด๋ค!
'CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ(๋ฉ๋ชจ๋ฆฌ ํ ๋น) (0) | 2023.08.25 |
---|---|
[์ด์์ฒด์ ] ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ(๊ฐ์ ๋ฉ๋ชจ๋ฆฌ) (0) | 2023.08.24 |
[์ด์์ฒด์ ] ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต(Memory Hierarchy) (0) | 2023.07.10 |
[์ด์์ฒด์ ] ์ปดํจํฐ์ ์์ (0) | 2023.07.07 |
[์ด์์ฒด์ ] ์ด์์ฒด์ (Operating System)๋? (0) | 2023.07.07 |