ํ์ดํ๋ผ์ด๋์ ํ๋ก์ธ์์ ์ฒ๋ฆฌ ํจ์จ์ ๊ทน๋ํํ๊ธฐ ์ํ ์ค๊ณ ๋ฐฉ์์ด๋ค.
ํต์ฌ ์์ด๋์ด๋ "๋ช ๋ น์ด๋ฅผ ๊ตฌ์ฑํ๋ ์ฌ๋ฌ ๋จ๊ณ๋ค์ ๋ถ๋ฆฌํ๊ณ ๋ณ๋ ฌ์ ์ผ๋ก ์คํํ๋ ๊ฒ"์ผ๋ก,
SEQ ๊ตฌ์กฐ์์๋ ๋ชจ๋ ๋ช ๋ น์ด๊ฐ ํ๋ฒ์ ํด๋ญ์ฌ์ดํด์ ํ๋ฒ์ ์ธ์คํธ๋ญ์ ์ด ์คํ๋์์ง๋ง,
Pipeline์์๋ ์๋ก ๋ค๋ฅธ ๋ช ๋ น์ด๊ฐ CPU ๋ด ๊ฐ๊ธฐ ๋ค๋ฅธ ๋จ๊ณ์์ ๋์์ ์คํ๋๋ค.

๐ผ Unpipelined Hardware (๋นํ์ดํ๋ผ์ธ ๊ตฌ์กฐ)
๐ ๋ฌธ์ ์

๐ผ 3๋จ๊ณ ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ
โ ์ด์
๐ฅ ์ฆ, ์ฐ๋ฆฌ๋ ์ผ๋ถ ํ๋์จ์ด๋ฅผ ์ถ๊ฐํ๋ ๋์ ์์คํ ์ ์ฒ๋ฆฌ๋์ ๊ฐ์ ํ ์ ์๋ค.
| ๊ฐ๋ | ์๋ฏธ | ๋๊ฐ ์ ๋ฆฌ? |
|---|---|---|
| Latency | ํ ๋ช ๋ น์ด๊ฐ ์์ํด์ ๋๋ ๋๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ | ๋นํ์ดํ๋ผ์ธ ๊ตฌ์กฐ๊ฐ ์ ๋ฆฌ |
| Throughput | ๋จ์ ์๊ฐ๋น ๋ช ๊ฐ ๋ช ๋ น์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๊ฐ | ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ๊ฐ ์ ๋ฆฌ |

