<aside>
๐ก
์ ์์ฝ
RAW ํด์ ๋์ ๋ํ Stalling ๋ฐฉ๋ฒ
RAW ํด์ ๋์ ๋ํ Data Forwarding ๋ฐฉ๋ฒ
</aside>
Data Dependency


- True Dependence์ ํด๋นํ๋ RAW(Read after Write)๋ฅผ ๋ณธ ๋จ์์์ ๋ค๋ฃฌ๋ค.
- ๋ฌธ์ ๋ ์ ์ฐ์ฐ์ด ์๋ฃ๋์ด์ผ๋ง ์๋ ์ฐ์ฐ์ ์์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์!
ํ์ดํ๋ผ์ธ ์ ์
๋ฐ์ดํธ๋์ง ์์ r3๊ฐ์ด ๋ค์ด๊ฐ ๊ณ ์ฅ๋๋ค.
- i๋ฒ instruction (write)๋ค์์ j๋ฒ instruction(read)์ด ์คํ๋์ด์ผ ํ๋ ์ํฉ์ธ๋ฐ,
read ๋ค์์ write ๋๊ณ ์๋ค! ๋ฐ๋ผ์ RAW ํด์ ๋์ด๋ค.
- WB์ ID ์ฌ์ด์ ๊ฑฐ๋ฆฌ(3์ผ๋ก ๊ณ ์ )๋ณด๋ค ๋ ์ธ์คํธ๋ญ์
์ฌ์ด๊ฐ ๋ ๋ฉ๋ฉด ์๊ด ์์ผ๋, inst๊ฐ ๊ฑฐ๋ฆฌ๊ฐ ์งง์์ ID๊ฐ ๋จผ์ ์คํ๋์ด ๋ฒ๋ฆฌ๋ฉด ์๋๋ค!
(Dist(i,j) < dist(ID, WB)์ธ ๊ฒฝ์ฐ)
Pipeline Stalling (bubble)
๊ทธ๋ฅ ๊ธฐ๋ค๋ฆฌ๋ฉด ๋๋ค!


WB๊ฐ ๋๋๊ณ ID๊ฐ ์คํ๋์ด์ผ ๋ฌธ์ ๊ฐ ์์ผ๋ ์ง ID๊ฐ ๋จผ์ ์คํ๋๊ณ ์๋ค.
๋ฐ๋ผ์ inst ์ฌ์ด์ bubble์ ๋ผ์ ๋ฃ์ด(๊ทธ๋ฅ ์ง์ฐ ์ญํ ) WB๊ฐ ๋๋ ๋๊น์ง ๋์นธ ๊ธฐ๋ค๋ฆฌ์.

๋ฆฌ์์ค ์ฌ์ฉ์ ์์ ๊ฐ์ด ๋ ๊ฒ์ด๋ค.
Stall Implementation

- RegWrite, MemWrite๋ง ๊บผ ๋๋ฉด ๋๋ค
- bubble์ ๋ผ์๋ฃ๋๋ค๋ ๊ฒ, ๊ฐ์ ์ฐ์ฐ์ ํ์ง๋ง ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ์ง๋ง ์๊ฒ ํ๋ค.
๋ฐ๋ผ์ ๋ ์ง์คํฐ, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์
๋ฐ์ดํธํ๋ RegWrite์ MemWrite๋ฅผ ๊บผ ๋๋ฉด bubble ํด๋ฝ์ด ๋๋๋ฉด ์๋ฌด๊ฒ๋ ํ์ง ์์ ๊ฒ๊ณผ ๊ฐ์ ์ํ๊ฐ ๋๋ค. ๋ฐ๋ผ์ ๋ฉ์ถ ์ ์๋ ๊ฒ!
- ID ์ํ์์ EX๋ก ๋๋ฌํ๊ธฐ ์ ์ ๋ง์ผ๋ฉด(ID๋ง ๋ฐ๋ณตํ๋ฉด) ๋๋ค.
๋ฉ์ถ๋ ์กฐ๊ฑด์ ์์ผ๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
ID์์ ์ ๊ทผํ๋ rs1์ด EX๋ MEM์์ ์ฐ์ด๊ณ ์์ ๋ ๋ฉ์ถ๋ค.
์ ๋ฌ๋ฉด EX๋ MEM์์ ๋ค ์ฐ๊ณ ๋์ ์ฝ์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค.

Impact of Stall