์ปดํจํฐ ๊ตฌ์กฐ 5_Cache Memory
๋ฐ์ดํฐ item ์ด ์บ์์ ์๋์ง ํ์ธ์ ํด์ผํ๋ค. ๋ง์ฝ ์์ผ๋ฉด ์ด๋ป๊ฒ ์ฐพ์ ๊ฒ์ธ์ง...?!?!?!?!?!
์ฒซ ์์
block size๋ก ์กด์ฌํ๋ค๊ณ ํ๋ค. block์ ์ฌ๋ฌ๊ฐ์ word์ด์ง๋ง ํ๋์ word๋ง ์๋ค๊ณ ๊ฐ์ ํ์. block (word)๊ฐ ์บ์์ ๋ค์ด๊ฐ๋ฉด ์ด๋์ ์ ์ฅ๋ ๊ฒ์ธ๊ฐ??
๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฌ ๊ฐ block์ด ์๋ค(1block 1word).
์บ์๋ ์ค์๊ด์ ์๋ฆฌ. ํ์์ ๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ํ์. ํ๋ฒ ๋๋ก ์ค์์ ํน์ ์๋ฆฌ์ ์์์ผ ํ๋ค๊ณ ํ์. ํ์์ด ๋ ๋ง์๋ฐ ๊ฐ์ ์๋ฆฌ์ ์ด๋ป๊ฒ ์๋๊ฐ? (์ด๋ฐ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.) ์ฌ๋ฌ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ญ์ด ๊ฐ์ ๊ณต๊ฐ์ share ํด์ผ ํ๋ค. ์์น๋ ๊ทธ๋ผ ์ด๋ป๊ฒ ์ ํ๋๊ฐ?
์บ์์ ์ฃผ์ = ๋ธ๋ก ์ฃผ์๋ฅผ ์บ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์๋ก ๋๋ ๋๋จธ์ง ๋ก ๊ณ์ฐํ๋ค.
์ด๋ค ํจํด์ ์ ์ ์๋๊ฐ?
๋ง์ฝ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ด 8์ด๋ผ๋ฉด ๋์ด 001๋ก ๋๋๋ ๋ธ๋ญ ๋ค์ ๊ฐ์ ๊ณต๊ฐ์ ๋ฃ์ด์ง๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค. 001 ๋ 10001 00001 ๋ฑ์ด ๋ค์ด ๊ฐ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ค ๊ฒ์ด ๋ฉ๋ชจ๋ฆฌ๋ถํฐ ์จ ๋ฐ์ดํฐ ์ธ์ง๋ tag๋ผ๊ณ ๋ถ๋ฆฌ๋ 001 ์ ์ ์ธํ ์ผ์ชฝ์ ์กด์ฌํ๋ ๋นํธ๋ค์ ํตํด์ ํ์
์ด ๊ฐ๋ฅํ๋ค. valid bit ์ด๋ ์กด์ฌํ๋ bit ๋ค์ด ์๋ฏธ์๋ ๊ฐ์ธ์ง๋ฅผ ํ์
ํ๋ ๊ฒ์ด๋ค. ์ด๋ ํ ๋ฐ์ดํฐ๊ฐ ์๋๋ฐ ์ค์ ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ํ์ํด์ ๊ฐ์ ธ์ ์ ์ฅํ ๋ฐ์ดํฐ์ธ์ง ํ๋จํด์ฃผ๋ bit๋ฅผ ์๋ฏธํ๋ค.
์ค์ ๋ก cache์๋ index block์ด ์กด์ฌํ์ง ์๋๋ค. ์ดํดํ๊ธฐ ์ฝ๊ธฐ ์ํด ํฌํจ ํ ๊ฒ์ด๊ณ ์ด๋ค ๊ฐ๋ค๋ก ์ฑ์์ ธ ์์ง๋ง ๊ทธ๊ฒ์ด validํ bit๋ค์ด ์๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค. ๋จผ์ valid ํ์ง ํ์ธ์ ํ๊ณ N ์ด๋ผ๋ฉด Y๋ก ๋ฐ๊พธ๊ณ Tag์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์ ์ฅํ๋ค. ๋ง์ฝ ๋ฐ์ดํฐ์ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ Y๊ฐ ํ์๋์ด์์ง๋ง Tag๋ฅผ ํ์ธํด์ ์๋ก ๋ค๋ฅด๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๊ฐ์ ธ์จ๋ค. Tag๊ฐ ์ผ์นํด์ผ ๋ด๊ฐ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ ์๊ธฐ์ด๋ค.
Direct Mapped cache example 1024๊ฐ์ word๋ฅผ ๊ฐ์ง๊ณ ์๋ค(Cache)
MIPS๋ Byte addressable์ด๋ฏ๋ก ๋ฐ์ดํธ ๋ง๋ค ์ฃผ์๋ฅผ ๊ฐ๊ณ ์๊ณ Cache๋ 1word 4byte ๋จ์๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ LSB 2bit๋ ํ์๊ฐ ์์ผ๋ฏ๋ก shift left 2๋ฅผ ํ๋ค. ๋งจ ์ค๋ฅธ์ชฝ 2bit๋ฅผ ๊ณ ๋ คํ์ง ์๋๋ค. 10bit์ index(2์ 10์น == 1024)์ด๊ณ ๋บ ๋๋จธ์ง 20bit๊ฐ tag ์ฌ์ด์ฆ๊ฐ ๋๋ค. valid bit๋ 1bit์ด๋ค.
Cache๊ฐ 1024 word์ด๋ฉด
1024*(32+20+1)์ด Total size๊ฐ ๋๋ค.