1๏ธโฃ Time = 239 : ํด๋ญ ์ ํธ๊ฐ ์๋ํ๊ธฐ ์ง์
I1 : Stage B์์ ์ฐ์ฐ ์ค
register A ๐ B : A์ ๊ด๊ณ ์์ด B์ ์ด์ ๊ฐ ์ ์ฅ ์ค
I2: Stage A์์ ์ฐ์ฐ ์ค
register B ๐ C : ๋ฐ์ดํฐ x
I3 : ์๋ฌด ๋์๋ ์ํจ
register C ๐ : ๋ฐ์ดํฐ x
๐ ํด๋ญ ์์น์ด ๋ฐ์ํ๊ธฐ ์ ๊น์ง๋ ์ฐ์ฐ์ด ๋๋ฌ๋ค๊ณ ํด๋ ๋ ์ง์คํฐ์ ์ ์ฅ์ด ์๋จ
2๏ธโฃ Time = 241 : ํด๋ญ ์์น์ด ๋ฐ์ํ ์งํ
I1 : Stage C๋ก ๋ค์ด๊ฐ ์ฐ์ฐ ์์
register A ๐ B : A์ ์ฐ์ฐ ๊ฒฐ๊ณผ ์ฆ, I2์ A์ฐ์ฐ ์ฒ๋ฆฌ๊ฐ ์ ์ฅ๋จ
I2: Stage B๋ก ๋ค์ด๊ฐ ์ฐ์ฐ ์์
register B ๐ C : B์ ์ฐ์ฐ ๊ฒฐ๊ณผ ์ฆ, I1์ B์ฐ์ฐ ์ฒ๋ฆฌ๊ฐ ์ ์ฅ๋จ
I3 : Stage A๋ก ๋ค์ด๊ฐ ์ฐ์ฐ ์์์ค
register C ๐ : ๋ฐ์ดํฐ x
๐ ํด๋ญ ์์น์ด ๋ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ๊ฐ ์ ๋ ฅ๊ฐ์ ์บก์ณํ๊ณ ๋ค์ ์คํ ์ด์ง๋ก ๋์ด์ด
3๏ธโฃ Time = 300 : ์กฐํฉ ๋
ผ๋ฆฌ ์ฐ์ฐ ์ค
I1 : Stage C์ ์กฐํฉ ๋
ผ๋ฆฌ ์์์ ์ฐ์ฐ ์ค
register A ๐ B : ๋ณํ ๋ฐ์ ์์
I2: Stage B์ ์กฐํฉ ๋
ผ๋ฆฌ ์์์ ์ฐ์ฐ ์ค
register B ๐ C : ใ
๋ณํ ๋ฐ์ ์์
I3 : Stage A์ ์กฐํฉ ๋
ผ๋ฆฌ ์์์ ์ฐ์ฐ ์ค
register C ๐ : ๋ณํ ๋ฐ์ ์์
๐ ํ์ดํ๋ผ์ธ์ ๋ณ๋ ฌ์ฑ์ด ๋๋ฌ๋๋ ๊ตฌ๊ฐ์ผ๋ก ๋ชจ๋ ์ธ์คํธ๋ญ์ ์ด ๋์์ ๋ค๋ฅธ ์คํ ์ด์ง์์ ์์ ์ค
4๏ธโฃ Time = 359 : ๋ค์ ํด๋ญ ์์น ์ง์
I1 : ์ธ์คํธ๋ญ์
๊ฒฐ๊ณผ๊ฐ C ๋ ์ง์คํฐ์ ์
๋ ฅ๋จ์ ๋์ฐฉ
register A ๐ B : ๋ณํ ๋ฐ์ ์์
I2: ์ธ์คํธ๋ญ์
๊ฒฐ๊ณผ๊ฐ B ๋ ์ง์คํฐ์ ์
๋ ฅ๋จ์ ๋์ฐฉ
register B ๐ C : ๋ณํ ๋ฐ์ ์์
I3 : ์ธ์คํธ๋ญ์
๊ฒฐ๊ณผ๊ฐ A ๋ ์ง์คํฐ์ ์
๋ ฅ๋จ์ ๋์ฐฉ
register C ๐ : ๋ณํ ๋ฐ์ ์์
์ฌ์ง์ ๋ณด๋ฉด ํ ์ฌ์ดํด ๋ด์์ ํด๋ญ์ด ์์นํ๋ค๊ฐ ํ๊ฐํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด๊ฑธ rising edge-triggered ๋ผ๊ณ ํ๋๋ฐ,
ํด๋ญ์ด ์ค๋ฅผ๋์๋ง ๋ ์ง์คํฐ๊ฐ ์
๋ ฅ๋จ์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ์บก์ณํ๊ณ ์ดํ ๋์์ ์ํํ๋ค.
ํด๋ญ์ด ํ๊ฐํ๋๊ฑด ๋ช
๋ น์ด๋ฅผ ์คํํ๋ผ๋ ์ ํธ๋ฅผ ์ข
๋ฃํ๋ค๋ ์๋ฏธ์ผ ๋ฟ, ๊ทธ ์๊ฐ์๋ ์๋ฌด ์๋ฏธ๊ฐ ์๋ค.
์ฆ, ์ฌ์ค์ ํด๋ญ์ด ์์นํ ์๊ฐ๋ง ์ค์ํ๊ณ , ๋๋จธ์ง๋ ์กฐํฉ ๋ ผ๋ฆฌ๋ฅผ ํตํด ์ ํธ๋ฅผ ์ ํ ํ๋ ์๊ฐ์ด๋ค.
โผ๏ธ ๋จ, ํด๋ญ์ด ๋๋ฌด ๋น ๋ฅด๋ฉด ์์ง ์ฐ์ฐ ์ค์ธ ์ธ์คํธ๋ญ์
์ด ์๋ ๊ฒฝ์ฐ
๋ ์ง์คํฐ์ ์
๋ ฅ์ด ์ ํจํ์ง ์๊ฒ ๋์ด ์น๋ช
์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ผ ์ ์๋ค.
โฑ๏ธ ์กฐํฉ ๋
ผ๋ฆฌ ์ฐ์ฐ ์๊ฐ์ด 100ps ๊ฑธ๋ฆฌ๊ณ
๋ ์ง์คํฐ + ์
์
์๊ฐ๊น์ง ๊ณ ๋ คํ๋ฉด ์ ์ฒด ํด๋ญ ์ฃผ๊ธฐ๋
"120ps ์ ๋๋ก ์ค์ ํด์ผ ์์ ์ ์ด๋ค"
T_clock โฅ T_comb + T_setup + T_clk_to_q
| ํญ๋ชฉ | ์ค๋ช |
|---|---|
| T_comb | ์กฐํฉ ๋ ผ๋ฆฌ์ ์ต๋ ์ฐ์ฐ ์ง์ฐ ์๊ฐ |
| T_setup | ๋ ์ง์คํฐ๊ฐ ์ ๋ ฅ์ ์์ ์ ์ผ๋ก ๋ฐ๊ธฐ ์ํ ์ต์ ์ค๋น ์๊ฐ |
| T_clk_to_q | ์ด์ ๋ ์ง์คํฐ์ ์ถ๋ ฅ์ด ๋ณํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ (์ถ๋ ฅ ๋๋ ์ด) |
๋ค์์ ํ์ดํ๋ผ์ธ์ ํจ๊ณผ๋ฅผ ์ถ์์ํค๋ ์์ธ๋ค์ด๋ค.

