์ ๋ดํ ๊ต์๋์ด ์ถ์ฒํ ์ฑ
ใ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ชฐ๋๋ ๋ฉํฐ์ฝ์ด CPU ์ด์ผ๊ธฐใ - ๊น๋ฏผ์ฅ ์ง์
์์ ์ฑ ์ ํ ๋๋ก ๊ณต๋ถํ ๋ด์ฉ์ด ์์ฑ๋์์
- ๋ฐ์ดํฐ ์์กด์ฑ (Data dependence)
: ๋ช ๋ น์ด๋ค ์ฌ์ด์ ๋ฐ์ดํฐ ํ๋ฆ, ํ๋ก๊ทธ๋จ์ ๋ฌธ๋งฅ์ ๊ฒฐ์ ํ๋ ์ค์ ์์
: ์์กด์ฑ์ด ์๋ ๋ช ๋ น์ด → ์์๋๋ก ์คํ๋์ด์ผ ํจ
: ์ฝ๊ธฐ/์ฐ๊ธฐ ์์์ ๋ฐ๋ผ ๋ถ๋ฅ๋จ
// RAW ์์กด์ฑ
x = y + 1;
z = x * 2;
// ๋ณ์ x๋ 1๋ฒ ๋ช
๋ น์ด ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค๊ณ 2๋ฒ ๋ช
๋ น์ด ์ด๋ฅผ ์ฌ์ฉํจ
// ๋ณ์ x์ Read - After - Write ์์กด์ฑ์ด ์กด์ฌ
// WAR ์์กด์ฑ
z = x * 2;
x = y + 1;
// ๋ณ์ x์ Write - After - Read ์์กด์ฑ์ด ์กด์ฌ
// WAW ์์กด์ฑ
x = Z * 2;
x = y + 1;
// ๊ฐ์ ๋์์ ๊ฐ์ด ์ฐ์ฌ์ง
// ๋ณ์ x์ Write - After - Write ์์กด์ฑ์ด ์กด์ฌ
// RAW ์์กด์ฑ์ ์ง์ง ์์กด์ฑ, ๋๋จธ์ง๋ ๊ฐ์ง ์์กด์ฑ
// ๊ฐ์ง ์์กด์ฑ์ RAW์์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ์ปจํธ๋กค ์์กด์ฑ
: ์คํ ํ๋ฆ์ผ๋ก ์ธํ ์์กด์ฑ → ์กฐ๊ฑด ๋ถ๊ธฐ๋ฌธ
: ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ๋ถ๊ธฐ๋ฌธ์ ์ปจํธ๋กค ์์กด์ฑ์ ๋ง๋ค์ง ์์ → ๋จ์ ํจ์ํธ์ถ
: PC๋ ์ง์คํฐ์ ์ํ RAW ๋ฐ์ดํฐ ์์กด์ฑ์ผ๋ก๋ ๋ณผ ์ ์์
- ๋ฉ๋ชจ๋ฆฌ ์์กด์ฑ
: ํฌ์ธํฐ๋ก ์ธํ ๋ฉ๋ชจ๋ฆฌ ์์กด์ฑ ํ์ ์ ์ฝ์ง ์๋ค → ๊ทธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ๋ฅดํค๊ณ ์๋์ง์ ๋ฐ๋ผ์ ์์กด์ฑ ์ฌ๋ถ์ ์ข ๋ฅ๊ฐ ๊ฒฐ์ ๋จ
: ์ฃผ์ด์ง ๋ช ๋ น์ด ์ฌ์ด์ ๋ฉ๋ชจ๋ฆฌ ์์กด์ฑ์ ์ฌ๋ถ๋ฅผ ํ์ ํ๋ ๊ฒ → ๋ฉ๋ชจ๋ฆฌ ๋ช ํํ / ํฌ์ธํฐ ๋ถ์
- ๋ฃจํ ์ ์ด ์์กด์ฑ
: RAW, WAR, WAW ์์กด์ฑ ์กด์ฌ
: ์ด๋ค ๋ฃจํ์ด๊ฑด ๋ฃจํ ์ ์ด ์์กด์ฑ์ด ์ ๊ฑฐ๋๋ฉด ์ด ๋ฃจํ๋ ๋ณ๋ ฌํ๊ฐ ๊ฐ๋ฅํด์ง
: ๋ฃจํ ๋ณํฉ, ๋ฃจํ ๋ฐ๊พธ๊ธฐ ๊ฐ์ ์ต์ ํ๋ ์์กด์ฑ ๋ถ์์ ํด์ผ๋ง ๊ฐ๋ฅ
or(int i=1; i<N; i++)
A[i] = A[i-1] + 1;
// ๋ฃจํ ์ํ์ ๋ฐ๋ฅธ 2๋ฒ ๊ตฌ๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ
i=1: A[1] = A[0] + 1;
i=2: A[2] = A[1] + 1; // A[1]์ ๋ํ RAW ์์กด์ฑ
i=3: A[3] = A[2] + 1; // A[2]์ ๋ํ RAW ์์กด์ฑ
→ ๋ช ๋ น์ด ์ฌ์ด์ ์์กด์ฑ์ด ์๋ค๋ฉด ์ด๋ค์ ์ด๋ค ์์ or ๋ณ๋ ฌ๋ก ์คํ๋์ด๋ ์๊ด ์์
→ ์์กด์ฑ ๋ถ์์ ํตํด ์ด๋ค ์์ ํน์ ๋ณ๋ ฌ๋ก ์คํ๋์ด๋ ์๊ด์ด ์๋์ง ์ ์ ์์ (๋ช ๋ น์ด ์คํ ์์๋ฅผ ์ ํ ์ ์์). ์ด๋ฅผ ๋ช ๋ น์ด ์ฌ๋ฐฐ์น / ๋ช ๋ น์ด ์ค์ผ์ค๋ง ์ต์ ํ๋ผ ํจ
- CPU์ ๋ช ๋ น์ด ์ฒ๋ฆฌ
1) ALU ์ฐ์ฐ : ์ฌ์น, ๋ ผ๋ฆฌ ์ฐ์ฐ
2) ๋ฉ๋ชจ๋ฆฌ ๋ก๋ : ํผ์ฐ์ฐ์์ ๊ธฐ๋ก๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ตฌํด ์ง์ ๋ ๋ ์ง์คํฐ์ ๊ฐ์ ์
3) ๋ฉ๋ชจ๋ฆฌ ์คํ ์ด : ์ฃผ์ด์ง ๋ ์ง์คํฐ์ ๋ด์ฉ์ ์ง์ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์
4) ๋ถ๊ธฐ๋ฌธ : ์ฃผ์ด์ง ์กฐ๊ฑด์ ๊ณ์ฐํด ๋ค์ ์ํ๋ PC์ป์
- ๋ช ๋ น์ด ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
1) ๋ช ๋ น์ด ์ธ์ถ
: ์ฒ๋ฆฌํ ๋ช ๋ น์ด๋ฅผ IP/PC ๋ ์ง์คํฐ๊ฐ ๊ฐ๋ฅดํค๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ๊ฐ์ ธ์ด
2) ๋ช ๋ น์ด ํด๋
: ๋ช ๋ น์ด๊ฐ ์ด๋ค ์ผ์ ํด์ผ ํ๋์ง ํ์
3) ํผ์ฐ์ฐ์ ์ธ์ถ
: ํผ์ฐ์ฐ์๋ฅผ ์ฝ์ → ์ฃผ์๋ชจ๋์ ๋ฐ๋ผ ๋ ์ง์คํฐ / ์์ / ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ก ๋ฒ์ญ๋จ
: ์์๋ ์ธ์ฝ๋ฉ๋์ด ์์ด ํด๋ ๋จ๊ณ์์ ์ฝ์ ๋ด์ฉ์ ๋ฐ๋ก ์ธ ์ ์์
: ๋ ์ง์คํฐ๋ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ฒ์ฉ ๋ชฉ์ ๋ ์ง์คํฐ, ๋ถ๋ ์์์ ๋ ์ง์คํฐ, ์ปจํธ๋กค ๋ ์ง์คํฐ, ๋๋ฒ๊ทธ ๋ ์ง์คํฐ, PC๊ฐ ์์
: ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฅดํค๋ฉด ๊ฐ์ ธ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์์ ๊ทธ ์ฃผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
4) ๋ช ๋ น์ด ์คํ
: ์ง์์ ๋ฐ๋ผ ์ค์ ๊ณ์ฐ์ ์ํํจ
5) ๊ฒฐ๊ณผ ์ ์ฅ