๐ ์ปดํจํฐ ๊ตฌ์กฐ ๊ธฐ๋ง๊ณ ์ฌ ์ ๋ฆฌ
๊ธฐ๋ง
3
๋๋์ : dividend๋ฅผ divisor๋ก ๋๋ ์ quotient์ remainder๋ฅผ ์ป์ด๋ธ๋ค. ์ด๋ ๊ณฑ์ ๊ณผ ๋น์ทํ๊ฒ shift์ sub๋ฅผ ํตํด์ ํ๋๋ฐ, divisor๋ ์ผ์ชฝ์ ๋ฑ๋ถ์ฌ๋๊ณ ํ์๋ฅผ 0์ผ๋ก ์ฑ์ฐ๊ณ ์์ํ๋ค. ๋งค ๋ฐ๋ณต๋ง๋ค ๋ชซ์ด ๋ฐ์ํ๋ฉด ์๋ฆฌ๋ฅผ ์ฎ๊ฒจ์ค์ผํ๋ฏ๋ก quotient๋ left shift, divisor๋ ๋ชจ๋ ์๋ฆฌ์๋ํด ์ฐ์ฐ์ ์์ํด์ผํ๊ณ ์ผ์ชฝ์ ๋ถ์ด์ ์์ํ๊ธฐ ๋๋ฌธ์ right shift ํด์ฃผ๋ฉด์ ๋ฐ๋ณตํ๋ค โ ์ฌ๋์ด ํ๋ ๊ณ์ฐ์ด ์ด๋ ๋ค๋๊ฒ ์๋๋ผ ์ค์ ๊ธฐ๊ณ์์ ํ๋๊ฒ ์ด๋ ๊ฒ ์๋ํ๋ค๋ ์๋ฏธ์..!
division flow char dividend(remainder) ์์ ์ค๋ฅธ์ชฝ์ 0์ผ๋ก ์ฑ์ด divisor๊ฐ์ผ๋ก ๋นผ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ remainder์ ์ ์ฅํ๋ค. ๋ชซ๊ฐ์ ์ผ์ชฝ shift๋ฅผ 1ํ ์งํํด ์๋ก์ด ๊ฐ(๋ชซ)์ด ์ฐ์ฌ์ง ๊ณต๊ฐ์ ๋ง๋๋๋ฐ, ๋ง์ฝ remainder๊ฐ 0๋ณด๋ค ์์์ก๋ค๋ฉด remainder๋ฅผ ๋นผ๊ธฐ ์ ์ผ๋ก ์์๋ณต๊ตฌ๋ฅผ ํ๊ณ quotient์ ์ ๋นํธ๋ก 0์์ค๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ๋บ ๊ฐ์ ๊ณ ๋ฅ remainder๋ก ๋จ๊ฒจ๋๊ณ quotient๋ 1์ ์ค๋ค. divisor๋ฅผ right shift ํด์ค๋ค. ์ด๊ฑธ 65๋ฒ ๋ฐ๋ณตํด์ ๋ชจ๋ ๋นํธ์ ๋ํด ์ ์ฉํ๋ค.
์ด๊ธฐ ๋๋์ ํ๋ก : divisor๋ ์ผ์ชฝ์ ๋ถ์ด์๋์ฑ๋ก ์์(์ค๋ฅธ์ชฝ์ 0์ผ๋ก ์ฑ์์ ธ์๋ค), ๋งค ๋ฐ๋ณต๋ง๋ค right shift. quotient๋ ๋งค ๋ฐ๋ณต๋ง๋ค left shift. remainder์์ divisor๋ฅผ ๋นผ๊ณ ํ๋ณํด์ ๋ชซ์ ๋ฃ์ด์ฃผ๊ณ ๋ฐ๋ณต. ๋ฐ๋ณต๋ shift.
n์๋ฆฌ์ฐ์ฐ์ด๋ฉด ์ฐ์ฐ์ n+1๋ฒ ํ๋ค
0111 / 0010
0000 / 0010 0000 / 1110 0111 โ ์ฐ์ฐ
0000 / 0010 0000 / 0000 0111 โ quotient ์์
0000 / 0001 0000 / 0000 0111 โ divisor ์์
โโโโโโโโโโโโโ-
0000 / 0001 0000 / 1111 0111
0000 / 0001 0000 / 0000 0111
0000 / 0000 1000 / 0000 0111
โโโโโโโโโโโโโ-
0000 / 0000 1000 / 1111 1111
0000 / 0000 1000 / 0000 0111
0000 / 0000 0100 / 0000 0111
โโโโโโโโโโโโโ-
0000 / 0000 0100 / 0000 0011
0001 / 0000 0100 / 0000 0011
0001 / 0000 0010 / 0000 0011
โโโโโโโโโโโโโ-
0001 / 0000 0010 / 0000 0011
0011 / 0000 0010 / 0000 0001
0011 / 0000 0001 / 0000 0001
๊ฐ์ ๋ ๋ฒ์ ์ ๋๋์ ํ๋ก : reaminder๋ ์ฐ์ฐํ ์๋ก ์ค์ด๋ค๊ฒ์ด๊ณ ๋ชซ์ ์ฐ์ฐํ ์๋ก ์ฆ๊ฐํ๋ค. ๋ฐ๋ผ์ remainder ๋ ์ง์คํฐ๋ฅผ ๊ณต์ ํจ์ผ๋ก์จ multiplierํ๋ก์ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด๋ผ ์ ์๋ค. ยซ์ด์ผํ๋์จ๋ฐ๋ ์;
๋น ๋ฅธ๋ฒ์ ผ : ๊ณฑ์ ์ฒ๋ผ ๋ ๋น ๋ฅด๊ฒ ๋ง๋ค ์ ์๋ค : ๊ฐ step๊ฒฐ๊ณผ์ ๋ถํธ๋ฅผ ์์์ผ ๋บ์ง ๋ง์ง๋ฅผ ์ฒ๋ฆฌํ ์ ์์. adder์ฒ๋ผ ๊ทธ๋ฐ๊ฑฐ ๊ณ ๋ คํ ํ์์์ด ๋จ์ํ๊ฒ ๋ค ๋ํด๋ฒ๋ฆฌ๋ฉด ๋๋ ๋ฌธ์ ๊ฐ ์๋๊ธฐ๋๋ฌธ.
๋ถํธ ๋๋์ : ์ฐ์ ๋๋์ ์์๋ ๋๋จธ์ง๋ฅผ ๋ฌด์กฐ๊ฑด ์์๋ก ๋ง๋ค์ด์ค์ผํ๋ค. ๊ทผ๋ฐ ๊ทธ๊ฑธ ๊ทธ๋๋ก ์ปดํจํฐ ํ๋ก๋ก ์ฎ๊ธฐ๋ฉด HW๊ฐ ๋๋ฌด ๋ณต์กํด์ง๋ค. ๊ทธ๋๊น ๊ทธ๋ฅ ์์ ๋๋จธ์ง๋ฅผ ํ์ฉํด์ ์์ ๋๋์ ์ด๋ ๋๊ฐ์ด ์ฒ๋ฆฌํด์ค๋ค.
์ฐ์ฐ์๋ฅผ ๋ชจ๋ ์์๋ก ๋ณํํ๊ณ ๊ฐ ๋ถํธ๋ฅผ ๊ธฐ์ตํด๋๊ณ ๊ทธ๋ฅ ๋๋์ ์ฒ๋ผ ์ฐ์ฐํด์ค๋ค. ๋ชซ์ ๋ถํธ๋ ๋ operand์ ๋ถํธ๊ฐ ๊ฐ์๋ค๋ฉด + ์๋๋ผ๋ฉด -๊ฐ ๋๊ณ ๋๋จธ์ง์ ๋ถํธ๋ dividend์ ๋ถํธ๋ฅผ ๋ฐ๋ผ๊ฐ๊ฒ ๋๋ค. ex) 7 / -2 = ๋ชซ -3, ๋๋จธ์ง 1 -7 / -2 = ๋ชซ 3, ๋๋จธ์ง -1 7 / 2 = ๋ชซ 3, ๋๋จธ์ง 1 -7 / 2 = ๋ชซ -3, ๋๋จธ์ง -1
RISC-V์์์ ๋๋๊ธฐ instruction : ์ผ๋ฐ R-format์ด๋ค. ๊ณฑ์
๋ ๊ทธ๋ ๊ณ R-format์ผ๋ก ๋์ผํ๊ฒ ์ฒ๋ฆฌํ๋๋ฐ์ ์ค๋ ์ด์ ์ด ๋ง๋ค.
div๋ ๋ชซ์, rem์ ๋๋จธ์ง๋ฅผ ๋ฐํํด์ค๋ค. divu์ remu๋ ๊ฐ๊ฐ div, rem์ unsigned๊ฐ์ผ๋ก ๋ฐํํด์ค๋ค.
๋น์ ์์ ์ธ ์ด๋ฒคํธ๋ ๋ฌด์ํด๋ฒ๋ฆฐ๋ค. overflow๊ฐ ๋ฐ์ํ๊ฑฐ๋ 0์ผ๋ก ๋๋๋ ๋ฑ์ ๋ค๋ฃจ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ HW์ ์ผ๋ก ํด๊ฒฐํ๊ธฐ๋ ์ด๋ ต๋ค. ๋ฐ๋ผ์ SW์์ ์ฒ๋ฆฌ๋ฅผ ํด์ค๋ค.
Floating point
์ํ์์ ๋ค ํ์์ ๋ค์์ง?
๋งค์ฐ ํฌ๊ฑฐ๋ ์์์๋ ์ ์ ํํ์ ํ ์ ์์ผ๋ ๋ค๋ฅธ ํํ์ ์ฌ์ฉํด์ผํ๋ค. ๊ทธ๋์ ๋์จ๊ฒ ํ๋กํ ํฌ์ธํธ
1.xxxx * 2^y์ ํ์์ผ๋ก ํ์ํ์ฌ์ ๋งค์ฐ์์์์ ๋งค์ฐ ํฐ์๋ฅผ ํํํ๋ค.
(-1)^s * ( 1 + fraction) X 2(exponent - bias)
float์์๋ Exponent๊ฐ 8๋นํธ Fraction์ด 23๋นํธ (1 + 8 + 23 = 32) bias = 127
double์์๋ Exponent๊ฐ 11๋นํธ Fraction์ด 52๋นํธ (1 + 11 + 52 = 64) bias = 1023
s : ์์์ด๋ฉด 1, ์ง์์ด๋ฉด 0
fraction : 1.xx๋ก ์ผ๋จ 1์ ๋ถ์ด์๋ค๊ณ ๊ฐ์ ํ๊ณ ์ด๋ค.
exp : ์ง์๋ฅผ ์ผ๋ง๋ํ ๊ฑด์ง, ๊ทผ๋ฐ ์ฐ๋ฆฌ๋ 2์๋ณด์๋ฅผ ์ฐ์ง๋ ์์๊ฑฐ๋ค ๊ทธ๋ฌ๋๊น ํญ์ ์์๊ฐ๋ ์ ์๊ฒ bias๋ฅผ ๋ํด์ค๋ค. 8๋นํธ์๋ 256๊ฐ๋ฅผ ํํํ ์ ์๊ณ ์ผ๋ฐ์ ์ผ๋ก์ด๋ ์์๋ ํฌํจํ๋๊น ์์๋ ํฌํจ ์ํ๊ฒํ๋ ค๊ณ ํ๋๊ฑฐ์
ํ๋กํ ํฌ์ธํธ์ ์ ๊ทํํ๋ฐฉ์์ exp 000..0๊ณผ 111..1์ ์ฌ์ฉํ์ง ์๋๋ค. ๊ทธ๋๊น ๊ธฐ๋ณธ์ ์ผ๋ก 0์ ํํํ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ ๊ฐ์ฅ ์์ ์๋ ํฐ ์์๋ ์ ์ฝ์ด ์๋ค. 00..1 ์ด๋ 11..0
๋์ ์ข์์ ์ ๊ทธ๋ฅ ์ ์ํํ์ด๋ ๋์ผํ๊ฒ ๋น๊ตํ ์ ์์ ๋นํธ ๋์ด๋๊ฒ ์ด์จ๋ ๋์ผํ ๋ฐฉ์์ผ๋ก ์๊ฐํด๋ ๋๊ฒ๋ ๋์ํจ.
single precision : ๋๊ฐ ์์์ ์๋ 6์๋ฆฌ๊น์ง ํํ ๊ฐ๋ฅ
double : precision : ๋๊ฐ ์์์ ์๋ 16์๋ฆฌ ๊น์ง ํํ ๊ฐ๋ฅ
ex) -0.75 โ ์์์ด๋ฏ๋ก s = 1, ์ด์ง์๋ก 0.11์ด๋ฏ๋ก 1.1 * 2^-1๋ก ํํ ๊ฐ๋ฅํ๋ค. ์ฆ frac = 1.1, exp = -1
single precision : E = exp + bias์ด๋ฏ๋ก -1 + 127 = 126 = 0111 1110 , M = 100โฆ0(23bit) โ 1(S) 0111 1110(E) 1000 0000 000(M) = 1011 1111 0100 0000 โฆ. 0000
**double precision : E = -1 + 1023 = 1022 = 0111 1111 110, M = 100..0(52bit) โ 1(S) 0111 1111 110(E) 100..0(M) = 1011 1111 1110 1000 0000 0000 โฆ. 0000
๋น๊ต์ ์ฐ์ ์์๊ฐ ๋๋ ๋ถํธ๋นํธ, ์ง์๋นํธ, ์ ํจ์๋นํธ ์์ผ๋ก ๋ฐฐ์น๊ฐ๋๋ค. ์์๋งํ๋ฏ ๋น๊ต์ ํฐ ์ด๋์ด๋๋ค.
์ญ์ผ๋ก ๋ฐ๊ฟ๋ณด์๋ฉด (single precision) 1100 0000 1010 00โฆ00
single precision : S = 1, E = 1000 0001, M = 0100 0000 โฆ. 0000 โ S = 1, E = 129 โ exp = 2, frac = 1.01 โ (-1)^1 * 1.01 * 2^2 = -101 = -5
์ค๋ฒํ๋ก์ฐ : ์ง์๋ถ๊ฐ ๋๋ฌด ์ปค์ exponent field๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ
์ธ๋ํ๋ก์ฐ : 0์ด ์๋ ์ค์๋ถ๊ฐ ๋๋ฌด์์์ ํํ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ, ์ง์๋ถ์ ๊ฐ์ด ์์๋ก ๋๋ฌดํฐ ๊ฒฝ์ฐ
๋น์ ๊ทํ
exponent๊ฐ 0์ธ๊ฒฝ์ฐ์ frac์ ๊ฑฐ์ ์ฃผ๋ ๋นํธ๋ 0์ผ๋ก ์น๋ค. ๊ทธ๋ผ ๋ ์์๊ฐ์ ํํํ๊ฒ๋๋ค. ๋ง์ฝ frac๋ 0์ด๋ผ๋ฉด ๊ธฐ์กด์ ํํํ ์ ์๋ 0์ ๋ปํ๊ฒ๋๋ค. ์ด ๊ฐ์ s์ ๋ฐ๋ผ ์ ํน์ ์์ 0์ด๋๋ค.
exponent๊ฐ 11โฆ11์ธ ๊ฒฝ์ฐ์ frac์ ๋ฐ๋ผ ๊ฐ์ด ๋ฌ๋ผ์ง๋ค. frac์ด 0์ธ๊ฒฝ์ฐ s์ ๋ฐ๋ผ ์ ํน์ ์์ ๋ฌดํ๋๊ฐ ๋๊ณ , frac์ด 0์ด ์๋๊ฒฝ์ฐ์ NaN์ฆ, ์ซ์๊ฐ ์๋๋ผ๋ ํํ์ด ๋๋ค.
์ค์ํํ์ ์ฐ์ฐ์ ๊ณฑ์ ์ด ์คํ๋ ค ๋ง์ ๋ณด๋ค ์ฝ๋ค. ๋ํ ๋ ์ง์๊ฐ ํฐ ์ ํํ ์์์ ๋ฅผ allignํด์ฃผ์ด์ผํ๋ค. ์ด๋ป๊ฒํ๋ ์์ค์ ๋ฐ์ํ๋๋ฐ ์์๋ํํ ๋ง์ถ๋๊ฑฐ๋ณด๋จ ํฐ๋ํํ ๋ง์ถ๋๊ฒ ์์ค์ด ์ ๋ค.
ex) (1.000 * 2^-1) + (-1.110 * 2^-2)
- ํฐ๋ํํ ์ ๋ ฌ์ํจ๋ค โ (1.000 * 2^-1) + (-0.111 * 2^-1)
- significand๋ผ๋ฆฌ ๋ํ๋ค โ 1.000 + (-0.111) = 0.001 โ 0.001 * 2^-1
- ๋ค์ ์ ๊ทํ์ํจ๋ค. ์ค๋ฒํ๋ก๋ ์ธ๋ํ๋ก ์๊ฒผ๋์ง๋ ์ฒดํฌํจ โ 1.000 * 2^-4
- ํ์ํ๋ค๋ฉด ๊ฐ์ ์์ ํ๋ค.
์ด๋ฐ ๋ํ๊ธฐํ๋์จ์ด๋ฅผ ๋ง๋ค๊ธฐ๋ ์กด๋ ๋ณต์กํ๋ค. ํํด๋ฝ์์๋ ๋ชปํจ
์คํ๋ ค ๊ณฑ์ ์ ์ฝ๋ค.
ex) 1.000 * 2^-1 * -1.110 * 2^-2
- ์ง์๋ผ๋ฆฌ ๋ํ๋ค โ -1 + -2 = -3 ์ง์๋ผ๋ฆฌ ๋ํํ์ biase๋ ํ๋ฒ๋ง ๋ํด์ค์๋ค.
- significand๋ผ๋ฆฌ ๊ณฑํ๋ค โ 1.000 * 1.110 = 1.110 * 2^-3
- ๋ค์ ์ ๊ทํ์ํจ๋ค. ์ค๋ฒํ๋ก๋ ์ธ๋ํ๋ก ์๊ฒผ๋์ง๋ ์ฒดํฌํจ
- ํ์ํ๋ค๋ฉด ๊ฐ์ ์์ ํ๋ค.
- ๋ถํธ๋ฅผ ๊ฒฐ์ ํ๋ค โ ๊ฐ์๊ฑฐ๋ผ๋ฆฌ๊ณฑํ์ผ๋ฉด ์, ๋ค๋ฅธ๊ฑฐ๋ผ๋ฆฌ๊ณฑํ์ผ๋ฉด ์, ์ฌ๊ธฐ์ ๋ค๋ฅธ๊ฑฐ๋๊น ์ โ -1.110 * 2^-3
ํ๋กํ ํฌ์ธํธ ์ฐ์ฐ์ ์ํด์๋ ๊ทธ๋ฅผ ์ํด ๋ถ๋ฆฌ๋ 32๊ฐ์ ๋ ์ง์คํฐ๊ฐ ์กด์ฌํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ธ ํ๋ ์์ ์ ๊ฐ์ง๋๋ฐ, ๋ง์ฝ ์ฑ๊ธ์ ์ฌ์ฉํ๋ฉด ํ์ 32๋นํธ๋ง ์ฌ์ฉํ๋ ๋ฐฉ์์.
๋ฐ๋ผ์ ๋ก๋์ ์คํ ์ด๋ ๋ณ๋๋ก ์กด์ฌํ๋ค. fld, fsd, flw , fsw ๋ก ๋๋๋ค. ์ค์ง ์ค์๋ฅผ ์ํ ๋ ์ง์คํฐ์ด๊ณ ์ค์๋ฅผ ์ํ instruction์
๋ฐ๋ผ์ ์ค์ ์ฐ์ฐ์ ์ํ instruction๋ค๋ ๋ฐ๋ก์๋ค. fadd.s, fsub.s, fmul.s, fdiv.s, fsqrt.s ๋ฑ๋ฑ..
์๋ค๋ค์ ๋ฌด์กฐ๊ฑด f๋ ์ง์คํฐ์์๋ง ๊ฐ์ ๊ฐ์ ธ์ฌ์์๋ค๊ตฌ~
๋น๊ต์ฐ์ฐ๊ฐ์๊ฒฝ์ฐ์๋ ์์์ ์ธ๊ธํ๋ ํํ๋ฒ์ ๋ฌ๋ผ๋ 1๋1๋น๊ต์ ์์ด์ ์์ ๋นํธ๋ถํฐ ๋ค๋นํธ๊น์ง ๋์ผํ๋ฐฉ์์ผ๋ก ํ์ด๋๋จ. ๋ฐ๋ผ์ ํ๋ก๋ ๋์ผํ๊ฒ ์๋ํจ. ๊ทธ์น๋ง instruction์ ๋ฐ๋ก ๋ ์ด์ ๋ ์์ค์ ๋ฐ์คํฐ๋ค์ด์ ์ด ๋ค๋ฅธ ๋ ์ง์คํฐ์ด๊ธฐ๋๋ฌธ์. ํ๋์จ์ด์ ์ผ๋ก ๋์ผํ๊ฒ ์๋ํ๊ฒํ๊ณ instruction๋จ์์ ๋ถ๋ฆฌํด๋์ ๊ฒ
4
7๊ฐ์ ์ธ์คํธ๋ญ์
์ ๋ค๋ฃฌ๋ค. sd, ld, add, sub, and, or, beq
๋ชจ๋ ์ธ์คํธ๋ญ์ ์ ๊ณตํต์ ์ ์ผ๋จ PC์๊ฐ์ ๋ค์ instruction์ฃผ์๋ฅผ ์ฝ์ด์ผ ํ๋ค๋๊ฑฐ๋, ๋ฒ๋ฆฌ๋ ์ด์ฉ๋ ์ผ๋จ ์์ค๋ ์ง์คํฐ ๋๊ฐ๋ฅผ ์ฝ์ด์จ๋ค๋๊ฒ์ด๋ค. โ ์ฐ๋ ์์ฐ๋ ์ผ๋จ ์ฝ์ด์ค๋๋ก ์ค๊ณ๋์ด์๋ค.
์ด๋ ๊ฒ ๊ณตํต์ ์ธ ์์ ์ด ๋๋๋ฉด opcode๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ญํด์ผํ ์ง๋ฅผ ๋ถ์ํ๊ณ ALU๊ฐ ๊ทธ์์๋ง๊ฒ ์ฐ์ฐ์์ ์ ํ๋๊ฑฐ.
๊ธฐ๋ณธ์ ์ผ๋ก PC๋ ์ํ๋ค ๋ค์ ์์ ์ ์ํํ๊ฒ ๋์ด์๋ค. ์ฐ๋ฆฌ์ instruction์ 4๋ฐ์ดํธ์ด๋ฏ๋ก ๋งค๋ฒ PC์ 4์ฉ ๋ํด์ง๋ ๊ตฌ์ฑ์ด๋ค.
๋ชจ๋ ์ฐ์ฐ์ ALU์์. ALU๋ ๋ฐ๋ผ์ ์์ฃผ ๋ค์ํ ์ฐ์ฐ์ ํ๋ค. ๊ทธ๋ฐ ๋ค์ํ ์ฐ์ฐ์ ํ๊ธฐ์ํด control์ด ํ์
ํ๋ก์์ ๋ณด๋ฉด ๊บพ์ด๋ ๋ถ๋ถ์ด ๋ง๋ค. ์ด๋ฐ ๊บพ์ด๋๋ถ๋ถ์ ๋ง๋๋ก ๊บพ์ด๋๊ฒ์๋๋ผ ๊ฐ ์ํฉ์ ์๋ง์๊ฑธ ์ ํํ๊ณ ๋๊ณ ํด์ผํจ. ์ฆ ์ด๊ฑธ ์ ํํด์ค ์ ํธ๋ ์์ด์ผํ๊ณ ์ค์ ์ ํ์ด ์ผ์ด๋๋๋ก mux๋ ์์ด์ผํ๊ฒ ์ง
mux๋ ๋ฌ๊ณ ์ปจํธ๋กค๋ ๋ฌ์์ฃผ๋ฉด ์๋์ฒ๋ผ๋๋ค.
ํ๋ฆฝํ๋กญ : ์กฐํฉํ๋ก์์๋ ์ ๋ ฅ์์ํด ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋ก๋ํ๋์ง๋ง ์์ฐจํ๋ก์์๋ ์ด์ ์ ์ ๋ ฅ์ด ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ผ์น๋ค. ํ๋ฆฝํ๋กญ์ ์์น๋ชจ์๋ฆฌ์์ ์ ๋ณด๋ฅผ ๊ธฐ๋กํด๋๋ค. ํ๋ก์์์ ๊ฒฝ์์ด ๋ฐ์ํ๋๊ฑธ ๋ง๊ธฐ์ํด , ์ฆ ๊ฐ์ ์์น๋ชจ์๋ฆฌ์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋๋ก ํ๊ธฐ์ํด ํ๋ฆฝํ๋กญ์ ์ฌ์ฉ๋๋ค.
์ด๋ ๊ฒ ํด์ค์ผ๋ก์จ ๋๊ธฐํ๊ฐ ๊ฐ๋ฅํ๋ค. cpu์ ํด๋ฝ์ด ํ์ํ ์ด์
๋ชจ๋ ํ๋ก์ ๋ฐ์ดํฐ๋ ์์น๋ชจ์๋ฆฌ์ ๋ค์ด๊ฐ๋๋ก ํ๋ค. ์ฐ์ฐ์ด ์ด๋ค์ง ๋ ์ ๋๋ก ๋ ๊ฐ์ด ๋ค์ด๊ฐ ์ ์๋๋ก ๊ฒฝ์์ ์ ๊ฑฐํด์ฃผ๋๊ฑฐ์. ๋๋ฌด๋นจ๋ผ๋ ๋๋ ค๋์๋๋๊น ํด๋ฝ์ ์ ๋ง์ถฐ์ฃผ์ด์ผํจ. ๋๋ฌด ๋น ๋ฅด๊ฒ๋ง์ถ๋ฉด ์์ผ๋๋ง๋๋๊น ๋ฆ๋๊ฑฐ์ ๋ง์ถฐ์ค์ผํจ. ๊ทธ๋ฌ๋ค๋ณด๋ ํด๋ฝ์ ๊ฐ์ฅ ์ค๋๊ฑธ๋ฆฌ๋ ๋์ ๋ง์ถฐ์ค์ผํจ.
๋ฐ์ดํฐํจ์ค ์์๋ ์ฌ๋ฌ๊ฐ์ง ์์๋ค์ด ๋ฐฐ์น๋๋ค. ์ด๋ฐ ๋ฐ์ดํฐํจ์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ ์ฒ๋ฆฌ๋๋ค.
ALU, mux, memory์ด๋ฐ๊ฒ๋ค์ด datapath์ ํฌํจ๋๋๊ฒ
๋์ดํฐํจ์ค๊ฐ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ๋ฅผ ๋ฌ๋ฆฌํ ์ ์๋ ์ด์ ๊ฐ ๊ฒฝ๋ก๋ฅผ ์ด๋ป๊ฒ ํ๋๊ฐ๊ฐ ์ด๋ค ์์๋ฅผ ์ธ ๊ฒ์ธ๊ฐ ์ด๋ค ์ ๋ณด๋ฅผ ์ด๋์ ์ ์ฅํ ๊ฒ์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์. ์๋ฅผ๋ค์ด์ BEQ๊ฐ์๊ฒฝ์ฐ๋ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ์ด๋๋๊ฒ ์๋๋ผ PC์๋ค์ด๊ฐ๋๊ฑฐ์.
fetch ๊ตฌํ : instruction์ ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์์ pc๋ฅผ ์ฆ๊ฐ์ํจ๋ค
R๊ตฌํ : ๋ ์ง์คํฐ ๋๊ฐ๋ฅผ ์ฝ์ด๋ค๊ฐ ์ฐ์ฐํ๊ณ ๊ทธ๊ฑธ ๋ ์ง์คํฐ์ ์ด๋ค. regwrite์ด๋ aluoperation ํ์
ls๊ตฌํ : ๋ ์ง์คํฐ์ฝ๊ณ immediate์ฒ๋ฆฌํด์ ์ฐ์ฐํ๊ณ ๋ฉ๋ชจ๋ฆฌ์์๊ฐ์ ธ์ค๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ทผํด์ ์ด๋ค. memwrite, memread, immediate generator๊ฐ ํ์ํจ. immediate์ 12๋นํธ์ผ์๋, 32๋นํธ์ผ์๋์๋๋ฐ ์ค์ ์ฐ์ฐ์์ 64๋นํธ๊ฐ์ฐ์ด๋๊น ์ด๊ฑธ 64๋นํธ ์๋ก ๋ง๋๋ ์ผ์ ํ๋ค.
b๊ตฌํ : ๋ ์ง์คํฐ๋ฅผ ์ฝ์ด์ ๋นผ๊ธฐํด์ 0์ธ์งํ์ธํ๋ค. ๊ฐ์ผ๋ฉด ์ ํํ๋๊ฑฐ๋๊น. immediate์ผ๋ก ๋ฐ์ offset์ผ๋ก ํ๊ฒ๋ ๊ณ์ฐํ๋ค. ๊ณ์ฐ๋๊ฐ์ ์ง์๋ณด์ฅ๊ฐ์ด์์ผ๋๊น ์ผ์ชฝ์ผ๋ก 1๋ฒ ์ฌํํธํด์ค๋ค
์ฃผ์๊ณ์ฐ์ด๋ ์กฐ๊ฑด๊ณ์ฐ์ด๋ ๋๋ค ํ ALU๋ก ๋ชปํ๋๊ฑด์๋๋ฐ ๊ตณ์ด ์ํ๋๊ฑด ์๊ฐ์ ์ธ ์ด๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ๊ธฐ๊น์ง ๋ณธ ๊ฑธ๋ก ๋ง๋ค์ด๋ธ datapath. ๊ทธ๋ฌ๋ ์ด๊ฑด ๋ชจ๋ ๊ฒ ํ ์ฌ์ดํด์์ ๋๋๋ ๊ทธ๋ฆผ์ด๋ค.
ALU Control
ALU๋ ๋ค์ํ ์ฐ์ฐ์ ๋ชจ๋ ํด๋ผ ์ ์์ด์ผํ๋๋ฐ ๊ทธ ์ฐ์ฐ์ ๋๊ฐ์ ํด์ค๊ฒ์ธ๊ฐ..! Alu๋ฅผ ์ ์ดํ ์ ํธ๊ฐ ์์ด์ผํ๋ค.
ld , sd, add ๋ชจ๋ add๋ก ํด๊ฒฐ๋จ. offset๊ตฌํ ๋ add๊ฐ ์ํ๋๋ค.
branch๋ ๋ง์ฐฌ๊ฐ์ง๋ก sub๋ก ํด๊ฒฐ๋๋ค. ๋นผ์ ๊ฐ์๊ฑด์ง ํ๋ณํ๋๊น
๊ทธ๋ผ ์ด์ ์ด ALU control์ ์ด๋ป๊ฒ ๋ง๋ค์ด๋ด๋๋
opcode๋ก๋ถํฐ ๋์จ ALUOP๊ณผ func๋ก ํ๋ณํ๋ค. ์์๋งํ๋ป ld, sd, add ๋ชจ๋ ๋ง์ , beq, sub๋บ์ ์ธ๊ฑฐ ์ธ์ฆํ์ฌฌ? ์ธ์ฆํ์ฌฌ?
์ฌ๊ธฐ์๋ณด๋ฉด์๊ฒ ์ง๋ง ALUOP 2๋นํธ๋ func7 7๋นํธ, func3 3๋นํธ๋ก ALU๊ฐ ๋ฌด์จ์ผ์ ํ ์ง ์ ํ๋ค.
Main Control
ALU๊ฐ ์ฐ์ฐํ๋๊ฑฐ ๋ง๊ณ ๋ ๊ฒฐ์ ๋์ด์ผํ๋๊ฑด ๋ง๋ค. ์ฐ์ฐ์ ์์ค๋ ์ด๋์์ฌ๊ฑด์ง, ๋ฉ๋ชจ๋ฆฌ์์ ๋ ์ง์คํฐ๋ก ๊ฐ์ ธ์ฌ๊ฑด์ง, ๋ ์ง์คํฐ์ ์ธ๊ฑด์ง.. ๋ฑ๋ฑ ๊ทธ๋ฆฌ๊ณ ALU control์ ์ฐ์๋ Aluop๋ ๋ง๋ค์ด์ค์ผํจ. ์ฌ์ค Alu๋ opcode๋ณด๊ณ ํด์ผํ๋๊ฑด ๋ง์ฐฌ๊ฐ์ง๋ฐ, ๊ทธ๋ผ ๋๋ฌด๋ณต์กํด์ง๋๊น main์ด ์๊ณ ๋ฅผ ๋์ด์ฃผ๋๊ฑฐ์
๊ฒฐ๊ณผ์ ์ผ๋ก ์ ๋ ๊ฒ ์ต์ฝ๋ ์ธํ 7๋นํธ๊ฐ ์ฃผ์ด์ง๋ฉด
์ด๋ก๋ถํฐ ๊ฐ ํฌ๋งท์ ์๋ง๋ main control์ด ์ฃผ์ด์ง๋ค. Rํฌ๋งท๊ฐ์๊ฒฝ์ฐ๋ ๋ฐ์ดํฐ ๊ฒฝ๋ก๋ ๋ค ๋๊ฐ์๋ฐ ์ฐ์ฐ๋ง ๋ฌ๋ผ์ง๋๊น..!
- ALUSrc : ์์ค๊ฐ immediate์ด์ผ?
- MemtoReg : ๋ฉ๋ชจ๋ฆฌ์์ ๋ ์ง์คํฐ๋ก ๋ญ ๊ฐ์ ธ์?
- RegWrite : ๋ ์ง์คํฐ์ ๋ญ ์จ?
- MemRead : ๋ฉ๋ชจ๋ฆฌ์์ ๋ญ ์ฝ์ด?
- MemWrite : ๋ฉ๋ชจ๋ฆฌ์ ๋ญ ์จ?
- Branch : ๋ธ๋์นํด์ผํด?
์์ datapath๊ฐ ์ค์ํ๊ฑด ๊ทธ path์์ ์์๋ค์ ์ด๋ค๊ฑธ ํต๊ณผ์ํค๋๋, ๊ทธ๋ฆฌ๊ณ ์ด๋๋ก ๋ค์ด๊ฐ๊ฒ ํ๋๋์๋ฐ๋ผ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ์๋๋ฐ ๊ทธ ๋ง ๊ทธ๋๋ก๋ค. control์ด ์ด๋ค datapath๋ฅผ ์ด๊ณ ๋ซ๋๋์ ๋ฐ๋ผ ์์ ์ด๋ฌ๋ผ์ง
Q: ์ ์๋์ง ์์ ์ฐ์ฐ์ ์ด๋ป๊ฒ๋จ ? A : datapath์ ๋ฌธ์ ๊ฐ ์์์๋ ์๊ณ , ๋ฌด์๋ณด๋ค ์ ์๋์ง ์์ ์ฐ์ฐ์ด๋ฉด control์ ๋ง๋ค์ด๋ด์ง ๋ชปํ๋๊น ์ ์์๋ํ ์ ์์. addi์ฒ๋ผ datapath๋ ๋ค ๊ฐ์ถฐ์ง๊ฒฝ์ฐ๋ ์์ ์ ์์. ์ด๋ฐ๊ฒฝ์ฐ์ decode๋ง ์ ํด์ฃผ๋ฉด ์ถฉ๋ถํ ์๋ํ๊ฒ์ฌฌ
๊ฐ ํฌ๋งท์ ๋ํ datapath์ ํ์ฑ/๋นํ์ฑ์ pdf 4-28๋ถํฐ ๋ณด๋๋กํฉ์๋ค.
ํผํฌ๋จผ์ค ์ด์ : ์ง๊ธ๊น์ง ํ๊ฑด ํ ์ฌ์ดํด ์์์ ๋ชจ๋ instruction๋ค์ด ์ํ๋์ด์ผํ๋ ๊ตฌ์กฐ์๋ค. ๊ทผ๋ฐ ์ด๋ฐ์์ผ๋ก ํ๋ก๋ฅผ ์ง๋ฒ๋ฆฌ๋ฉด instruction๋ค ์ค ๊ฐ์ฅ ์ค๋๊ฑธ๋ฆฌ๋๊ฒ ์ฃผ๊ธฐ๋ฅผ ๊ฒฐ์ ํด๋ฒ๋ฆฌ๋๊น ์ธ๋ฐ์์ด ์๊ฐ์ด ๋๋ ค์ง๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ์ํด ๊ฐ instruction์ ์์ ๋ถ๋ถ์ผ๋ก ์ชผ๊ฐ๊ณ pipeline์ ํตํด ๋ถํ ์ฒ๋ฆฌํ๋๋กํ๋ค. ์ชผ๊ฐ์ง ๋ถ๋ถ์ ์๊ฐ๋ค์ ์ต๋๊ณต์ฝ์๋ก ํด๋ฝ์ฌ์ดํด์ ์ ํด์ฃผ๋ฉด ๋๋ค.
ํ ๊ณผ์ ์ ์์ํ ๊ณผ์ ์ผ๋ก ๋๋์ด ๋์์ ์คํ๋๋๋ก ํ๋ฉด ์๊ฐ์ด ์ ์ฝ๋๋ค. ์ด์งํผ ํ์ฌ์ดํด์ ๋คํ ๋ผ๊ณ ๋ค์ด๋ ์์ฐจ์ ์ผ๋ก ์ฐ์ฐ์ด ์งํ๋ ํ ๋ฐ ๋ ธ๋๊ณต๊ฐ์ด์๊ธฐ๋๊น
๊ฒน์น๋ ๊ตฌ๊ฐ์ด ๋ง์์ง์๋ก ์๊ฐ ์ ์ฝ๋ ๋ง์ด๋๋ค. ์ฆ speedup์ n์ด ์ปค์ง์๋ก ๋์ด๋๋ค.
๊ตฌํ๋๋๊ธฐ
- IF : Instruction Fetch โ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ์ธ์คํธ๋ญ์ ์ ๊ฐ์ ธ์จ๋ค.
- ID : Instruction Decode โ ๊ฐ์ ธ์จ ์ธ์คํธ๋ญ์ ์ ๋์ฝ๋ํด์ Main, ALU Control์ ๋ง๋ค์ด๋ธ๋ค.
- EX : Execute operation โ ALU control์ ๋ฐ๋ผ ALU์์ ์ฐ์ฐ์ํ๋ค.
- MEM : Access Memory โ datapath์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ผ์์ผ๋ฉด ์ ๊ทผํด์ ์ฐ๊ฑฐ๋ ์ฝ๋๋ค
- WB : Write Back โ ๋ ์ง์คํฐ์ ์จ์ค์ผํ๋ฉด ์จ์ค๋ค.
ํ์ดํ๋ผ์ธ์ ์ฑ๋ฅ์ ์ต๋๊ณต์ฝ์๋ก ๋ง๋ค์ด์ ํ๋ฏ๋ก ์ํด๋ณด๋ ๋ถ๋ถ์ด ์๊ธฐ์ง๋ง ๊ทธ๋๋ ์ค๋ฒ๋ฉ๋๋๋ถ๋ถ์๊ฐํ๋ฉด ์ด๊ฒ ๋ซ๋ค.. ๊ทธ๋๊น ๊ฐ๋ณ instruction์ ์ฑ๋ฅ์ ๋ ๋จ์ด์ง ์ ์์ด๋, ๋ณ๋ ฌ์ฒ๋ฆฌ๋ถ๋ถ์์๋ ์ด๊ฒ ๊นกํจ์ง
์ด๋ ๊ฒ ์ํด๊ฐ ์๊ธฐ์ง๋ง ๊ทธ๋๋ ํจ์ฌ ๋นจ๋ฆฌ ๋๋๋ค๋๊ฑฐ ์ธ์ ?์ ํด ์์ ์ด ์๊ฒจ์ ์ํด๋ณด๋๊ฒ
์ด๊ฒฝ์ฐ ์คํผ๋์ ์ pipeline์ ์์ธ๋๊ฐ ์ธ๋๋ณด๋ค ์ผ๋ง๋ ์ค๋๊ฑธ๋ฆฌ๋๊ฐ๋ฅผ ์ธก์ ํ๊ฑฐ๋ผ๊ณ ๋ณด๋ฉด๋๋ค. ์์ฐ๋ฉด ํ์ฌ์ดํด์ 800์ธ๋ฐ ์ฐ๊ณ ์ ํ์ฌ์ดํด์1000์ด ๋๋ค.
๊ฑธ๋ฆฌ๋์๊ฐ์ n๋ฒ์ instruction์ด ์ํ๋ ๋ ์์ผ์ผ๋ฉด 800n, ์ป๋ค๋ฉด 1000 + 200(n - 1)์ด๋ฏ๋ก speedup์ 4๊ฐ๋๋ค. overwrap๋๋๋ถ๋ถ์ด ๋นํ์์๋ค๋ฉด 5๊ฐ ๋์ ๊ฒ. ์คํผ๋์ ์์ด์์ ์ธ ์์น๋ ์คํ ์ด์ง์ ์์ ๋์ผํจ.
RISCV๋ ํ์ดํ๋ผ์ธ์ ํนํ๋ผ์๋ค. ๋ชจ๋ ์ธ์คํธ๋ญ์ ์ด 32๋นํธ๋ก ๋์ผํ๊ณ (fetch decode๊ฐ ๊ณ ์ ๊ณผ์ ์ด๋ผ ์ ๋ฆฌ) ํฌ๋งท์์ข ๋ฅ๊ฐ ์ ๋ค (mul์ด๋ div๋ r์ธ๊ฒ์ฒ๋ผ) ld/sd๋ ๋ญ 3๋ฒ์งธ์ ๊ณ์ฐ 4๋ฒ์งธ์ ์ ๊ทผ์ด ์ฅ์ ์ด๋ผ๋๋ฐ ์ด๊ฑด ์ ๋ชจ๋ฅด๊ฒ์๋๋ค. ์๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฐ๋ก๋ฟ๋ค๋๊ฑธ ์ดํํ๊ณ ์ถ์๊ฑด๊ฐ?
ํ์ดํ๋ผ์ธ์ ์์ฐจ์ ์ผ๋ก ์๋ํ๋ค. ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก. ๊ทผ๋ฐ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ๊ฐ ์ผ์ด ์๊ธด๋ค.. ํด์ ๋๊ฐ ๋ฐ์ํ๊ฒ์ด์ง..๋ญ๊ทผ๋ฐ beq๊ฐ ๋์๊ฐ๊ธฐ์ ๊น์ง ๋ฌธ์ ๊ฐ ์๋๋๊น ์ผ๋จ์ beq๋ฅผ ํ ์ง์ํ ์ง๋ชจ๋ฅด๋๊น ๊ทธ๋ฅ 4๋ํด์ ๊ณ์ ๋ค์ instruction์ผ๋ก ๋์ด๊ฐ๋ ์ ๋ต์ ์ทจํ๋ค. ,๋๊ฐ์๋ฌธ์ ๊ฐ ld๋ rํฌ๋งท๊ฐ์ด register์ ์ฐ๋ instruction์์๋ ๋ฐ์ํ๋ค. ๋ค๋ก๊ฐ์ ๋ ์ง์คํฐ์ ์จ์ค์ผํ๋๊น..
pdf40์ชฝ๋ถํฐ ์ฐธ๊ณ ํ์์ค
์ปจํธ๋กค๋ ํจ๊ป ๋ฐ๋ผ๊ฐ์ค์ผํ๋ค ๊ทธ๋์
ํ์ดํ๋ผ์ธ์์๋ ํ๊ฐ์ง ์ธ์คํธ๋ญ์ ๋ง ์ฃผ๊ตฌ์ฅ์ฐฝ์ฌ๋ผ๊ฐ์ง ์๋๋ค. ๋ค์ํ ์ธ์คํธ๋ญ์ ๋ค์ด ์ฌ๋ผ๊ฐ๋ค.
ํ์ดํ๋ผ์ธ์ 5๋จ๊ณ๊ฐ์๋ค ๊ทธ๋๊น ํ๋ฒ์ ์ต๋ 5๊ฐ์ instruction์ด ๊ณต์กดํ ์ ์์.
CC5์๋ ์ด๋ฐ๋ชจ์ต์ด๋ค.
WB์ ld๊ฐ write-backํ๋ฉด ID์ ld์๋ฆฌ๋ก์จ๋ค. ์ด๊ฑธ ๋ง๊ธฐ์ํด ์ ๋ฐ๋ถ์ ํ๋ฐ๋ถ ๊ฐ๊ฐ ๋ฐ๋ก์ปจํธ๋กค๋๊ฒํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ปจํธ๋กค๋ datapath์ ํจ๊ป ์ด๋ํด์ค์ผํ๋ค. ID๋จ๊ณ์์ ๋์ฝ๋๋ ๋์ผํ๊ฒ๋์ง๋ง ์ด๋ฅผ ์ฌ์ฉํ๋๋ถ๋ถ์ ๋ฐ์ดํฐ์ ํจ๊ป๊ฐ์ผํจ
ID์์ ๋ง๋ค์ด์ง ์ปจํธ๋กค์ ID ์ดํ๋ก EX, MEM, WB์์ ์ฌ์ฉ์ด๋๋๋ฐ ์ด๋ ๊ฒ ์ฌ์ฉ๋๊ธฐ ์ํด์ ๋ค๋ก ๋๊ฒจ์ ธ์ผํ๋ค . ํ์ดํ๋ผ์ธ์ ํ๋ ์ํ๋ ์ปจํธ๋กค์ ๋๊ฐ์. ๊ทธ๋ฅ ๋ณด๋ด๋๊ณผ์ ์ด ์๋ฐ๋๋ค๋์ ๋ง ๋ฌ๋ผ์ง๋ค.
ํด์ ๋
structural : fetch์ค์ผ ๋ mem์ ์ ๊ทผํ ์์๋ค. ์์์ ์ฌ๋ฌ๊ณณ์์ ์ ๊ทผ์ ๋ชปํ๋๊น ๊ทผ๋ฐ ์ด๊ฑด ํด๊ฒฐ์. instruction๋ฉ๋ชจ๋ฆฌ์ data๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฐ๋ก ๋์ด์ ํด๊ฒฐ
data : ๋ค์ ์ธ์คํธ๋ญ์ ์์ ์ ์ธ์คํธ๋ญ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํด์ผํ๋ฉด ๋์ฒํด์ง๋ค. ์์์๋ค๊ณ ํด์ ๋ค ๋๋๊ฒ์๋
WB์์ ์ ์ฐ๊ธฐ๊ฐ ๋๋๊ณ ID์์ ์ ์ฝ์ด์ผํ๋๊น WB๋ ID๊น์ง๋ ๊ฒน์น ์ ์๋ค
์ด๋ ๊ฒ ๋๋ฒ์ ์ํด๊ฐ์๊ธด๋ค.. ๊ทธ์น๋ง ์ฌ์ค ๊ฐ์ EX์์ ์ด๋ฏธ ๊ฒฐ์ ์ด ๋๊ฑฐ๋๊น ๋ ์ง์คํฐ๊ฐ๊ธฐ์ ์ EX๋๋์์ ์์ datapath๋ง ์๋ก ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋์ ์ด๋ ๊ฒ ๋ง๋ค์ด์ค๋ค. ์ด๋ฌ๋ฉด EX์์ ๊ณ์ฐ๋๊ฐ์ด ๋ ์ง์คํฐ๋ฅผ ๊ฑฐ์น์ง์๊ณ ๋ฐ๋ก ๋ค์ ์ธ์คํธ๋ญ์ ์ ์์ค๊ฐ ๋๋ค. ๋์ ์ด๋ฌ๋ฉด ํ๋์จ์ด๋๋ณต์กํ๊ณ ์ฌ๋ฌ๊ฐ์ง ์ค๋ฒํค๋๊ฐ์๊ธด๋ค.
๋ก๋ํ ์ฌ์ฉํ๋๊ฒ๋ ๋ฌธ์ ๊ฐ๋๋ค. ์ด๊ฑด load-use data hazard๋ผ๊ณ ๋ถ๋ฅธ๋ค. load๋๊ฑธ ์ฐ๋ ค๋ฉด MEM์ดํ์ datapath๋ฅผ ์๋ก ๋์ผ๋๋๋ฐ ์ด๊ฑด ์๋ฌด๋ฆฌ๋นจ๋ผ๋ ํ์ฌ์ดํด์ ์ํด๋ณผ ์๋ฐ์ ์๋ค.
๋์ ์ฝ๋๋ฅผ ์ ์ค์ผ์ฅด๋งํ๋ฉด ํด๊ฒฐํ ์ ์์ง..
control : branch๊ฐ ๊ฒฐ์ ๋๊ธฐ๊น์ง ์๊ฐ์ด ๊ฑธ๋ฆผ. ๊ทธ๋ผ ๊ทธ๋์ ๋ค๋ฅธ instruction์ ์ํํ๋ค. ํฌ๋ง์๊ฑธ์ด๋ณด๋๊ฑฐ
์๋๋ฉด ID๋จ๊ณ์์๋ถํฐ branch ์ฃผ์๋ฅผ ๊ณ์ฐํ๊ณ branch์ฌ๋ถ๋ฅผ ํ๋จํด์ ๋ฐ๋ก ๋ค์์ branchํ๋๋ก ํ๋๋ฐฉ๋ฒ๋์๊ธดํจ ๊ทผ๋ฐ ์ด๋ฌ๋ฉด ์์ฒญ ์ค๋ฒํค๋๊ฐ ์ปค์ง๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ์๋ฌด๋ฆฌ์ค์ฌ๋ดค์ ํ๋๋ ์ํด๋ณด๊ฒ ๋ผ์๋ค. ID๊ฐ ๋๋์ผ ์คํํ ์์๋๊ฑฐ๋๊น
์ด๋ด๋ฐ์ ์์ธก์ํด๋ณด์ ์ด๋ง์ด์ง ๊ทผ๋ฐ ๊ฐ์ฅ์ข์์์ธก์ โ์คํจํ๋คโ ๋ก ์์ธกํ๋๊ฑฐ์. ์ ์ด์ ์คํจํ ํ๋ฅ ์ด ์กด๋๊ฒ ํผ ๊ทธ๋์ ๊ฑ RISC-V์์๋ ํญ์ ์คํจํ๋ค๋ ๊ฐ์ ํ์ ๋ค์ instruction์ ์ํํ๋๋ก 4๋ํด์ํ๊ณ ๋ง์ฝ์ ํ์ธํด๋ณด๋๊น ์ฅ branch์๋ค ํ๋ฉด ๊ทธ๊ฐ ์ํํ๊ฑฐ ์น๋ฒ๋ฆฌ๊ณ branchํด์ ๋ค์์ด์ด๊ฐ ์ด๋ ๊ฒํ๋ฉด ํ๋ฒ์ ์๊ธฐ๋ ๋ฒ๋ธ์ ์ปค๋ ์๊ธธ ํ๋ฅ ์ด ์ ์ผ๋๊น ์ด๋์ ๋ ๋ฐฉ์ด๊ฐ๋๋ค.
ID์์ ๋ธ๋์น์ฃผ์ ๊ณ์ฐํด๋๊ณ ํ๋ค๊ฐ ํ๋ฆฌ๋ฉด ์์ ํ๋๊ฒฝ์ฐ์ธ๊ฑด๊ฐ..?
์์ธ
์์ธกํ์ง ๋ชปํ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์.
์์ธ : ์ ์๋์ง์์ ofcode, ์ฐ์ ์ฐ์ฐ์ค๋ฒํ๋ก์ฐ, ์์คํ ์ฝ ๋ฑ ๋ด๋ถ์ ์ผ๋ก ๋ฐ์ํ๋ค.
์ค์ง (interrupt) : IO๋ก๋ถํฐ ๋ค์ด์จ ์ด๋ฒคํธ ์ธ๋ถ์์๋ค์ด์จ ๋น๋๊ธฐํ
- ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ PC๋ฅผ ์ ์ฅํด๋๊ณ (Supervisor Exception Program Counter)
- ๋ฌธ์ ์ ์ฌ์ ๋ฅผ ์ ์ฅํ๊ณ (SCAUSE)
- SCAUSE์ ๋ฐ๋ฅธ ํธ๋ค๋ฌ๋ก ์ด๋ํด์ ์ฒ๋ฆฌํ๋ค.
- ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด SEPC๋ก ๋์๊ฐ๊ฑฐ๋ ์ข ๋ฃ์ํจ๋ค.
๋ฒกํฐ์ธํฐ๋ฝํธ vectored interrupt
cause register์ ์ํด ํธ๋ค๋ฌ๊ฐ ๊ฒฐ์ ๋๋ค. ์์ธ๋ฒํธ๊ฐ ๋ฒกํฐํ ์ด๋ธ ๋ฒ ์ด์ค ๋ ์ง์คํฐ ์์ ์ถ๊ฐ๋๋ค?
๊ทผ๋ฐ ์ด ๊ณต๊ฐ์ 32๋ฐ์ดํธ ๊ณต๊ฐ์ด๋ผ ์ฌ๊ธฐ์ ํด๊ฒฐ๋ชปํ ์๋์๋ค ๊ทธ๋ผ ๋ ๋ค๋ฅธ๋ฐ๋ก ์ ํ์ํค๋ ์ฝ๋๊ฐ ์ด 32๋ฐ์ดํธ ๊ณต๊ฐ์์ ๋ค์ด๊ฐ๋ค.
5
๋ฉ๋ชจ๋ฆฌ๋ ํฌ๊ณ ๋น ๋ฅด๋ค๊ณ ์ธ์๋์ง๋ง ์ค์ ๋ก ๊ทธ๋ ์ง ๋ชปํ๋ค. ๋น ๋ฅผ์๋ก ์๊ณ ๋๋ฆด์๋ก ํฌ๋ค. ๋ฐ๋ผ์ ๋น ๋ฅด๊ณ ํฌ๊ฒ๋ง๋ค๊ธฐ์ํด์๋ ๋ญ๊ฐํ์ํ๋ค. ๊ฑฐ๊ธฐ์ ์ด์ฉ๋๋๊ฒ ์ง์ญ์ฑ
์๊ฐ์ ์ง์ญ์ฑ : ์ต๊ทผ์ ๋ฐฉ๋ฌธํ๋ค ๋ฉ๋ชจ๋ฆฌ์ฃผ์์ ๋ ๋ฐฉ๋ฌธํ ๊ฐ๋ฅ์ฑ์ดํฌ๋ค loop๊ฐ์๊ฑฐ.
๊ณต๊ฐ์ ์ง์ญ์ฑ : ๋ฐฉ๋ฌธํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ทผ์ฒ์ ๋ ๋ฐฉ๋ฌธํ ๊ฐ๋ฅ์ฑ์ดํฌ๋ค. ๋ฐฐ์ด๋ ์์ฐจ์ ์ด๊ณ pc๋ ์์ฐจ์ ์ด๋ฏ
์ด๋ ๊ฒ ๊ณต๊ฐ์ฑ์ด๋ผ๋๊ฒ ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๋์ ์ ๊ทผํ ์ง ์ฐ๋ฆฌ๋ ์ฝ๊ฐ์ ์์ด๋์ด๋ฅผ ๊ฐ์ง ์ ์๋ค.
์ด๋ฐ ์ง์ญ์ฑ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ด์๋ฐ
disk๋ ํฌ๊ณ ๋๋ฆฌ๊ณ dram์ ์ ๋นํ๋น ๋ฅด๊ณ ์ ๋นํํฌ๊ณ sram์ ๊ต์ฅํ๋น ๋ฅด๊ณ ๊ต์ฅํ ์๋ค
์ด๋ฐ์น๊ตฌ๋ค์ ์กฐํฉํด์ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต์ ๋ง๋ค๋ฉด ๋์์ด๋๋ค
์ผ๋จ CPU๋ ๋ฐ๋น ๋ฅธ์น๊ตฌ๋ฅผ์ํ๋๊น SRam์ด๋ ์ฐ๊ฒฐ์์ผ์ ๋น ๋ฅด๊ฒ์๋ํ๋๋กํ๋ค. ์์ ์ธ๊ธํ ์ง์ญ์ฑ๋๋ฌธ์ ์ด์งํผ ๋์๋ฒ์๋ฅผ ๋น์ฅ ํ์๋กํ์ง๋ ์์๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฌด๋ก ์์ ์ ๋ค์ sram์ ์ฌ๋ฆฌ๋๋ฐ๋ ํฐ ๋ฌธ์ ๊ฐ ์๋ค.
๋์ dram์ด๋ disk ๊ฐ ๊ทธ๋ฅผ ๋ณด์กฐํ๋๊ฒ
์ฌ๊ธฐ์ sram์์ ์๋ง์๊ฑธ ์ฐพ๋๊ฑธ hit์ด๋ผ๊ณ ํ๋ค. miss๋ ๋น์ฐํ ๋์น๊ฑฐ๊ฒ ์ง?
hit ์ / ์ ๊ทผ์๋ or miss ์ / ์ ๊ทผ์๋ ์ด๋ ๊ฒ ๊ตฌํ ์ ์๋ค.
SRAM : ํ๋นํธ์ 6~8ํธ๋์ง์คํฐ, ์ฝ๊ธฐ๋ฅผ ํด๋ ๋นํธ๊ฐ ๋ณํ์ง ์๋๋ค. ์ ๋ณด๋ฅผ ์ ์งํ๋๋ฐ ๋ณ๋ค๋ฅธ ์ ๋ ฅ์ด ๋ค์ง ์๋๋ค. ์๊ฐ๋๋น ๋ฅด๊ณ ์ ๋ ฅ๋ ๋๋จน์ง๋ง ํธ๋์ง์คํฐ๊ฐ ๋ง์ดํ์ํด์ ์ง์ ๋๋ ๊ฐ๊ฒฉ๋ฉด์์ ์ํด๋ค
DRAM : ํ๋นํธ์ ํํธ๋์ง์คํฐ, ์ฝ์ผ๋ฉด ๊ฐ์ด ๋ณํด์ ์ฝ์๋ค์์ ๋ค์์จ์ฃผ๋ ๋ถ์์ ์ธ๊ณผ์ ์ด ํ์ํ๋ค. ์ ๋ณด๋ฅผ ์ ์งํ๋๋ฐ ์ ๋ ฅ์ด ๋ ํ์ํจ. ์ง์ ๋๋๋๊ณ ์๋๋์ค์ํจ ๊ทธ๋์ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ์ฉ๋๋ค
DRAM ์ 2์ฐจ์ ๋ฐฐ์ด๊ตฌ์กฐ๋ก ๋์ด์์ ํ์ค์ฝ๊ณ ๋ค์ ์จ์ฃผ๋ ์์ ์ ์ฐ์์ด๋ค. DDR๊ณผ QDR๋์์. ํ๊ฐ๋ชจ์๋ฆฌ์๋ ์๋ํ๋ค๋์ง, ์์นํ๊ฐ๋ ์ฐ๊ธฐ๋ํ๋ค๋์ง ๋ฑ
FlashMemory : ๊ธฐ๋ณธ์ ์ผ๋ก ROM์ด๋ค (EEPROM : Electrically Erasable Programable ROM) ์ฝ๊ฒ๋งํ๋ฉด ์ง์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ ๋กฌ์. ์ง์ฐ๊ณ ๋ค์์ฐ๋๋ฐฉ์. ๊ทผ๋ฐ ์ฌ๋ฌ๋ฒ ์ง์ฐ๋ฉด ๋ด๊ตฌ๋์ ๋ฌธ์ ๊ฐ์๊ฒจ์ ์ปจํธ๋กค๋ฌ๊ฐ ์ ๋์ ์ผ๋ก ์ง์ธ์ฅ์๋ฅผ ๋ฐ๊ฟ๊ฐ๋ฉด์ํด์ผํจ. NOR๊ณผ NAND๋ฐฉ์์ด ์๋๋ฐ ์ง์ ๋์ ์๋์์ฐจ์ด์. ๊ฒฐ๋ก ์ ์ง์ ๋์ ์น
Disk Memory : ํ๋ํฐ๋์คํฌ. ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋๋๊ฑธ ํค๋๊ฐ ์ฝ๋๊ฑฐ๋ผ ์๋๊ฐ ๋ง์ด ๋๋ฆฌ๋ค. ๋ธ๋ญ๋จ์๋ฅผ ์ค๊ฐ๊ธฐ๊ฐ ์ค๋๊ฑธ๋ฆฌ๋๊น ํ๋ฒ์ฝ์๋ ๋ง์ด์ฝ๋๋ค.
seek time : ์ํ๋ ํธ๋์ผ๋ก ํค๋๊ฐ ์์ง์ด๋์๊ฐ
rotational latency : ํค๋ ๋ฐ์์ ๋์คํฌ๊ฐ ๋๋๋ฐ ๊ฑธ๋ฆฌ๋์๊ฐ
transfer time : ์ฝ์ ๋นํธ์ ๋ธ๋ญ์ ์ ์กํ๋๋ฐ ๊ฑธ๋ฆฌ๋์๊ฐ. transfer time์ ์ค๋๊ฑธ๋ฆฌ์ง ์๋๋ค. ๊ทธ๋๊น ์ฐจ๋ผ๋ฆฌ ํ๋ฒ์ ๋ง์ด์ฝ๋๊ฒ ๋ซ๋ค๋๊ฑฐ์ง
์บ์
์บ์๋ ์ง์ญ์ฑ์ ์์กดํ๋ ๋ฉ๋ชจ๋ฆฌ๋ค. ์๋๋ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์๋๊ฐ ๋น ๋ฅธํธ์ด๊ณ CPU๋ ๋๋ฆฐํธ์ด์์ผ๋ ํ์๊ฐ ์์๋๋ฐ CPU๊ฐ ๋ง์ด ๋นจ๋ผ์ง๊ณ memory๋ ๊ทธ์๋์ ๋ชป๋ฏธ์น๊ฒ๋๋๊น ํ์ํ๊ฒ๋๊ฑฐ.
direct mapped cache
๋ฉ๋ชจ๋ฆฌ์ ๊ตฌํ์ ๋๋์ด ์บ์๋ก ์ฌ๋ ค๋ณด๋ธ๋ค. ์๋ฅผ๋ค์ด ์บ์์๋ 8๊ฐ์ ๋ธ๋ญ์ด ์ฌ๋ผ์ฌ์์๊ณ ๋ฉ๋ชจ๋ฆฌ๋ 32๊ฐ์ ๋ธ๋ญ์ด ์๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ธ๋ญ์ค ์ง์ญ์ฑ์ด ์๋์น๊ตฌ 8๋ธ๋ญ์ ์บ์์ ์ฌ๋ฆฌ๋๊ฑฐ์. ๋ฉ๋ชจ๋ฆฌ๊ฐ 32์๋ฆฌ์ด๋ฏ๋ก 6๋นํธ ์ฃผ์์ฒด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ์บ์์์ฌ๋ผ๊ฐ๋ฉด 3๋นํธ ์ฃผ์์ฒด๊ณ๋ฅผ ๊ฐ๊ฒ๋๊ฒ ์ง. ์บ์์ 3๋นํธ๋ฅผ ๊ทธ๋์ ๋ฉ๋ชจ๋ฆฌ์ ํ์3๋นํธ๋กํด์ค๋ค. ๊ทธ๋ ๊ฒ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์ 32๊ฐ ๋ธ๋ญ์ค 8๊ฐ์ฉ ์๋ผ์ ์๊ฐํ ์ ์์ ์บ์์ ํ ๋ธ๋ญ์ ๋ฉ๋ชจ๋ฆฌ์ 32๊ฐ ๋ธ๋ญ ์ค 4๊ฐ์ ํ๋ณด์ค ํ๋๊ฐ๋๋ค. ์์ 2๊ฐ๋ ํ๊ทธ๋ก ์ด๋ฆํ๋ผ๊ณ ์๊ฐํ๋ฉด๋จ. ์๋ ๋๊ตฌ์ ์ด๋์์น์์์๋ฐ ๋ฅผ ํ์ํด์ฃผ๋๊ฑฐ
TAG : ๋ฉ๋ชจ๋ฆฌ์ฃผ์์ ์์๋นํธ, index๊ฐ ์ ํด์ง๊ณ ๋จ์๋ถ๋ถ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค. ์ด๊ฒ ๋๊ตฌ๊บผ์ผ? ๊ฐ์ ์ด๋ฆํ๊ฐ์์กด์ฌ
cache index : ์บ์์ ์ธ๋ฑ์ค, ์บ์์ ์ฃผ์๊ฐ์๊ฐ๋ . ๊ทธ์น๋ง ์ฃผ์๋์๋!
์์ ์๋ก ๋ค์๋ฉด 32๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ญ์ด 8๊ฐ์ ์บ์์ ๋งคํ๋์ด์ผํ๋ค. ๋ฐ๋ผ์ ์บ์ ์ธ๋ฑ์ค๋ ํ์ 3๋นํธ๊ฐ ๋ ๊ฑฐ๊ณ ๋๋จธ์ง ์์ 2๋นํธ๋ ํ๊ทธ๊ฐ๋๋๊ฑฐ
valid bit : ๋ง์ฝ์ ์์คํ ์ด ๋ง ์ผ์ง์ํ์์ ์บ์๋ฅผ๋ดฃ๋๋ฐ ๊ฑฐ๊ธฐ์ 00๋ฒ์งธ ์ธ๋ฑ์ค์ ๋ฉ๋ชจ๋ฆฌ๊ฐ๋ค์ด ์๋ค๊ณ ์ณ๋ณด์ ๊ทธ๋ผ ๋ง์ฝ์ ์์คํ ์ด 00xxx์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ค๊ณ ๋ค๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ์๋๋ผ ์บ์์ ์ ๊ทผํ ๊ฑฐ๋ค. ๊ฑฐ๊ธฐ์์๋ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์์ง๋ ์์๋..! ๊ทธ๋ฌ๋๊น ์ด๋ฐ๊ฑธ๋ฐฉ์งํ๋ ค๋ฉด ์ด ์ ๋ณด๋ค์ด ์ ํจํ์ง๋ฅผ ๋ํ๋ผ valid bit๊ฐ ํ์ํ๊ฒ. ์ด๊ธฐ์ 0์ผ๋ก ๋์ด์๋ค.
์ผ๋จ index ์ฐพ์๊ฐ๋๊ฑด ๋ง๋๋ฐ ์ฐพ์๊ฐ์ tagํ์ธํ๊ณ validํ์ง๋ ๊ฒ์ฆํด์ผํ๋ค. ์์๊ฐ ์๋์ด๋๋ ์ค๋ผ์ ์ฌ์ด๊ฑฐ์ผ ๋ฐ์ดํธ์ด๋๋ ์ค๋ฉด ์คํ์ ๋ ๊ณ ๋ คํ์ผํ๋ค
64๊ฐ์ ๋ธ๋ฝ์ด์๊ณ ํ ๋ธ๋ญ์ 16๋ฐ์ดํธ๊ฐ ๋ค์ด๊ฐ๋ค๊ณ ํ์. 1204๋ ์ด๋ค ๋ธ๋ญ์ ๋ค์ด๊ฐ์ผํ ๊น?
1204 / 16 = 75 โ 75๋ฒ์งธ ๋ฉ๋ชจ๋ฆฌ๋ธ๋ญ์ด๋ค.
์บ์์๋ 64๊ฐ์ ๋ธ๋ญ์ด ์์ผ๋ฏ๋ก ์บ์์ 11๋ฒ์งธ ๋ธ๋ญ(์ธ๋ฑ์ค)์ ์ฌ๋ผ๊ฐ๊ฒ โ cache index = 11
๊ทธ๋ฌ๊ณ ๋ 4๋ฐ์ดํธ์ดํ๋๊น ํด๋น ์ธ๋ฑ์ค์์๋ 4๋ฒ์งธ ๋ฐ์ดํธ๊ฐ๋์ด์ผํจ โ block offset = 4
75/64 ~= 1 ์ด๋ฏ๋ก 75๋ฒ์งธ๋ธ๋ญ์ ๋๋ฒ์งธ ํ๊ทธ๋ค โ block tag = 1
ํ๊ทธ-์ธ๋ฑ์ค-์คํ์ ์์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์๊ฐ์ ํ๊ทธ๊ฐ ๊ฐ์์ง๋ณด๊ณ validํ์ง ํ์ธํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ํ์ ์คํ์ ์๋ณด๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ธ๋ค. hitํ์ ์ tag๋ valid๋ก ํ๋ค. ํ์บ์์ ํ ์๋๊ฐ ๋ค์ด๊ฐ๋ค๊ณ ์ก์ผ๋ฉด ์ผ์ด ๊ฐ๋จํ๋ฐ, ์ค์ ๋ก ๊ทธ๋ ์ง์๋ค. ํ ๋ธ๋ญ์ ์ฌ๋ฌ ์๋๊ฐ ๋ค์ด๊ฐ๋๊น ๋ธ๋ญ์ ํด๋นํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ mux๋ก ์ ํํด์ผํจ. ์ด ๋ ์ ํํ๋๊ฑด block offset์ด ๋๊ฒ ์ง. ๊ฐ์ ธ์์ ๊ทธ ํ์๋จ์์ ๋ฝ์๋ด๋๊ฑด ๋์ผํ๋ฐฉ์์.
์ ๋ฆฌํ์๋ฉด direct mapped chache์์ ์ฃผ์๋ tag, index, block offset, byte offset์ผ๋ก ๊ตฌ์ฑ๋๊ณ validbit์ ์ถ๊ฐ์ ์ผ๋ก ์บ์์์๋๊ฑฐ๋๊น ์ฌ์ค ์ฃผ์๋์ ๋ฌด๊ดํ๊ฑฐ๋ค.
์บ์์ฌ์ด์ฆ๊ฐ 2^n๋ธ๋ญ์ด๋ผ๋ฉด n๋นํธ๊ฐ ์ธ๋ฑ์ค๋ก ์ฐ์ธ๋ค(n์ด๋ฉด log2n๋งํผ์ ์ธ๋ฑ์ค๋นํธ๊ฐ ํ์)
๋ธ๋ญ์ 2^m๊ฐ์ ์๋๊ฐ๋ค์ด๊ฐ๋ค๋ฉด m๋นํธ๊ฐ ์คํ์ ์ผ๋ก ์ฐ์ธ๋ค.
์ถ๊ฐ๋ก ๋ธ๋ญ์๋ 2^(m+2)๊ฐ์ ๋ฐ์ดํธ, 2^(m+5)๊ฐ์ ๋นํธ๊ฐ ๋ค์ด๊ฐ ์ ์๋ค.
๋ ๊ฐ ์๋๋ 2๊ฐ์ ๋ฐ์ดํธ์คํ์ ์ด ํ์ํ๋ค. 4๋ฐ์ดํธ์ค ์ ํ์ ํด์ผํจ.
ํ๊ทธ๋นํธ๋ ์ธ๋ฑ์ค์ ์คํ์ ์ ์ ์ธํ ๋๋จธ์ง. 64๋นํธ ์ค ์บ์์ธ๋ฑ์ค n๊ฐ, ๋ธ๋ญ์คํ์ m, ๋ฐ์ดํธ์คํ์ 2๊ฐ๋ฅผ ์ ์ธํด์ฃผ๋ฉด ํ๊ทธ๋นํธ๊ฐ๋จ
์บ์์ 2^n๊ฐ์ ๋ธ๋ญ์ด์๊ณ , ์ด๋ ๊ฐ๊ฐ 2^(m+5)๊ฐ์ ๋นํธ๊ฐ ๋ค์ด๊ฐ๊ณ , ํ๊ทธ๋นํธ (64 - (n + m + 2), ์ถ๊ฐ๋ก valid bit 1๋นํธ๊ฐ ๋ค์ด๊ฐ๋ค. ๋ฐ๋ผ์ ์บ์์์๋ ์ด ๋นํธ์ ์๋
2^n๋ธ๋ญ * (2^(m + 32)๋ธ๋ญ๋น๋นํธ + (64-(n + m + 2))ํ๊ทธ๋นํธ + 1(๋ฐ๋ฆฌ๋๋นํธ))
์บ์๋ฏธ์ค๋ฅผ ์ฒ๋ฆฌํ๋๋ฐฉ๋ฒ : hit์์๋ ๋ฌธ์ ๊ฐ ์๋์ง๋ง ๋ง์ฝ์ miss๊ฐ ๋ฐ์ํ๋ฉด ์บ์ ๋ด์์ ํด๊ฒฐํ ์ ์๊ฒ๋๋ค ๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ์๊ฐ์ ์ฝ์ด์์ผํจ. ๊ทธ ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ด์ค๋ ๊ณผ์ ์์ฒด๊ฐ ์ํด๋ค. ์ฝ๋๊ฑธ๋ก ๋๋ ๊ฒ์๋๋ผ ์ง์ญ์ฑ์ ์ ์งํ๊ธฐ์ํด ๋ ๋ธ๋ญ์ ๊ฐ์ ธ์ค๊ธฐ๋ ํด์ผํจ. ๋ค ๊ฐ์ ธ์์ ๋ชปํ๋ ์์ ์ ์ฒ๋ฆฌํด์ฃผ๋ฉด ๋๋๋ค. (๊ฐ์๋ฉ๋ชจ๋ฆฌ์์ page fault์ ํด๋นํ๋๋ถ๋ถ)
์บ์์ ๋ฌธ์ ์ : ์บ์๋ฅผ ์ฝ๋๊ฑด ๋ฌธ์ ๊ฐ์๋๋ฐ ๋ง์ฝ์ ์บ์๋ฅผ ์ฐ๋๊ฑด? ์บ์์ ์ฐ๋๊ฑด ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ์๋ ๊ธฐ๋ก์ด ์๋๋ค. ๊ทธ๋ผ ์บ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ก ๋ฌ๋ผ์ง๊ฒ๋๋๋ฐ..
ํด๊ฒฐ๋ฐฉ๋ฒ 1 write through : ์บ์์ ์ธ ๋๋ ๋ฉ๋ชจ๋ฆฌ์๋ ์ฆ๊ฐ ์จ์ฃผ์ โ ๊ทธ๋ผ ๋ญํ๋ฌ ์บ์์ ์กด๋์ค๋๊ฑธ๋ฆดํ ๋ฐ
ํด๊ฒฐ๋ฐฉ๋ฒ 2 write back : ๋ฉ๋ชจ๋ฆฌ์ ์์จ์ค๋ ์ด์งํผ ์ง์ญ์ฑ๋๋ฌธ์ ์บ์ ๋ด๋ถ์์๋ง ๋ํ ๋๊น ๋น์ฅ์ ๋ฌธ์ ๊ฐ์๋๋ค. ํน์ ์์ ์ ๋ฉ๋ชจ๋ฆฌ์๋ ์ ์ฉ์ํด์ฃผ์. โ ๊ทธ๋๋ง ์ด๊ฒ ํฉ๋ฆฌ์ ์ด๋ค
write buffer : ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์ฌ์ ธ์ผํ ๋ฐ์ดํฐ๋ฅผ write buffer์ ์์์ ์ฅํด ์์ฐจ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์๋ ์จ์ค๋ค. ๊ทธ๋ผ ๋ฉ์ถค์์ด ๊ณ์ ์๋ํ ์ ์๋ค. ๋ฒํผ๊ฐ ๊ฝ์ฐจ์ง๋ง ์์ผ๋ฉด.. ํ์ํ๊ฑธ ์ฐพ์ ๋ ๋ฒํผ๋ ํ๋ฒ ํ์ธํด์ฃผ๋ ์์ผ๋ก ํ๋ฉด ๋๋ค.
write back : ์ผ๋จ ์บ์์์๋ง ๋๊ณ ๋ณ๊ฒฝ๋์ผํ ๊ฑฐ๋ ๋ณ๋๋ก ํ์ํด์ฃผ๊ณ (dirty bit) ์บ์๊ฐ ๋ณ๊ฒฝ๋๋ ์์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ก ํ๋ฒ์ ์จ์ฃผ์ โ ๊ทธ๋๋ ๊ทธ๋๋ง ๊ด์ฐฎ์๋ฐฉ๋ฒ
์บ์ ๋ธ๋ฝ์ ํด์๋ก ์ข์ํธ์ด๋ค. ์ง์ญ์ฑ์ด ๊ทน๋ํ๋ผ์ miss rate๊ฐ ์ค์ด๋๋๊น. ๊ทผ๋ฐ ๊ทธ๋ ๋ค๊ณ ๋ง ํค์ธ์๋์๋๊ฒ ๋ธ๋ฝ์ด ์ปค์ง๋ฉด ์ปค์ง์๋ก miss์์ ํ๋ํฐ๊ฐ ์ปค์ง๋ค. ๊ฒฐ๊ตญ์ ์ด๋์ ๋ ์ ์ถฉํด์ ๊ด์ฐฎ์ ์ง์ ์ ์ฐพ๋๊ฒ์ด ์ค์ํจ.
์บ์ํผํฌ๋จผ์ค : ์ฐ๋ฆฌ๊ฐ์ป๋ CPUT = IC * CPI * CCT๋ ์ฌ์ค miss๊ฐ ์ ํ ์๋ ๋์ ์์ฃผ ์ด์์ ์ธ ๊ฒฝ์ฐ์ ์ค์ ๋ก miss๊ฐ ๋ฐ์ํ๋ค
RISC-V์ ํน์ฑ์ ๋ชจ๋ instruction์ fetchํ๋ฒ์ ๋ณด์ฅ์ด๊ณ , ld๋ sd์ ๊ฒฝ์ฐ๋ง ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ์ ์ถ๊ฐ๋ก ์ ๊ทผํ๋ค. ์ฆ ld๋ sd๋ 2๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ทผ, ์ด์ธ์ ๋ชจ๋ ์ธ์คํธ๋ญ์ ์ ํ๋ฒ ์ ๊ทผํ๋ค๋๊ฑฐ
๋ฌํํ๊ฒ ๊ณ์ฐํด๋ด ์๋ค
miss rate๊ฐ 2%์ธ๋ฐ miss penalty๊ฐ 100cycle์ธ ๊ฒฝ์ฐ 2%ํ๋ฅ ๋ก 100์ฆ๊ฐ์ด๋ฏ๋ก ํ๊ท ์ ์ผ๋ก miss ๋ฐ์์ 2์ฌ์ดํด์ด ์ถ๊ฐ๋ก ํ์ํ๊ฒ๋๋ค.
์์ I๋ 2%์ ๋ฏธ์คํ๋ฅ , D๋ 4%์ ํ๋ฅ ์ ๊ฐ๊ณ , ๊ฐ ๋ฏธ์ค๋ 100์ฌ์ดํด์ ์ํด๊ฐ ์๊ธด๋ค. ์๋ฒฝํ ์บ์๋์์์ CPI๋ 2์ด๋ฉฐ load์ store๋ ์ ์ฒด 36%์ ๋น์ค์ ๊ฐ์ง ๋ ์ด๋ป๊ฒ๋ ๊น์? ์ผ๋จ ๋ชจ๋ ์ธ์คํธ๋ญ์ ์๋ํด ํ๊ท 2์ฌ์ดํด์ด ์ฆ๊ฐํ๊ณ ld๋ sd์๋ํด์๋ 4๊ฐ ๋ ์ฆ๊ฐํ๋ค. ๊ทธ๋ฐ๋ฐ ld์ sd๋ 36%๋ฅผ ์ฐจ์งํ๋ฏ๋ก 0.36 * 4 ๋งํผ ๋ ์ฆ๊ฐ์ํฌ๊ฒ ์ฆ ์์ฃผ ํ๊ท ์ ์ผ๋ก miss๊ฐ๋๋ฉด 3.44๋งํผ์ ํจ๋ํฐ๊ฐ ๋ฐ์ํ๋ค๊ณ ๋ณผ ์์๋ค. ์๋ CPI๊ฐ 2์์ผ๋๊น ํจ๋ํฐ ๊ณ์ฐ๋ CPI๋ 5.44๊ฐ๋๋ค.
์กด๋ ๊ฐ์ํด์ฒ๋ผ๋ณด์ด์ง๋ง ์บ์๋ฅผ ์์ฐ๋๊ฑฐ๋ณด๋จ ํจ ๋ซ๋ค. ์บ์๊ฐ ์์๋๋ฐ์ํ๋ ์๊ฐ์ miss์ ๋์ผํ๋ค๊ณ ๋ณผ ์์์ผ๋ ๊ทธ๋ ๊ฒ ๊ณ์ฐ์ํ๋ฉด 200 + 0.36 * 400์ผ๋ก ํ๊ท 344์ฌ์ดํด์ด ์ฆ๊ฐํ๊ฒ๋๋ค. ์ด๊ฒ๋๋ผ๋?
CPU์ ์ฑ๋ฅ์ด ์ข์์ง๋ฉด ๋ฏธ์ค ํ๋ํฐ์ ์ค์๋๊ฐ ์ปค์ง๊ฒ๋๋ค. CPU๋ ๋น ๋ฅด๊ฒ๋์ํ๋๋ฐ ๋ฉ๋ชจ๋ฆฌ๋ ๊ทธ๋๋ก๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๋ฌ๊ฐ๋ ์ค๋ฒํค๋๋์์ CPU๊ฐ ์ํด๋ณด๋๊ฒ ์๋์ ์ผ๋ก ๋ง์์ง๋๊น ํจ๋ํฐ๊ฐ ์๋์ ์ผ๋ก ์ปค์ง๋ค.
CPI๋ฅผ ์ค์ด๋ฉด stall๋ก ๋ฐ์ํ๋ ์๊ฐ์ ๋น์ค์ด ์ปค์ง๋ค. ํจ๋ํฐ๊ฐ ์๋์ ์ผ๋ก ์ปค์ง๋ค.
clock์ ์ฌ๋ฆฐ๋ค โ ๋ฉ๋ชจ๋ฆฌ๋ ๊ทธ๋๋ก๋๊น ํจ๋ํฐ๊ฐ ์ปค์ง
์บ์์ฑ๋ฅ์ ์ฌ๋ฆฌ๊ธฐ : ๋ฏธ์ค์จ์ค์ด๊ธฐ (์ด์์ ํฐ๋ธ), ๋ฏธ์คํจ๋ํฐ์ค์ด๊ธฐ(๋ฉํฐ๋ ๋ฒจ), ํํธํ์์ค์ด๊ธฐ
associative cache
์บ์๋ ์ฌ์ค ๊ฒฝ์์์ ์์ ํ์ง ๋ชปํ๋ค. ์๋ฌด๋ฆฌ ์ง์ญ์ฑ์ด ์๋๋ผ๋ ๊ฒฝ์์ ๊ฐ๋ฅ์ฑ์ ์๋ค. ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ ์๋ ๋จ์ด์ ธ์๊ณ ํ๋ค๋ณด๋ ์๋ค๋ฆฌ์๋ง์ผ๋ฉด ๊ณจ๋ก๊ฐ๋๊ฑฐ์ ์ํํธ์จ์ด๊ฐ ์ฒ๋ฆฌํ ์ ์๊ธดํ๋ค๊ณ ํจ.
๊ฐ ๊ตฌํ์ด ๊ฒฝ์ํ์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด, ํ index์ ์ฌ๋ฌ ๋ธ๋ญ์ด ์ฌ๋ผ๊ฐ๋๋ก ํ๋ฉด ๋๋ค๋๊ฑฐ์ (ํ set์ ์ฌ๋ฌ entry)
n๊ฐ ๋ธ๋ญ์ ํ์ธ๋ฑ์ค์ ๋ฌถ์ผ๋ฉด n-way associative
๋ชจ๋๋ค ๋ฌถ์ด๋ฒ๋ฆฌ๋ฉด fully associative๊ฐ ๋๋ค.
associativeํ๊ฒ ์บ์๋ฅผ ๊ด๋ฆฌํ๊ฒ๋๋ฉด ๊ฐ์ ์ธ๋ฑ์ค์์๋ ์ด๋ค ๋ธ๋ญ์ ๊ณ ๋ฅผ์ง๊ฐ ๊ฒฐ์ ๋์ด์ผํ๋ค. ๊ทธ๋๊น์๋ ์ธ๋ฑ์ค์ฃผ๋ฉด ์ฐพ์๊ฐ์ tag๊ฐ๊ณ validํ๋ฉด hit์ด์์ง๋ง
์ด์ฌ๋ indexํ๊ณ ๊ฐ์ tag๋ค๋ก ์ด๋ค๋ธ๋ญ์ธ์ง ๊ณ ๋ฅด๊ณ validํ์ง๋ ํ์ธํด์ผํ๋ n์ด ๋์ด๋ ์๋ก ๊ทธ ๊ณผ์ ์ด ๋ณต์กํด์ง๋๊ฒ.
fully associative๋ ์ ์ด์ ์ธ๋ฑ์ค๊ฐ ์๋ฏธ์์ด์ง๋ ์ํฉ์ด๋์ด๋ฒ๋ฆผ.
์์์ ๋ณด๋ฏ์ด associative๋ฅผ ์ฐ๋ฉด ๋ฏธ์คํ๋ฅ ์ ์ค์ผ ์ ์๋ค. ๊ทผ๋ฐ ๋ง 0์ผ๋ก ์๋ ดํ๋๊ฑด์๋๊ณ ์ด๋์ ๋ ํ๊ณ๋ ์์. ์ด๊ฒ๋ ์ ๋นํํด์ผ์ง ์ผ๋ฐ..
์ด๋ ๊ฒ ํ ์ธ๋ฑ์ค์ ์ฌ๋ฌ๊ฐ์ ๋ธ๋ญ์ ๋๋ ค๋ฉด ์ฌ๋ฌ ๋ธ๋ญ๋ง๋ค valid์ tag๊ฐ ๋ฐ๋ก๋ถ์ด์ผํ๋ ์บ์ ์ฌ์ด์ฆ๋ ๋ ์ปค์ผํจ. ๋ ํ๊ทธ๋ฅผ ๋ค ๋น๊ตํด์ผํ๋๊น ํ๋์จ์ด์ ์ผ๋ก๋ ๋ง์ด ๋ณต์กํด์ง
direct map : ์ธ๋ฑ์ค์ ํ ํ๊ทธ valid ํ์ธ
associative map : ์ ์ ํ ํ๊ทธ๋น๊ตํ๋ฉฐ ์๋ง์๊ฒ ๊ฒ์ valid ํ์ธ
๊ต์ฒด : ๋ง์ฝ ๋ฏธ์ค๊ฐ ๋ฐ์ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ ธ์์ ์บ์๋ฅผ ๊ต์ฒดํด์ฃผ์ด์ผํ๋๋ฐ ๊ทธ ๊ท์น์ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ?
Direct mapped์์๋ ์ ํ๊ถ์ด ์๋ค. ๊ทธ์น๋ง associative์์๋ validํ์ง ์์ ์น๊ตฌ๋ง ๊ต์ฒดํด์ฃผ๋ฉด ๋๋ค.
LRU : least recently used ์ ์ผ ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์๊ฒ์ ๋ฐ๊พผ๋ค. ์ง์ญ์ฑ์ ์๊ฐํ๋ฉด ์ด๊ฒ ์๋จนํ๊ฑฐ ๊ทผ๋ฐ ์ด ์์ ๊ฐ์๊ฑธ ๊ธฐ๋กํ๋ ์ค๋ฒํค๋๊ฐ ์๊ฐ๋ณด๋ค ํฌ๋ค
random : ๊ฑ ๊ทธ๋ฐ๊ฑฐ ๋ฐ์ง์ง๋ง๊ณ ์๋ฌด๊ฑฐ๋๋ฒ๋ ค โ ์๊ฐ๋ณด๋ค ํจ์จ ๋์์ง์์ LRU ์ ๋น๋ฒผ๋ณผ๋งํ๋ค.
๋ฉํฐ๋ ๋ฒจ ์บ์ : ์บ์์์๋ ์ด๋ป๊ฒ๋ ๊ณ์ธต์ ๋๋ ๋ณด๋ฉด ์ด๋์ด ์์ง ์์๊น? โ ์กฐ๊ธ์ด๋ผ๋ ๋ฏธ์ค์จ์ ๋ฎ์ถ๊ธฐ์ํด์, ์บ์๋ ๋น ๋ฅธ๊ฒ๊ณผ ๋๋ฆฐ๊ฒ์๋๋ ์ ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑํ์. ๋น์ฐํ ์๋จ์ ์๋๊ฐ ์ต๊ณก ๋ฐ์ผ๋ก๊ฐ์๋ก ํฌ๊ธฐ๊ฐ ์ค์ํด์ง๋ค.
level 1์์๋ ์๊ฐ์ ์ต์ํ ํ๊ณ (minimal hit time, smaller cache size, block size), level-2์์๋ l1๋ณด๋ค ์ฌ์ด์ฆ๋ํฌ๊ณ associativeํ๊ฒ ํด์ ๋ฏธ์คํจ๋ํฐ์ ๋ฏธ์ค์จ์ ์ต๋ํ์ผ๋ก ์ค์ธ๋ค.
๊ฐ์๋ฉ๋ชจ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ๋ฅผ ์บ์์ฒ๋ผ, ๋์คํฌ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ๋ํด๋ณด์. ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ค. ๊ฐ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ๊ฒน์ณ์ง์๋์๊ณ ๋ณต์กํจ. ํ๋ก๊ทธ๋จ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ๋ ํ์ํ๋ค. cpu๋ OS๋ ๊ฐ์์ ์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ฃผ์๋ก ๋งค๊ฐํด์ค๋ค. ๋ธ๋ฝ๊ด๋ฆฌํ๋ฏ page๋ผ๋ ๋จ์๋ฅผ ๊ด๋ฆฌํจ.
์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์ ์คํ๋ ๋ ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ถฉ๋๋ ๋ง๋๋ค. ๋์คํฌ์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ ํ์ด์ง๋ค์ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ๋งคํ๋์ด ๋์ํ๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์์๋ pagefault๊ฐ ๋ฐ์ํค์ ๋์คํฌ์์ ์ฐพ๋๋กํ๋ค.
ํ์ด์ง์์ ์ ๋ณด๋ค์๊ทธ๋๋ก์๋ค. ์ด๋ค ํ์ด์ง๊ฐ ์ฌ์ง๋ง ๋ณํ๋ค.
ํ์ด์ง๋ 4kb์ด๋ค. ์ฆ 2^12๋งํผ์ด ํ์ด์ง๋ก ๋จ์ด์ ธ ๋๊ฐ๊ณ ๋๋จธ์ง๊ฐ ํ์ด์ง ๋ฒํธ๊ฐ๋๋ค. (์ธ๋ฑ์ค์ ํ๊ทธ ์ ํ๋ฏ) ๊ทธ๋ผ ์ค์ ๋ฉ๋ชจ๋ฆฌ์๋ ํ์ด์ง์ ํ์ด์ง ๋ฒํธ๊ฐ ์ฌ๋ผ๊ฐ๊ฒ๋๋ค..?
ํ์ด์งํดํธ : ํ์ด์ง๋ฅผ ์ฐพ์ง๋ชปํ๋ ๊ฒฝ์ฐ. cache์ ๋ฉ๋ชจ๋ฆฌ์ฌ์ด์์๋ ์๊ฐ์ด ๋ง์ด ์์๋์ง์์์ ๊ทธ๋ฅ ๊ธฐ๋ค๋ฆฌ์ง๋ง ๋์คํฌ๋ ์กด๋๋๋ฆฌ๋ค. ๊ทธ๊ฑฐ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ๋ ๋ ๋ฐค ์๊ธฐ๋๋ฌธ์ ์๊ธฐ๋ฌ๋ฆฌ๊ณ ๋ค๋ฅธ์ผ์ํ๋ค๊ฐ ๋์์จ๋ค. ์ฐ๋ฆฌ๊ฐ ์์ธ์ฒ๋ฆฌ์คํ๋
ํ์ด์งํ ์ด๋ธ : ๋ฐฐ์น์ ๋ณด๊ฐ ๊ธฐ๋ก๋๋ค. ๊ฐ์ ํ์ด์ง ์์ ๋ฐฐ์ด.
ํ์ด์งํ ์ด๋ธ๋ ์ง์คํฐ๋ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ํ์ด์งํ ์ด๋ธ์ ์์์ ์ ๊ฐ๋ฆฌํจ๋ค.
ํ์ด์งํ ์ด๋ธ์๋ ๋ฌผ๋ฆฌ์ ์ธ ํ์ด์ง๋ฒํธ์ ๋ค๋ฅธ ์ํ๋นํธ๋ค (๋ ํผ๋ฐ์ค, ๋ํฐ๋นํธ Valid bit ๋ฑ)์ด ๋ค์ด๊ฐ๋ค.
๋์คํฌ์์๋ ์ค์๊ณต๊ฐ์ด๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
ํ์ด์งํ ์ด๋ธ์์ ์คํ์ ์ ๊ทธ๋๋ก๊ฐ๊ณ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๊ฐ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ก ๋ฒ์ญ์ด๋๋ค. ๊ทธ๋์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ฃผ์ด์ง๋ฉด ํ์ด์งํ ์ด๋ธ์์ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์๋์ง ํ์ธํ๊ณ ์์ผ๋ฉด ๋์คํฌ๋ก ๊ฐ๋๊ฒ?
review
์บ์์์ ๋ธ๋ฝ โ ํ์ด์ง
์บ์์์ ๋ฏธ์ค โ ํ์ด์งํดํธ
๊ฐ์์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ฃผ์๋ก ๋ณ๊ฒฝ ์ฃผ์๋ณํ๊ณผ์ ์ ๊ฐ์ํ์ด์ง๋ฅผ ๋ฌผ๋ฆฌํ์ด์ง๋ก ๋ฐ๊พธ๋๊ฒ ๋ค๋ค
ํ์ด์ง๊ต์ฒด
์บ์์์๋ associative์์๋ ๊ฒฐ์ ์ ๋ฌธ์ ๊ฐ ์๊ฒผ์๋ค.
LRU : ํ์ด์งํดํธํ๋ฅ ์ ์ค์ธ๋ค. reference bit๋ฅผ ํ์ฉํด ํ์ธํ๋ค. ์ด์์ฒด์ ๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก 0์ผ๋ก ๋ง๋ค๊ณ , ๊ทธ ํ์ด์ง๋ฅผ ์ฌ์ฉํ๋ฉด 1์ผ๋ก๋ฐ๊พธ๊ฒํด์ 1์ธ๊ฒ ์ต๊ทผ์ ์ฌ์ฉ๋๊ฑฐ๋๊น ์ด๋ฆฌ๊ณ ์๋๋ฉด ์ฃฝ์ด๋๊ฑฐ. ๋๋ฆ ์ฝ๊ฒ ๊ตฌํํ๋ฐฉ๋ฒ์ด๋ค. reference bit๊ฐ 0์ธ๊ฑธ ์ ๊ฑฐํด์ค๋ค. ์ฆ ํ์ด์ง ์ํธ๋ฆฌ๋ง๋ค ํ๋์ฉ์์ด์ผํจ.
๋์คํฌ์ ์ฐ๊ธฐ๋ฌธ์ : write-buffer์ ํ๋๊ฑด ํ์ค์ ์ด์ง ๋ชปํ๋ค. ๊ฑฐ์ write back์ ์ฌ์ฉํ๋ค. ๊ทธ๋ฌ๋๊น ๋ํฐ๋นํธ๋ ์์ด์ผํจ. write์ ๋จ์๋ page์ด๋ค.
ํ์ด์งํ ์ด๋ธ์ ์ฐธ์กฐ โ ํ์ด์งํ ์ด๋ธ์ ๋ฉ๋ชจ๋ฆฌ์์๋ค.
ld์ธ์คํธ๋ญ์ ์ ์ฃผ์๋ ๊ฐ์์ฃผ์์ด๋คโฆ ์ง์ง์ ๊ทผํ๋ ค๋ฉด ๋ฌผ๋ฆฌ์ฃผ์๋ฅผ๊ฐ์ง๊ณ ์บ์๋ฅผ๊ฐ์ผํจ.. ๊ทธ๋ผ ํ์ด์งํ ์ด๋ธ์ ์ฐธ์กฐํด์ผํ๊ณ ํ์ด์งํ ์ด๋ธ์ ๋ฉ๋ชจ๋ฆฌ์์๋ค..๊ทธ๋ผ ld๊ณผ์ ์์
ํ์ด์งํ ์ด๋ธ๋ณด๋ฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ๊ณ
๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ฅผ๊ฐ๊ณ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์์ ๊ทผํด์ผํจ
ld๋ ์ฌ์ค ์ต์ ์๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ์ 4๋ฒ์๊ฐ์ผํ๋ค.
์ธ์คํธ๋ญ์ fetch ํ์ด์งํ ์ด๋ธ์ฐธ์กฐโ์ธ์คํธ๋ญ์ fetchโ๋ฉ๋ชจ๋ฆฌ์ ๊ทผ ํ์ด์งํ ์ด๋ธ์ฐธ์กฐโ๋ฉ๋ชจ๋ฆฌ์ ๊ทผ
์บ์๋ 90๋ชํผํ๋ฅ ๋ก ๋ฐฉ์ด๊ฐ๋๋๊น ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ฐ๋ํ๋ฅ ์ด ๋ ์ปธ๋ค.
ํ์ด์งํ ์ด๋ธ๋ก ๊ฐ๋๊ฒ๋ ์ต๋ํ ์ค์ผ์์๋ฐ
๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์์ธ์ค๋ ๋๋ฐฐ๊ฐ ์ ๋ฐ๋ ์๋์๋ค. ํ์ด์งํ ์ด๋ธ๋๋ฌธ์.. (์ฃผ์๋ฅผ์ป๊ธฐ์ํด, ์ค์ ์ ๊ทผ์์ํด)
ํํ์ด์ง๊ฐ 4kb๋๊น ํ ํ์ด์ง์๋ k๊ฐ์ ์ธ์คํธ๋ญ์ ์ด์๋ค.. โ ์ฌ๋ฌ๋ฒ ํ์ด์งํ ์ด๋ธ ๊ฐ๋ดค์ ๋๊ฐ์ ํ์ด์ง๋ก ๊ฐ๊ฐ๋ฅ์ฑ์ดํฌ๋ค. ์ฐ๋ฆฌ๊ฐ ๊ณ์๋งํ๋ ์ง์ญ์ฑ์ด ์์ผ๋๊น.
์ง์ญ์ฑ์ด ์๊ฐ๋ณด๋ค ์กด๋๊ฒ ์ปค์ง๋ค 4kb๋ ๋๋๊น.
TLB (Translation Lookaside Buffer): ํ์ด์งํ ์ด๋ธ์ ์ง์ญ์ฑ์ด ์กด๋ํฌ๋ค. ํ์ด์งํ ์ด๋ธ๋ ํน๋ณํ ์บ์๋ฅผ ๋ง๋ค์ด์ ์ด๋ค ๊ฐ์๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ธ์ง๋ฅผ ํ์ํด๋๋ค. ๊ทธ๋ผ ๋ณํ๊ณผ์ ์ด ์กด๋ ์งง์์ง๋ค.
ํ์ด์งํ ์ด๋ธ์ ๋ฉ๋ชจ๋ฆฌ์๋ฌ๋์ข์ง๋ง ์ด์งํผ ์ง์ญ์ฑ์ดํฌ๋๊น ๋ค์ํ ํ์ด์ง๋ฅผ ๋ณด์ง๋ ์์๊ฑฐ๋ค. ๊ทธ๋๊น ์ผ๋ถ ํ์ด์ง๋ง์ด๋ผ๋ ํ ์ด๋ธ์ ๋ณด๋ฅผ ํน๋ณํ ์บ์์ ๋๋ฉด ์ข ์ฑ๋ฅ์ ํฅ์์ ๊ธฐ๋ํ ์ ์๋ค๋๊ฑฐ์ง. TLB๋ฅผ ํตํด ํ์ด์ง๊ฒ์์ ๋นจ๋ฆฌํ ์์๋ค.
TLB ์ฌ์ด์ฆ๋ ์๊ฐ๋ณด๋ค ์๋ค. page๊ฐ์๊ณต๊ฐ์ง์ญ์ฑ์ ํฌ์ง ์๋ค. ๊ตณ์ด ๋ธ๋ฝ์์ฌ์ด์ฆ๋ฅผ ํค์ธํ์๋ ์๋ค. 1~2๊ฐ์ ํ์ด์ง๋ง ๊ฐ์ง๊ณ ์์ด๋๋๋ค.
์บ์๋๊น ์ด์งํผ hit์ด๋ฉด ์งง๊ณ , fault๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ผํ๋๊น 10~100์ ๋
๋ฏธ์ค๋ ํ๋ฅ ์๊ฑฐ์์๋ค 0.01~1%์ ๋
๊ฐ์์ฃผ์๋ฅผ ๋ฌผ๋ฆฌ์ฃผ์๋ก ๋ฐ๊ฟ ๋ ๊ฐ์์ฃผ์๋ฅผ ๋๋์ด์ ํ์ด์ง๋ฒํธ์ ํ์ด์ง ์คํ์ ์ผ๋ก ๋ฐ๊พผ๋ค. ํ์ด์ง๋๋ฒ๋ง ๊ฐ์โ๋ฌผ๋ฆฌ๋ณํ์ ํ๋ค. ์ธ๋ฑ์ค๋ง๊ฐ์ง๊ณ ์ผ๋จ ์ฐพ์๊ฐ๋ฏ ์ผ๋จ ํ์ด์ง๋๋ฒ๋ง ๊ฐ์ง๊ณ ํ์ด์งํ ์ด๋ธ์๊ฐ๋ค. ๊ทธ๋ผ ๊ฑฐ๊ธฐ์ ๋ฌผ๋ฆฌ ํ์ด์ง ๋๋ฒ๊ฐ ์๋คโ ๊ทธ๊ฑธ๋ก ์ง์ง ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ค. ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์๊ฐ์ ํ์ด์ง์คํ์ ์ผ๋ก ์ด๋์ ์ ๊ทผํ ์ง๊ฐ ์ ํด์ง๋ค.
๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ ์๋๊ฑด ๋์คํฌ์์๋ค๋๊ฑฐ. ํ์ด์ง๊ฐ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์์๋ค
TLB์์๋ ๊ฐ์ํ์ด์ง์ ๋ฌผ๋ฆฌํ์ด์ง์ฃผ์๋ฅผ ํ๋ก ๊ฐ์ง๊ณ ์์
์ฌ๊ธฐ์๋ ์ํธ๋ฆฌ 7๊ฐ, ์ฆ 7๊ฐ์ ํ์ด์ง์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์. ๋จ์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ง๊ฐ์ ธ์ค๋๊ฒ์๋๋ผ ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ ๊ฐ์ด๋ค๊ณ ์์ ๋งคํํด๋์๋ค. ์ฐพ์๋๋ ๋ชจ๋ ์ํธ๋ฆฌ๋ฅผ ๋์์ ๊ทผํด์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ก ๋งค์นญ๋๋๊ฑธ ์ฐพ์์ ๋ฐ๋ก ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ๋ก ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ค. โ fully associative
TLB๋ ์ผ์ข ์ fully associative cache์ฒ๋ผ ์๋ํ๋ค!!!
fully๋ ์บ์์์ ์ค์ฉ์ ์ผ๋ก ์ ์์ฐ์ด๋๋ฐ๋ ๋ค๋ค๋์ด์ ๋ TLB์ฒ๋ผ ํน์ํ ์บ์์์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ด๋ค
๋ฐ๋ก ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐพ์์์๊ฒ ๋ง๋ ๊ฒ!
ํน์ํ์บ์์์ ์ฐ์ธ๋ค๊ณ ํ๋์ด์ ๊ฐ ์ด๊ฑฐ์๋ค.
ADD๋ ์๋ ํ๋ฒ, ๊ทผ๋ฐ ๊ฐ์๋ฉ๋ชจ๋ฆฌ์ฌ์ฉํ๋ฉด ์ต์ ์ ๊ฒฝ์ฐ ๋๋ฒ.. ๊ทผ๋ฐ TLB๊ฐ ์๋ค. ์๋๋ฉด cache๋ ์๊ณ
์ต์ด๋ก ์ฃผ์ด์ง๋๊ฑด ๊ฐ์์ฃผ์๋ค. (instruction์ ์ฃผ์ด์ง๋๊ฒ ๊ฐ์์ฃผ์์)
ํ์ด์ง์คํ์ ์ ๋๊ณ , ํ์ด์ง๋๋ฒ๋ฅผ ๋ณํ์์ผ์ TLB์์ ์ผ๊ด ํ์ํ๋ค(fully associative)
๋งค์น๊ฐ ๋๋ค๋ฉด ๋ฐ๋ก ์ง์ง์ด์ง ๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ฃผ์์ ํ์ด์ง์คํ์ ์ ๋ํด์ฃผ๋ฉด ๋ฌผ๋ฆฌ์ฃผ์๊ฐ๋๋ค.
์ธ์คํธ๋ญ์ ์ ๊ฐ์์ฃผ์๊ฐ ๋ฌผ๋ฆฌ์ฃผ์๋ก ๋ฐ๋๋ ๊ณผ์ ์์ TLB๊ฐ ํ์ํ๊ฒ.
๊ทธ๋ผ ์ด๋ ๊ฒ ๋ง๋ค์ด์ง ๋ฌผ๋ฆฌ์ฃผ์๋ก cache๋ฅผ ํ์ธํด๋ด์ผํ๋ค. ์ด๋ฒ์ ์ฃผ์์ ์บ์์ธ๋ฑ์ค๋ก ์บ์์๊ฐ์ ํด๋น ์ธ๋ฑ์ค์ tag์ valid๋ฅผ ํ์ธํ๋ค.
์์ํ๋ค๋ฉด ๊ฐ์ ธ์์ ์ด๋ค.
๊ฐ์๋ฉ๋ชจ๋ฆฌ๊น์ง ๊ณ ๋ คํ๊ฒ ์ด๋ ๊ฒ ํด๊ฒฐ๋๋ค!
์กฑ๋ณด
์บ์์ ์ฑ๋ฅํฅ์
associative cache์ ์ฌ์ฉ โ ํ ์ธ๋ฑ์ค์ ์ฌ๋ฌ ๋ธ๋ญ์ ๊ฐ์ง๊ฒ๋๋ฏ๋ก miss rate๋ฅผ ์ค์ผ ์ ์๋ค.
multi leve๋ก cache๋ฅผ ๊ตฌ์ฑ โ miss๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ฐพ๋๊ฒ์๋๋ผ ์๋ซ ๋ ๋ฒจ์ ์บ์์์ ํด๊ฒฐํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค. miss penalty๊ฐ ์ค์ด๋ ๋ค.
๋ ํฐ ์บ์ block์ ์ฌ์ฉ โ ๊ณต๊ฐ์ง์ญ์ฑ์ด ์ฆ๊ฐํด miss rate๋ ์ค์ด๋ค๊ฒ๋๋ค. ๊ทธ๋ฌ๋ miss์ ๋ฐ์ํ๋ ์ค๋ฒํค๋๋ ์ฆ๊ฐํด miss penalty๋ ์ปค์ง๊ฒ๋๋ค.
Comments