์์์ ๋ดค๋ ์์์ ๋ฌ๋ฆฌ ์์ ๊ทธ๋ฆผ์ ๊ฐ ๋จ๊ณ์์ ๋ฐ์ํ๋ ์ง์ฐ์๊ฐ์ด ๋ค์ํ๋ค.
๋ชจ๋ ์ธ์คํธ๋ญ์
์ด ์ฌ๋ฐ๋ฅธ ํ์ด๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ ๊ฒ์ ๋ณด์ฅํ๊ธฐ ์ํด์๋ ํด๋ญ ์๋๋ฅผ ๊ณ ๋ คํ ๋
๊ฐ์ฅ ๋ฆ๊ฒ ๋๋๋ ๋จ๊ณ์ ์๊ฐ์ง์ฐ์ ๊ณ ๋ คํด์ผ ํ๋ค.
์ฆ, ์ด ์ฐ์ฐ ์๊ฐ์ ๋์ผํ๋๋ผ๋ ํด๋ญ ์๋๋ก ์ธํ์ฌ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ค.

์์
์ ๋จ๊ณ๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ์ชผ๊ฐ๋ ๊ฒ์, ์ฆ ๋งค์ฐ ๊น์ ํ์ดํ๋ผ์ธ์ ์ด์ฉํ๋ ๊ฒฝ์ฐ ๊ฐ์ ์์
์ ๋ํด์๋
์ฐ์ฐ์ ์์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ์ฆ๊ฐํ๋ค.
๋จ, ๊น์ ํ์ดํ๋ผ์ธ์ ๊ทธ๋งํผ ์ค๊ฐ์ ๋ ์ง์คํฐ๋ ๋ง๋ค๋ ๊ฒ์ ์๋ฏธํ๊ณ
๋ ์ง์คํฐ์ ์ ์ฅํด์ผ ํ๋ ์ง์ฐ ์๊ฐ์ ๋ฌด์ํ ์ ์๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค.
Fetch โ Decode โ Execute โ Memory โ Writeback โ PC update
โ PC ๊ณ์ฐ๊ณผ Fetch๊ฐ ์์ฐจ์ ์ผ๋ก ์ผ์ด๋๊ธฐ ๋๋ฌธ์,
๋ค์ ๋ช ๋ น์ด ์คํ์ด ํญ์ ์ง์ฐ๋จ
PC update โ Fetch โ Decode โ Execute โ Memory โ Writeback
pIcode, pCnd, pValP ๊ฐ์ ์ํ ๋ ์ง์คํฐ์ ์ ์ฅํด๋ โ PC ์ฐ์ฐ๊ณผ Fetch๊ฐ ๊ฐ์ ์ธ์ดํด ์์์ ๋์์ ์ด๋ฃจ์ด์ง๋ฏ๋ก,
๋ค์ ๋ช ๋ น์ด๋ฅผ ๋น ๋ฅด๊ฒ ์์ํ ์ ์์
-Circuit retiming ๊ธฐ๋ฒ ์ฌ์ฉ

๊ฐ ๋ช ๋ น์ด๊ฐ ๋ค์ ์คํ ์ด์ง๋ก ์ด๋ํ ๋ ํ์ํ ์ ๋ณด๋ Pipeline Register์ ์ ์ฅ๋๋ค.
| ๋ ์ง์คํฐ | ํฌํจ ์ ๋ณด |
|---|---|
| F | ํ๋ก๊ทธ๋จ ์นด์ดํฐ์ ์์ธก๊ฐ์ ์ ์ฅ |
| D | ํด๋ ๋จ๊ณ๊ฐ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๊ฐ์ฅ ์ต๊ทผ์ ์ ์ ํ ์ธ์คํธ๋ญ์ ์ ๊ดํ ์ ๋ณด ์ ์ฅ |
| E | ๋ ์ง์คํฐ ํ์ผ๋ก๋ถํฐ ์ฝ์ด๋ค์ธ ๊ฐ, ๊ฐ์ฅ ์ต๊ทผ์ ํด๋ ํ ์ธ์คํธ๋ญ์ ์ ๊ดํ ์ ๋ณด ์ ์ฅ |
| M | ๊ฐ์ฅ ์ต๊ทผ์ ์คํํ ์ธ์คํธ๋ญ์ ์ ๊ฒฐ๊ณผ ๋ฐ ๋ถ๊ธฐ์กฐ๊ฑด, ๋ถ๊ธฐ ๋ชฉ์ ์ง์ ๊ดํ ์ ๋ณด ์ ์ฅ |
| W | ๋ ์ง์คํฐ ํ์ผ์ ๊ธฐ๋ก ํ ๊ณ์ฐ ๊ฒฐ๊ณผ์ ret ์ธ์คํธ๋ญ์ ์ ์ํ ๋ฆฌํด์ฃผ์ ์ ์ฅ |
๊ฐ Pipeline Register๋ ํด๋ญ ์์น ์์ ์ ์ ๋ฐ์ดํธ๋๋ฉฐ, ๋ช ๋ น์ด๋ค์ด ์คํ ์ด์ง ๊ฐ ์ ํํ ์ฐ๊ฒฐ๋ ์ ์๋๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค.
PIPEโ๋ SEQ, SEQโบ์ ๋ฌ๋ฆฌ ์ฌ๋ฌ ๋ช
๋ น์ด๊ฐ ๋์์ ํ์ดํ๋ผ์ธ์ ๋ฐ๋ผ ํ๋ฅด๋๋ก ์ค๊ณ๋ ๊ตฌ์กฐ์ด๋ค.
์ฆ, ๊ฐ ๋ช
๋ น์ด๊ฐ ๋์ผํ ์ ํธ ์ด๋ฆ์ ๋์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์,
์ ํํ ์ ํธ ๊ตฌ๋ถ ๋ฐ ๋ช
์์ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ ๊ตฌ์ฑ์ด ์ค์ํ๋ค.
ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ์ ์ ์ฅ๋๋ ์ ํธ๋ ํด๋น ๋ ์ง์คํฐ ์ด๋ฆ์ ๋๋ฌธ์ ์ ๋์ด๋ฅผ ๋ถ์ธ๋ค:
D_stat, E_stat, M_stat, W_statํด๋น ์คํ ์ด์ง์์ ๋ฐฉ๊ธ ๊ณ์ฐ๋ ์ ํธ๋ ์๋ฌธ์ ์ ๋์ด๋ฅผ ๋ถ์ธ๋ค:
f_stat (Fetch), m_stat (Memory)ํ๋ก์ธ์ ์ ์ฒด ์ํ (Stat)๋ W ๋ ์ง์คํฐ์ ์ ์ฅ๋ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Writeback ๋จ๊ณ์์ ๊ฒฐ์ ๋๋ค.
dstE, dstM ๋ฑ์ ์ ํธ๋ฅผ ๋ฐ๋ก ๋ ์ง์คํฐ ํ์ผ์ ์ฐ๊ฒฐํ ์ ์์์ง๋ง,๐ Why?:
โ ํ๋์ ๋ช ๋ น์ด์ ๊ด๋ จ๋ ๋ชจ๋ ์ ๋ณด๋ ๋์ผํ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ์ ๋ด์์ ํ๋ฅด๊ฒ ํ๋ค.
valP ๋๋ ๋ ์ง์คํฐ ํ์ผ์์ ๊ฐ์ ธ์จ ๊ฐ์ ์ง์ ์ฌ์ฉํ๋ Data ๋ธ๋ก์ด ์์์valP (D ๋ ์ง์คํฐ๋ก๋ถํฐ) ๋๋ Register File์์ ์ฝ์ ๊ฐ์ ์ ํํ์ฌ valA ์์ฑvalA๋ง ํ์ดํ๋ผ์ธ์ผ๋ก ์ ๋ฌํ์ฌ ํ์ํ ์คํ
์ด์ง์์ ์ฌ์ฉํจ๊ฒฐ๊ตญ ํ์ดํ๋ผ์ธ ์ค๊ณ๋ฅผ ํจ์ผ๋ก์จ ํ๋ฒ์ ํ ์ธ์คํธ๋ญ์ ๋ง ์ฒ๋ฆฌํ ์ ์๋ ์์คํ ์์ ํ๋ฒ์ ์ฌ๋ฌ ์ธ์คํธ๋ญ์ ์ ์ฒ๋ฆฌํจ์ผ๋ก์จ ๋งค ํด๋ญ ์ฌ์ดํด๋ง๋ค ์๋ก์ด ์ธ์คํธ๋ญ์ ์ ์คํํ๊ณ ๊ถ๊ทน์ ์ผ๋ก๋ ์๋ฃ์ํค๋ ๋ชฉ์ ์ ๋ค๋ฃฐ ์ ์๋ ๊ฒ์ด๋ค.
๋ค๋ง, ์ด๋ฐ ๋ชฉ์ ์ ์ํด์๋ ํ์ฌ ์ธ์คํธ๋ญ์ ์ ์ ์ ํ ์งํ ๋ฐ๋ก ๋ค์ ์ ์ ํ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ค.
jXX)๋ **์คํ ๊ฒฐ๊ณผ(๋ถ๊ธฐ ์ฌ๋ถ)**๋ฅผ Execute ์คํ
์ด์ง์์์ผ ์ ์ ์์ret์ return ์ฃผ์๋ฅผ Memory ์คํ
์ด์ง์์์ผ ์ ์ ์์jXX)๋ ํญ์ taken์ผ๋ก ์์ธกvalC๋ก ์ค์ Select PC:
instruction memory์์ ์ฌ์ฉํ ์ฃผ์ ์ ํ
์ ํ์ง:
M_valA)W_valM)Predict PC:
valC ๋ฐํvalP ๋ฐํF ๋ ์ง์คํฐ:
predicted_pc)๋ฅผ ์ ์ฅํด ๋ค์ Fetch ๊ธฐ์ค ์ฃผ์๋ก ์ฌ์ฉPIPEโ๋ SEQโบ์๋ ๋ฌ๋ฆฌ ์ฌ๋ฌ ๋ช ๋ น์ด๊ฐ ๋์์ ํ๋ฅด๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์,
์ ํธ์ ๋ช ํํ ๊ตฌ๋ถ, ์์ธก ๊ธฐ๋ฐ์ ์ ์ด ํ๋ฆ ์ฒ๋ฆฌ, ์ผ๊ด๋ ์ํ ๊ด๋ฆฌ๊ฐ ํ์์ด๋ค.
์์์ ๋ณธ ๊ฒ ์ฒ๋ผ ํ์ดํ๋ผ์ธ์ ๋์
ํ๋ ๊ฒฝ์ฐ ์ฐ์๋๋ ์ธ์คํธ๋ญ์
๋ค ๊ฐ์ ์์กด์ฑ์ผ๋ก ์ธํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
์ด๋ ๊ฒ ํ์ดํ๋ผ์ธ์ด ์์กด์ฑ์ ์ํด ์๋ชป๋ ๊ณ์ฐ์ ์ผ๊ธฐํ ๊ฐ๋ฅ์ฑ์ด ์์ ๋ ์ด๋ค์ ํด์ ๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ๊ฐ์ ์ธ์คํธ๋ญ์ ์ด ๊ณ์ฐํ ๊ฒฐ๊ณผ๊ฐ ๋ค์์ ์ค๋ ์ธ์คํธ๋ญ์ ์ ์ํ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์์กด์ฑ์ด ๋ฐ์ํ๋ค.
ํ ๋ช ๋ น์ด๊ฐ ์์ง ๊ฒฐ๊ณผ๋ฅผ ๋ ์ง์คํฐ์ ์ฐ๊ธฐ ์ ์, ๋ค์ ๋ช ๋ น์ด๊ฐ ๊ทธ ๊ฐ์ ํ์๋ก ํ ๋ ๋ฐ์
์์:
1: mrmovq 0(%rbx), %rax # ์์ง %rax์ ๊ฐ์ด ์ ๋ค์ด๊ฐ
2: addq %rax, %rcx # %rax๋ฅผ ์ฝ์ผ๋ ค ํจ โ forwarding or stall ํ์
ํด๊ฒฐ:
ํ๊ฐ์ ์ธ์คํธ๋ญ์ ์ด ๋ค์์ ๋ฐ๋ผ์ค๋ ์ธ์คํธ๋ญ์ ์ ์์น๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒฝ์ฐ ์ ์ด ์์กด์ฑ์ด ๋ฐ์ํ๋ค.
๋ถ๊ธฐ ๋ช ๋ น์ด (
jXX,call,ret)์ ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ธฐ ์ ์ ๋ค์ ๋ช ๋ น์ด์ PC๋ฅผ ์ ์ ์์
ํด๊ฒฐ:




Stalling: ํด์ ๋๊ฐ ๋ฐ์ํ์ ๋, ํด๋น ๋ช ๋ น์ด๋ฅผ Decode ๋จ๊ณ์์ ์ ์ง์ํค๊ณ , ํ์ ๋ช ๋ น์ด๋ค๋ ์ ์ง์์ผ ์์ค ์คํผ๋๋๋ฅผ ์ ๋๋ก ์์ฑํ ์ ์์๋๊น์ง ๋ฉ์ถ๋ ๋ฐฉ๋ฒ

%rdx, %rax)๊ฐaddq ๋ช
๋ น์ดaddq๊ฐ ์์ ๋,%rdx ๋๋ %rax๋ฅผ Write ์ค์ด๋ผ๋ฉด โ addq๋ Decode์ ๋ฉ์ถ๋ค.Bubble์ ๋์ ์ผ๋ก ์ฝ์ ๋ nop ๋ช ๋ น์ด์ ๊ฐ๋ค
๋ ์ง์คํฐ, ๋ฉ๋ชจ๋ฆฌ, Condition Codes, ํ๋ก๊ทธ๋จ ์ํ์ ์ํฅ์ ์ฃผ์ง ์์
**Forwarding(๋๋ Bypassing)**์ ๊ณ์ฐ๋ ๊ฐ์ ํ์ดํ๋ผ์ธ์ ๋ค์ชฝ์์ ์์ชฝ์ผ๋ก ์ง์ ์ ๋ฌํจ์ผ๋ก์จ ๋ฐ์ดํฐ ํด์ ๋๋ฅผ ํผํ๋ ๋ฐฉ๋ฒ์ด๋ค.

์ฆ, ๋ ์ง์คํฐ์ ๊ฐ์ด ์์ง ์ ์จ์ก๋๋ผ๋, ํด๋น ๊ฐ์ด ์ด๋๊ฐ ํ์ดํ๋ผ์ธ์ ์์ผ๋ฉด ๊ทธ ๊ฐ์ ๋ฏธ๋ฆฌ ์ ๋ฌํด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
์ด๋ฌํ ๋ฐ์ดํฐ ํฌ์๋ฉ์ ๊ธฐ๋ณธ ํ๋์จ์ด ๊ตฌ์กฐ์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ ์ฐ๊ฒฐ๊ณผ ์ ์ด๋ก์ง์ ํ์๋ก ํ๋ค.
addq ๋ช
๋ น์ดaddq ๋ช
๋ น์ด๊ฐ Decode ๋จ๊ณ์์ %rax๋ฅผ ์ฝ์ผ๋ ค ํจ%rax์ ๊ฐ์ ์ธ ์์ ์โ ํด๊ฒฐ์ฑ :
| ๋ช ๋ น ์ข ๋ฅ | ๊ฐ์ ์์ฑํ๋ ๋จ๊ณ | ํฌ์๋ฉ ๊ฐ๋ฅ ์์ | ๋ํ ๋ช ๋ น์ด | ์์ |
|---|---|---|---|---|
| ์ฐ์ฐ ๊ณ์ด (ALU ์ฌ์ฉ) | E ๋จ๊ณ | E ๋ค์ ์ฌ์ดํด๋ถํฐ (= D์์ ์ฌ์ฉ ๊ฐ๋ฅ) | addq, irmovq, rmmovq, OPq ๋ฑ | addq %rbx, %raxirmovq $10, %rbx |
| ๋ฉ๋ชจ๋ฆฌ ์ฝ๊ธฐ ๊ณ์ด | M ๋จ๊ณ | M ๋ค์ ์ฌ์ดํด๋ถํฐ (= D์์ ์ฌ์ฉ ๊ฐ๋ฅ) | mrmovq, popq | mrmovq 0(%rdx), %rax |
| ํญ๋ชฉ | Forwarding | Stalling |
|---|---|---|
| ๋์ ๋ฐฉ์ | ๋ค ๋จ๊ณ์์ ์ ๋จ๊ณ๋ก ๊ฐ ์ ๋ฌ | ๋ช ๋ น์ด ์ ์ง & bubble ์ฝ์ |
| ์ฑ๋ฅ | โ ๋น ๋ฆ (stall ์์) | โ ๋๋ฆผ (stall ๋ฐ์) |
| ๊ตฌํ ๋ณต์ก๋ | ๋์ (ํฌ์๋ฉ ํ๋ก ํ์) | ๋ฎ์ (๋จ์ stall ๋ก์ง) |
| ํ์ฉ ์์ | prog2~prog4 | prog2~prog4 (๋ฒ๋ธ ์ฝ์ ํ์ ์) |

mrmovq๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ %rax๋ก ๊ฐ์ ๋ก๋ํ๊ณ ,addq)๊ฐ %rax๋ฅผ ์์ค๋ก ์ฌ์ฉํ๋ฉด?mrmovq๋ ๋ฉ๋ชจ๋ฆฌ(M) ๋จ๊ณ์์์ผ ๊ฐ์ด ์ ํจํ๋ฐ,addq๋ Decode(D) ๋จ๊ณ์์ ๊ทธ ๊ฐ์ ํ์๋ก ํจ
mrmovq๊ฐ Execute(E) ๋จ๊ณ์ผ ๋, ์ปจํธ๋กค ๋ก์ง์ด ๋ค์ ๋ช
๋ น์ด(addq)๊ฐ ๊ทธ ๊ฐ์ ํ์๋ก ํ๋ค๊ณ ํ๋จaddq๋ฅผ 1 ์ฌ์ดํด ์คํจ%rax ๊ฐ์ด ๋์ค๋ฉด โ forwarding์ผ๋ก ์ ๋ฌโForwarding + Load Interlock ์กฐํฉ์ผ๋ก ๋ชจ๋ ๋ฐ์ดํฐ ํด์ ๋๋ฅผ ํด๊ฒฐํ ์ ์๋ค!โ
ํด์ ๋๊ฐ ๋๋ฌด ์ด๋ ค์ ๋๋ฐ ใ ใ ใ ๊ฐ์ฌํฉ๋๋ค!