๐ ์์ธ ์ ๋ฆฌ#
4.5.0 Intro#
- ์ด์ ์ค๊ณ๋ฅผ ์์ํ ์ค๋น๊ฐ ๋์๋ค.
- SEQ๋ฅผ ์ํญ ์์ ํ์ฌ PC๊ณ์ฐ์ fetch ๋จ๊ณ๋ก ์ฎ๊ธฐ์.
- ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ๋ฅผ ์ถ๊ฐํ์.
- ์์ง ์ข ์์ฑ์ ์ ๋๋ก ์ฒ๋ฆฌํ์ง ๋ชปํ์ง๋ง, ์ผ๋จ ํจ์จ์ ์ธ ํ์ดํ๋ผ์ธ์ ๋ง๋ค์ด๋ณด์.
4.5.1 SEQ+: Rearranging the computation Stages#
- SEQ์ 5๋จ๊ณ๋ฅผ ์ฝ๊ฐ ์ฌ๋ฐฐ์ดํด์ PC์
๋ฐ์ดํธ ๋จ๊ณ๊ฐ ํด๋ก ์ฃผ๊ธฐ์ ๋์ด ์๋ ์์์ ์ค๋๋ก ํ์.
- ์ด ์ค๊ณ๋ฅผ SEQ+๋ผ๊ณ ํ๋ค.
- PC๋ฅผ ํด๋ก ์ฃผ๊ธฐ์ ์์์ ์ค๊ฒ ํ๊ธฐ ์ํด์ , ์ด์ ์ icode, Cnd, valC, valM, valP๋ฑ์ด ํ์ํ๋ค.
- ์ด์ ์ด ๋ค์ฏ๊ฐ๋ฅผ ํ๋์จ์ด ๋ ์ง์คํฐ๋ฅผ ๋ฐ๋ก ๋ฌ์ ์ ์ฅํ๋ฉด ๋๊ฒ ๋ค.
- ์ด๊ฑธ ํ๋ก ๋ฆฌํ์ด๋ฐ์ด๋ผ๊ณ ํ๋ค.
4.5.2 Inserting Pipeline Registers#
- ์ค๊ฐ์ stat, icode, ifun, rA, rB, valC, valA, valP, dstE… ๋ฑ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์ ์ฅํ๋ ์ธต์ ๋ง๋ค์.
- SEQ์ ๋จ๊ณ์ ๊ฐ์ง๋ง, ๋จ๊ณ ์ฌ์ด๋ฅผ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ๊ฐ ๋ถ๋ฆฌํ๊ณ ์๋๊ฒ์ด๋ค.
- ๊ทธ ์ธต์ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
- F: PC์ ์์ธก๊ฐ ๋ณด์
- D: Fetch์ Decode ์ฌ์ด์์, ์ต๊ทผ์ ์ธ์ถ๋ ๋ช ๋ น์ด์ ๋ํ ์ ๋ณด ๋ณด์
- E: Decode์ Execute ์ฌ์ด์์, ๊ฐ์ฅ ์ต๊ทผ์ ๋์ฝ๋๋ ๋ช ๋ น์ด์ ๋ํ ์ ๋ณด์ ๋ ์ง์คํฐํ์ผ์์ ์ฝ์ ๊ฐ ๋ณด์
- M: Execute์ Memory ์ฌ์ด์์, ๋ฉ๋ชจ๋ฆฌ๋จ๊ณ์์ ์ฒ๋ฆฌํ ๊ฐ์ฅ ์ต๊ทผ์ ์คํ๋ ๋ช
๋ น์ด์ ๊ฒฐ๊ณผ ๋ณด์
- ์กฐ๊ฑด๋ถ ์ ํ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ถ๊ธฐ์กฐ๊ฑด / ๋์์ ๋ํ ์ ๋ณด๋ ๋ณด์
- W: Memory์ Write back ๋จ๊ณ ์ฌ์ด์์, ๊ณ์ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ ์ง์คํฐ ํ์ผ์ ์ฐ๊ธฐ ์ํ ์ ๋ณด ๋ณด์
- ret ๋ช ๋ น์ด ์๋ฃ์ PC ์ ํ ๋ก์ง์ ๋ฐํ ์ฃผ์ ๊ณต๊ธ
4.5.3 Rearranging ans Relabeling Signals#
- SEQ์ SEQ+๋ ํ๋ฒ์ ํ๋์ ๋ช
๋ น์ด๋ง ์ฒ๋ฆฌํ๋ฏ๋ก valC, rscA, valE์ ๊ฐ์ ์ ํธ์ ๊ณ ์ ํ ๊ฐ ์กด์ฌ
- ํ์ง๋ง ํ์ดํ๋ผ์ธ ์ค๊ณ์์๋ ์๋ก ๋ค๋ฅธ ๋ช ๋ น์ด์ ์ฐ๊ด๋ ์ฌ๋ฌ ๋ฒ์ ์กด์ฌ
- ์ฌ๋ฐ๋ฅธ ๋ฒ์ ์ ์ ํธ๋ฅผ ์ฌ์ฉํ๋๋ก ์ฃผ์ํ์ง ์์ผ๋ฉด, ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋ฐ๋ผ์ D_stat, E_stat.. ์ฒ๋ผ ๋ช ๋ช ํ์.
- ํ๋์จ์ด ๋ ์ง์คํฐ๊ฐ ์๋ ๊ทธ ์์์ ๊ณ์ฐ๋๋ stat๊ณผ ๊ฐ์ ๋ถ๋ถ๋ ์๋ค!
- ์ด๋ ์๋ฌธ์๋ก f_stat, m_stat๊ณผ ๊ฐ์ด ์ฐ์.
- ์ ์ฒด ํ๋ก์ธ์์ ์ค์ ์ํ๋ W_stat์ ๊ธฐ๋ฐ์ผ๋ก Write Back ๋จ๊ณ์์ ๊ณ์ฐ๋๋ค.
- SEQ+, PIPE- ์ ๋์ฝ๋๋จ๊ณ๋ ๋ชจ๋ valE, valM์ฉ dstE, dstM ์ ํธ๋ฅผ ์์ฑํ๋ค.
- SEQ+์์๋ ์ด ์ ํธ๋ฅผ ๋ ์ง์คํฐ ํ์ผ ์ฐ๊ธฐ ํฌํธ์ ์ง์ ๊ฝ์์ง๋ง
- PIPE-์์๋ ์ด ์ ํธ๊ฐ ํ์ดํ๋ผ์ธ์ ํตํด ์ ๋ฌ๋์ด, Write Back ๋จ๊ณ์์ ์ ํธ๊ฐ ์ ๋ฌ๋๋ฉด ๊ทธ๋ ์ํํ๋ค.
- PIPE์์ SEQ+์ ์๋๊ฒ ํ๋ ์๋ค.
- Select A ๋ธ๋ญ
- ์ด ๋ธ๋ญ์ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ D์ valP ํน์ ๋ ์ง์คํฐํ์ผ์ Aํฌํธ์์ ๊ฐ์ ์ ํํ์ฌ valA๋ฅผ ๊ฒฐ์ ํ๋ค.
- ์ด๋ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ E์ M์ผ๋ก ์ ๋ฌ๋์ด์ผ ํ๋ ์ํ ์์ ์ค์ด๊ธฐ ์ํด์์ด๋ค.
- call ๋ช ๋ น์ด๋ง์ด ๋ฉ๋ชจ๋ฆฌ๋จ๊ณ์์ valP๋ฅผ ํ์๋ก ํ๋ค.
- ์กฐ๊ฑด๋ถ ์ ํ๋ง์ด Execute ๋จ๊ณ์์ valP๋ฅผ ํ์๋ก ํ๋ค. (์๋ธ๋)
- ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋ ์ง์คํฐํ์ผ์ ์ฝ์ ๊ฐ์ ์ฐ์ง ์๋๋ค.
- ๋ฐ๋ผ์ ์ด ์ ํธ๋ฅผ ๋ณํฉํ์ฌ valA๋ฅผ ํตํด ์ ๋ฌํ๋ฉด์, ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ์ ์ํ ์์ ์ค์ผ ์ ์๋ค.
4.5.4 Next PC Prediction#
- ํ์ดํ๋ผ์ธ ์ค๊ณ์ ๋ชฉํ๋ ๋งค ํด๋ญ ์ฌ์ดํด๋ง๋ค ์๋ก์ด ๋ช
๋ น์ด๋ฅผ ๋ฐํํ๋ ๊ฒ
- ์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด์ , ํ์ฌ ๋ช
๋ น์ ๊ฐ์ ธ์จ ์งํ ๋ค์ ๋ช
๋ น์ด์ ์์น๋ฅผ ๊ฒฐ์ ํด์ผํจ
- ํ์ง๋ง ๊ฐ์ ธ์จ ๋ช ๋ น์ด๊ฐ ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ๋ผ๋ฉด, ๋ช ๋ น์ด๊ฐ ์คํ ๋จ๊ณ๋ฅผ ํต๊ณผํ ํ์๋ ์ ์ ์๋ค.
- ๊ฐ์ ธ์จ ๋ช ๋ น์ด๊ฐ ret๋ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋จ๊ณ๋ฅผ ํต๊ณผํ ํ์๋ ์ ์ ์๋ฐ.
- ๋๋จธ์ง๋ ๋ชจ๋ Fetch ๋จ๊ณ์์ ๊ณ์ฐ๋ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋ช
๋ น์ด์ ์ฃผ์๋ฅผ ๊ฒฐ์ ํ ์ ์๋ค.
- call๊ณผ jmp์ ๊ฒฝ์ฐ์๋ valC, ๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋ valP๊ฐ ๋๋ค.
- ๋ฐ๋ผ์ PC์ ๋ค์ ๊ฐ์ ์์ธกํ๋ฉด์, ํด๋ญ๋ง๋ค ์๋ก์ด ๋ช
๋ น์ด๋ฅผ ๋ฐํ์ํค์.
- ์กฐ๊ฑด๋ถ๋ ๋ฌด์กฐ๊ฑด ๋ด๋ค or ๋ฌด์กฐ๊ฑด ์๋ด๋ค ๋ฑ์ผ๋ก ๊ฒฐ์ ํด๋ฒ๋ฆฌ๋ฉด ๋๋ค.
- ์์ธก์ด ํ๋ ธ์๋ ์ด๋ป๊ฒ ํ๋์ง๋ 4.5.8์ฅ์์ ๋ค๋ฃจ๊ฒ ๋ค.
- ์ด ๋ฐฉ๋ฒ์ ๋ถ๊ธฐ ์์ธก (branch prediction) ์ด๋ผ๊ณ ํ๋ค.
- ์ฐ๋ฆฌ๋ ๋ญ์กฐ๊ฑด ๋ด๋ค๊ณ ์์ธกํ๊ณ ํด๋ณด์. ๋ฐ๋ผ์ PC๋ฅผ valC๋ก ์์ธกํ์.
- ret๋.. ์ด์๊ฐ ๊น๋ค. ์ฌ๊ธฐ์์๋ ๊ฑฐ์ ๋ชจ๋ ๊ฐ์ด ์ฌ ์ ์์ผ๋๊น.
- ๋ฐ๋ผ์, ์ฐ๋ฆฌ ์ค๊ณ์์๋ ret์ ๋ํด์๋ ์์ธกํ์ง ์๊ณ , Write back์ด ๋๋ ๋๊น์ง ๋ช ๋ น์ด ์ฒ๋ฆฌ๋ฅผ ๋ณด๋ฅํ๊ฒ ๋ค.
- ์ด๊ฒ๋ 4.5.8์์ ๋ค๋ฃจ์.
- Fetch ๋จ๊ณ๋ฅผ ๋ณด๋ฉด Predict PC์ valP, valC๊ฐ ๊ฝํ์๋๊ฑธ ๋ณผ ์ ์๋ค.
- ์ด๊ฑธ F_predPC์ ์ ์ฅํ๋ค.
- F_predPC์ M_valA, W_valM, M_cnd๋ฅผ ์ด์ฉํด์ Select PC๋ฅผ ์งํํ๋ค.
- ret์ผ๋๋ W_valM, jumpํ ๋๋ M_valA๋ก ๊ฐ๋๊ฐ ํ๊ฒ ๋ค.
- ์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด์ , ํ์ฌ ๋ช
๋ น์ ๊ฐ์ ธ์จ ์งํ ๋ค์ ๋ช
๋ น์ด์ ์์น๋ฅผ ๊ฒฐ์ ํด์ผํจ
4.5.5 Pipeline Hazards#
- ์์ง ์ฐ๋ฆฌ๋ ์ข ์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ๋ค.
- ์ข
์์ฑ์ ๋๊ฐ์ง ํํ๋ก ๋ํ๋๋ค.
- ๋ฐ์ดํฐ ์ข
์์ฑ
- ํ ๋ช ๋ น์ด์ ์ํด ๊ณ์ฐ๋ ๊ฒฐ๊ณผ๊ฐ ํ์ ๋ช ๋ น์ด์ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
- ์ ์ด ์ข
์์ฑ
- ํ ๋ช ๋ น์ด๊ฐ ํ์ ๋ช ๋ น์ด์ ์์น๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒฝ์ฐ
- jump, call, ret์ผ๋
- ๋ฐ์ดํฐ ์ข
์์ฑ
- ์ด ์ํ์ฑ๋ค์ ์ฐ๋ฆฌ๋ hazard๋ผ๊ณ ํ๋ค.
- ์ด๋ ๋๊ฐ์ด ๋ฐ์ดํฐ hazard, ์ ์ด hazard๋ผ๊ณ ํ๋ค.
- Data hazard
irmovq $10, %rdx irmovq $3, %rax (์ฌ๋ฌ๊ฐ์ nop) addq %rdx, %rax halt- ์ ๊ฐ์ ์ฝ๋๊ฐ ์์๋ค๊ณ ํ ๋, nop์ ๊ฐ์์ ๋ฐ๋ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์๋ ์๋ฐ์ํ ์๋ ์๋ค.
- ์๋ฅผ๋ค์ด nop๊ฐ ์ธ๊ฐ ์ด์์ด๋ผ๋ฉด ๋ฌธ์ ๊ฐ ์์ง๋ง, ์๋ค๋ฉด? addq๊ฐ rdx, rax๋ฅผ ์ฝ์๋ ์์ ๋ช ๋ น์ด๋ค์ Write back ๋จ๊ณ์ ๊ฐ์ง ๋ชปํ๊ธฐ ๋๋ฌธ
- Avoid Data Hazards by Stalling
- ์ํ์กฐ๊ฑด์ด ๋์ด์ ์ฑ๋ฆฝํ์ง ์์ ๋๊น์ง ํ์ดํ๋ผ์ธ ๋ด ํ๋ ์ด์์ ๋ช ๋ น์ด๋ฅผ ๋๊ธฐ์ํค๋ ๊ฒ
- ์์ค ์ฐ์ฐ์๋ฅผ ์์ฑํ๋ ๋ช ๋ น์ด๊ฐ ์ฐ๊ธฐ Write back ๋จ๊ณ๋ฅผ ํต๊ณผํ ๋ ๊น์ง Decode ๋จ๊ณ์ ๋ช ๋ น์ด๋ฅผ ๋๊ธฐ์ํค๋ฉด ๋๋ค.
- addq ๋ช
๋ น์ด๊ฐ Decode ๋จ๊ณ์ ์์ ๋, Execute, Memory, Write back ๋จ๊ณ์ ์๋ ๋ช
๋ น์ด์ค ํ๋๊ฐ %rdx๋ %rax๋ฅผ ์
๋ฐ์ดํธ ํ ๊ฒ์ ๊ฐ์งํ๋ฉด, ๋ช
๋ น์ด๋ฅผ ์คํ
์ผ๋งํด์ Decode ๋จ๊ณ์์ ๋๊ธฐ์ํจ๋ค.
- ๋ฌผ๋ก ์ด๋ ๋ค์ Fetch๋จ๊ณ์ ์๋ ๋ช ๋ น์ด๋ ๋ณด๋ฅ๋๋ค.
- ์ด๋ ์คํ๋จ๊ณ์ ๋ฒ๋ธ์ ์ฃผ์
ํด์ ์ฒ๋ฆฌํ๋ค.
- ์ด๋ ๋์ ์ผ๋ก ์๊ธด nop์ ๊ฐ๋ค.
- ์์ธ ๋ฉ์ปค๋์ฆ์ 4.5.8์์ ์ดํด๋ณด์.
- ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ฐฉ๋ฒ์ ๊ตฌํ์ ์ฝ์ง๋ง ์๋ฌด๋๋ ๊ฒฐ๊ณผ์ ์ธ ์ฑ๋ฅ์ด ์ข์ง ์๋ค.
- 3์ฌ์ดํด์ด๋ ์ฌ๊ฒ ๋๋๊น
- Avoiding Data Hazards by Forwarding
- PIPE๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ค ์ฐ์ฐ์๋ฅผ Decode ๋จ๊ณ์์ ๋ ์ง์คํฐ ํ์ผ์์ ์ฝ์ง๋ง, ํด๋น ์์ค ๋ ์ง์คํฐ์ค ํ๋์ ๋ํ ์ฐ๊ธฐ ์์
์ด Wrtie back ๋จ๊ณ์์ ๋๊ธฐ์ค์ผ ์๋ ์๋ค!
- ์จ์ง๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋์ , ๊ณง ์ฐ์ผ ๊ฐ์ ๊ฑฐ๊ธฐ์ Decode ๋จ๊ณ์ ํ์ณ์์ ์จ๋ฒ๋ฆฌ์.
- ์ด๋ฐ ๋ฐฉ๋ฒ์ Data Forwarding / Forwarding / Bypassing ์ด๋ผ๊ณ ํ๋ค.
- ๋ฐ์ดํฐ ํฌ์๋ฉ์ ๊ตฌํํ๊ธฐ ์ํด์ ๊ธฐ๋ณธ์ ์ธ ํ๋์จ์ด ๊ตฌ์กฐ์ ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ ์ฐ๊ฒฐ ๋ฐ ์ ์ด ๋ก์ง์ด ์์ด์ผ ํ๋ค.
- ์ด๋ ๊ฒ ๋ฐ์ดํฐ ํด์ ๋๋ฅผ ํฌ์๋ฉ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ PIPE๋ฅผ PIPE+๋ผ๊ณ ํ๋ค.
- PIPE๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ค ์ฐ์ฐ์๋ฅผ Decode ๋จ๊ณ์์ ๋ ์ง์คํฐ ํ์ผ์์ ์ฝ์ง๋ง, ํด๋น ์์ค ๋ ์ง์คํฐ์ค ํ๋์ ๋ํ ์ฐ๊ธฐ ์์
์ด Wrtie back ๋จ๊ณ์์ ๋๊ธฐ์ค์ผ ์๋ ์๋ค!
- Load/Use Data Hazards
- Memory ์์ ์ด ํ์ดํ๋ผ์ธ ํ๋ฐ๋ถ์ ์๊ธฐ์, ํฌ์๋ฉ๋ง์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ํ ํด์ ๋ ํด๋์ค๊ฐ ์กด์ฌํ๋ค.
mrmovq 0(%rdx), %rax addq %ebx, %eax- ์์ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ์์ ์ฝ์ด์จ ๊ฐ์ ๊ทธ๋๋ก ์จ์ผํ๋ค๊ณ ํด๋ณด์.
- ์ด๊ฑด ๋ฐ์ดํฐ ํฌ์๋ฉ์ผ๋ก ๋ถ๊ฐ๋ฅํ ๊ฒ ๊ฐ๋ค. ์ด๋ป๊ฒ ํด์ผํ์ง?
- ์ด๊ฑด ์ด์ฉ์์์ด Stalling ํด์ผํ๋ค.
- Stall ํ๋ฒ ํ Memory ๋จ๊ณ์์ Forward๋ก ๋ฐ๋ ค์ค๋ฉด ๋๊ฒ ๋ค!
- ์ด๋ฐ load/use Hazard๋ฅผ ํผํ๊ธฐ ์ํ stall + Forward๋ฅผ load interlock์ด๋ผ๊ณ ํ๋ค.
- ์ด๊ฒ๋ง์ด ํ์ดํ๋ผ์ธ ์ฒ๋ฆฌ๋์๊ฐ์์ํค๋ฏ๋ก, ๋งค ํด๋ญ ์ฌ์ดํด๋ง๋ค ์๋ก์ด ๋ช ๋ น์ด๋ฅผ ๋ฐํํ๋ค๋ ๋ชฉํ๋ ๊ฑฐ์ ๋๋ฌํ๋ค๊ณ ๋ณผ ์ ์๋ค.
- Control Hazards
- ์ด๋ ์์์ ๋งํ๊ฒ๊ณผ ๊ฐ์ด Fetch๋จ๊ณ์ ํ์ฌ ๋ช
๋ น์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋ช
๋ น์ด์ ์ฃผ์๋ฅผ ์ ๋ขฐํ ์ ์์๋
- ret / jump ์ ๋ํด์๋ง ์ด์
- ํนํ jump๋ ์์ธก์ ์คํจํ์๋๋ง ์ด์
- ret / jump ์ ๋ํด์๋ง ์ด์
- ret๋ fetch ํ write back ๋จ๊ณ์ ๋์
ํ ๋๊น์ง (Memory๊ฐ ๋๋ ๋๊น์ง) bubble์ ์ฃผ์
ํด์ ๋ค์ PC๋ฅผ ๊ณ์ฐํ ์ ์๋๋ก ๊ธฐ๋ค๋ฆฐ๋ค.
- bubble 3๊ฐ!
- jump๊ฐ ์ด์์ธ๋ฐ, ์ด๋ ์ผ๋จ ๋ถ๊ธฐ ์์ธก์ ํ๋ค๊ณ ๊ฐ์ ํ์. ๋ถ๊ธฐ ์์ธก์ ์คํจํ๋ฉด, ๋ช๊ฐ์ ์๋ชป๋ ๋ช
๋ น์ด๋ค์ด Fetch, Decode์ ๋ค์ด๊ฐ์๋ ์ํ์ด๋ค.
- ๊ทธ๋ฌ๋ฉด ์ด ์๋ชป๋ ๋ช ๋ น์ด / ๊ณ์ฐ๊ฐ๋ค์ ๋ฒ๋ ค์ผํ๋ค.
- ๋ฐ๋ผ์ ๋์ฝ๋ ๋ฐ ์คํ ๋จ๊ณ์ ๋ฒ๋ธ์ ์ฃผ์ ํด์, ์ด ๋ช ๋ น์ด๋ค์ ์ทจ์ (instruction squashing) ํ ์ ์๋ค.
- ์ฐ๋ฆฌ๊ฐ ๊ด์ฐฐ ๊ฐ๋ฅํ ์ํ์๋ ๋ฌธ์ ๊ฐ ์์๊ธฐ๊ณ , ๋ ํด๋ญ์ด ๋ญ๋น๋๋ค๋ ๋จ์ ๋ง ์๋ค.
- ์ด๋ ์์์ ๋งํ๊ฒ๊ณผ ๊ฐ์ด Fetch๋จ๊ณ์ ํ์ฌ ๋ช
๋ น์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋ช
๋ น์ด์ ์ฃผ์๋ฅผ ์ ๋ขฐํ ์ ์์๋
- ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ์ 4.5.8์ฅ์์ ๋ณด์. (์ค์ผ ๋ฏธ๋ฃจ๋)
4.5.6 Exception Handling#
- ํ๋ก์ธ์ ๋ด์ ๋ค์ํ ํ๋์ด ์์ธ ์ํฉ์ผ๋ก ๊ฐ ์๋ ์๋ค.
- ์ด๊ฑด ํ๋ก๊ทธ๋จ์ ์ํด ๋ด๋ถ์ ์ผ๋ก / ํน์ ์ธ๋ถ ์ ํธ์ ์ํด ์ธ๋ถ์ ์ผ๋ก ์์ฑ๋ ์ ์๋ค.
- ์ฐ๋ฆฌ ISA์๋ ๋ค์๊ณผ ๊ฐ์ ๋ด๋ถ ์์ฑ ์์ธ๊ฐ ์๋ค.
- ์ ์ง ๋ช ๋ น์ด (halt)
- ๋ช ๋ น์ด์ ํจ์ ์ฝ๋์ ์ ํจํ์ง ์์ ์กฐํฉ
- ๋ช ๋ น์ด ํ์น ๋๋ ๋ฐ์ดํฐ ์ฝ๊ธฐ/์ฐ๊ธฐ์์ ์ ํจํ์ง ์์ ์ฃผ์์ ๋ํ์ ๊ทผ
- ๋ณด๋ค ์์ ํ ํ๋ก์ธ์๋ผ๋ฉด, ๋คํธ์ํฌ ์ธํฐํ์ด์ค๊ฐ ์ ํจํท์ ์์ ํ๊ฑฐ๋ / ์ฌ์ฉ์๊ฐ ํด๋ฆญ์ ํ๋ค๋ ์ธ๋ถ ์์ธ๋ ์ฒ๋ฆฌํด์ผ ํ๋ค.
- ์์ธ๋ฅผ ๋ฐ์์ํจ ๋ช
๋ น์ด๋ฅผ ์์ธ ๋ฐ์ ๋ช
๋ น์ด (excepting instruction) ์ด๋ผ๊ณ ๋ถ๋ฅด์.
- ์ค์ ์ด๋ฐ ๋ช ๋ น์ด๋ ์กด์ฌํ์ง ์์ง๋ง, ์ ํจํ์ง ์์ ์ฃผ์์ ๊ฐ์ ๋ช ๋ น์ด๊ฐ ์กด์ฌํ๋ค๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค.
- ์์ธ์ ๋๋ฌํ๋ฉด ์ ์งํ๊ณ , ์ ์ ํ ์ํ ์ฝ๋๋ฅผ ์ค์ ํด์ผํ๋ค.
- ํ์ดํ๋ผ์ธ ์์คํ
์์ ์์ธ์ฒ๋ฆฌ๋ ๋ช๊ฐ์ง ๋ฏธ๋ฌํ ์ธ๋ถ ์ฌํญ์ ์๋ฐํ๋ค
- ์ฌ๋ฌ ๋ช
๋ น์ด์ ์ํด ๋์์ ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- Fetch / Memory ๋จ๊ณ์์ ๋์์ ๋ฐ์ํ ์ ์์ง
- ๊ทธ๋ฌ๋ฉด ์ด๋ค๊ฑธ ๋จผ์ ๋ณด๊ณ ํ ์ง ๊ฒฐ์ ํด์ผ ํ๋ค.
- ๊ธฐ๋ณธ ๊ท์น์ ๊ฐ์ฅ ๋จผ์ ์งํ๋ ๋ช ๋ น์ด์ ์ํด ํธ๋ฆฌ๊ฑฐ๋ ์์ธ์ ์ฐ์ ์์๋ฅผ๋ถ์ฌํ๋ ๊ฒ
- ๊ทธ๋ฌ๋ฉด Memory๊ฒ ๋ค
- ๋ช
๋ น์ด๊ฐ ์ฒ์ Fetch๋์ด ์์๋๊ณ ์์ธ๋ฅผ ๋ฐ์์ํจ ํ, ์๋ชป๋ ๋ถ๊ธฐ์์ธก์ผ๋ก ์ธํด ์ทจ์๋ ๊ฒฝ์ฐ
- ์ด ๋ช ๋ น์ด๋ฅผ ์ทจ์ํ์ง๋ง, ์์ธ๋ ๋ฐ์์ํค์ง ์๋๋ก ํด์ผํ๋ค.
- fetch์กฐ์ฐจ ๋๋ฉด ์๋๋ ๋ช ๋ น์ด์๊ธฐ ๋๋ฌธ
- ์์ธ๋ฅผ ๋ฐ์์ํค๋ ๋ช
๋ น์ด ๋ค์์ ์ค๋ ๋ช
๋ น์ด๊ฐ ํด๋น ์์ธ ๋ช
๋ น์ด๊ฐ ์๋ฃ๋๊ธฐ ์ ์ ์์คํ
์ํ์ ์ผ๋ถ์ ์ํฅ์ ์ค ์ ์๋ค.
- Memory ๋จ๊ณ์์ ์์ธ๋ฅผ ๋ฐ๊ฒฌํ์ง๋ง, ์ด๋ Execute์์ ์กฐ๊ฑด์ฝ๋๊ฐ์๊ฑธ ์์ ํ ๊ฒฝ์ฐ
- ์์ธ ๋ฐ์ ์ดํ์๋ ์ด๋ค ๋ช ๋ น์ด๋ ์์คํ ์ํ์ ์ํฅ์ ๋ฏธ์น๋ฉด ์๋๋๊น
- ์ฌ๋ฌ ๋ช
๋ น์ด์ ์ํด ๋์์ ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ค.
4.5.7 PIPE Stage Implementations#
- ์ด์ ํฌ์๋ฉ์ ๊ฐ์ถ Y86-64 PIPE์ ์ ์ฒด ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ค.
- PC_Relection and fetch Stage
- PC์ ๋ํ ํ์ฌ ๊ฐ์ ์ ํํ๊ณ ๋ค์ PC๊ฐ์ ์์ธก
- Select PC์์ ๋ ์ ์๋ ๊ฐ์
- F_predPC (์ฌ๋งํ ๊ฒฝ์ฐ)
- M_valA (์์ธก ์คํจํ ๋ถ๊ธฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋จ๊ณ์ ์ง์ ํ ๋ / ret๊ฐ ์๋ valP)
- W_valM (ret ๋ช ๋ น์ด๊ฐ ์ํฌ๋ฐฑ ๋จ๊ณ์ ์ง์ ํ ๋)
- Decode and Write-Back Stages
- dstE, dstM, srcA, srcB ๋ฅผ ์ ๊ด๋ฆฌํ๊ธฐ
- ํฌ์๋ฉ์ ์ ๊ฒฝ์จ์ผํ๋ค.
- ํฌ์๋ฉ ์์ค๋ ์ด 5๊ฐ๊ฐ ์กด์ฌํ๋ค.
- e_valE -> e_dstE
- m_valM -> M_dstM
- M_valE -> M_dstE
- W_valM -> W_dstM
- W_valE -> W_dstE
- ์ด 5๊ฐ์ค์ ํด๋นํ์ง ์์ผ๋ฉด ๋ธ๋ญ์ ๋ ์ง์คํฐ ํฌํธ A์์ ์ฝ์ d_rvalA๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.
- ์์ ์์๋๋ก ์ฐ์ ์์๊ฐ ์กํ์๋๋ฐ, ์ด๋ ์๋นํ ์ค์ํ๋ค.
- Execute Stage
- SEQ๋๋ ๋น์ทํ๋ค.
- ์กฐ๊ฑด ์ฝ๋๋ฅผ ์
๋ฐ์ดํธํ๋ set CC๊ฐ m_stat๊ณผ W_stat ์ ํธ๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ๋๊ฒ๋ง ์ฐจ์ด
- ํ์ดํ๋ผ์ธ ์๋จ๊ณ์ ์์ธ ์ํ์ธ ๋ช ๋ น์ด๊ฐ ์์ผ๋ฉด ์กฐ๊ฑด์ฝ๋ ์ ๋ฐ์ดํธ๋ฅผ ๋ง๊ธฐ ์ํด!
- Memory Stage
- SEQ๋๋ ๊ฑฐ์ ๋์ผํ๋ค.
4.5.8 Pipeline Control logic#
- ์ด์ ๋ฐ์ดํฐ ํฌ์๋ฉ / ๋ถ๊ธฐ์์ธก๊ณผ ๊ฐ์ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ค๊ฐ์ง ์ ์ด ์ฌ๋ก๋ฅผ ์ฒ๋ฆฌํ๊ณ , PIPE์ ์ค๊ณ๋ฅผ ์๋ฃํ์.
- Load/use Hazard
- ํ์ฌ์ดํด ์ ์งํด์ผํจ
- ret
- ret์ด write-back์ ๋๋ฌํ ๋๊น์ง ํ์ดํ๋ผ์ธ์ด ์ ์งํด์ผํจ
- ์๋ชป๋ ์์ธก ๋ถ๊ธฐ
- ๋ช ๋ น์ด๋ค์ ์ทจ์ํ๊ณ , ์ ํ๋ช ๋ น์ด ๋ค์ ๋ช ๋ น์ด์์ ๋ช ๋ น์ด ์ถ์ถ์ด ์์๋์ด์ผํจ
- Exception
- ์์ธ๊ฐ ๋ฐ์ํด์ ๋, ๊ด์ฐฐ ๊ฐ๋ฅํ ์ํ์ ์ ๋ฐ์ดํธ๋ฅผ ๋นํ์ฑํํด์ผํจ
- Load/use Hazard
- Desired Handling of Special Control Cases
- load/use
- 4.5.5์์ ๋ฐฐ์ด๊ฒ๊ณผ ๊ฐ์ด, mrmovq, popq๋ง์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ฐ
- ์ด๋ค ์ค ํ๋๊ฐ execute ์คํ ์ด์ง์ ์๊ณ
- ๋ชฉ์ ์ง ๋ ์ง์คํฐ๋ฅผ ํ์๋กํ๋ ๋ช ๋ น์ด๊ฐ decode์ ์์๋
- ๋๊ธฐ์ํค๊ณ ๋ค์ ์ฌ์ดํด์ ์คํ๋จ๊ณ์ bubble์ ์ฃผ์ ํด์ผ ํ๋ค.
- ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ D, F๋ฅผ ๊ณ ์ ํด์ผ ํ๋ค.
- ret
- 3์ฌ์ดํด ๋๊ธฐ์ํค๋ฉด ๋๋ค.
- ์๋ชป๋ ์์ธก ๋ถ๊ธฐ
- D, E๋จ๊ณ์ ๋ฒ๋ธ์ ์ฃผ์ ํ๋ค.
- ์ฌ๋ฐ๋ฅธ ๋ช ๋ น์ด๋ฅผ fetchํ๋ค.
- ์์ธ ๋ฐ์
- ํ์ดํ๋ผ์ธ ๊ตฌํ์ด ์ํ๋ ISA๋์๊ณผ ์ผ์นํ๋๋ก ํ๋ค.
- ์ด๊ฒ ์ข ์ด๋ ต๋ค.
- ์์ธ๊ฐ ํ๋ก๊ทธ๋จ ์คํ์ค Fetch / Memory ๋๋จ๊ณ์์ ๋ฐ์ํ ์ ์๊ณ
- ํ๋ก๊ทธ๋จ ์ํ๊ฐ Execute / Memory / write-back ์ธ๊ณณ์์ ์ ๋ฐ์ดํธ๋๊ธฐ ๋๋ฌธ
- ๊ฐ ๋จ๊ณ์๋ stat์ด ํฌํจ๋์ด์์ด์, ๋ช ๋ น์ด๋ง๋ค ๊ทธ ์ํ๋ฅผ ์ถ์ ํ๋ค.
- ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์ ๋ณด๋ฅผ ์ํ ์ผ๋ถ๋ก ๊ธฐ๋กํ๊ณ , ๋ฉ๋ชจ๋ฆฌ ๋จ๊ณ์ ๋๋ฌํ๋ฉด, ํ์ ๋ช
๋ น์ด๊ฐ ๊ด์ฐฐ ๊ฐ๋ฅํ์ํ๋ฅผ ์์ ํ์ง ๋ชปํ๋๋ก
- Execute ๋จ๊ณ์ ๋ช ๋ น์ด๊ฐ ์กฐ๊ฑด ์ฝ๋๋ฅผ ์ค์ ํ์ง ๋ชปํ๋๋ก ๋นํ์ฑํ
- Memory ๋จ๊ณ์ ๋ฒ๋ธ์ ์ฃผ์ ํ์ฌ ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ๋ก์ ์ฐ๊ธฐ ๋นํ์ฑํ
- Write back ๋จ๊ณ์ ์์ธ๋ฅผ ์ ๋ฐํ๋ ๋ช
๋ น์ด๊ฐ ์์ ๊ฒฝ์ฐ ์ ์ง
- write-back์ด ๋ ์ง์คํฐ ํ์ผ์ ๊ฐฑ์ ํ๋ ์ ์ผํ ๋จ๊ณ์ด๊ธฐ ๋๋ฌธ!
- load/use
- Detecting Special Control Conditions
- ์ด๋ฐ ํน์ ์ํฉ์ด ๋ฐ์ํ๋ ์กฐ๊ฑด
- load/use
- E_icode โ {IMRMOVQ, IPOPQ} && E_dstM โ {d_srcA, d_srcB}
- ret
- IRET โ {D_icode, E_icode, M_icode}
- ์๋ชป๋ ์์ธก ๋ถ๊ธฐ
- E_icode = IJXX&& !e_Cnd
- ์์ธ
- m_stat โ {SADR, SINS, SHLT} || W_stat โ {SADR, SINS, SHLT}
- Pipeline Control Mechanisms
- ํด๋ญ์ด ํ๋, stall๊ณผ bubble์ ๋ฐ๋ผ ๊ฐฑ์ / ๊ณ ์ / nopํ๋ฅผ ํ ์ ์๊ฒ ๋ค
- stall๊ณผ bubble์ ๋์์ 1๋ก ์ค์ ํ๋๊ฒ์ ์ค๋ฅ๋ก ๊ฐ์ฃผํ๋ค.
- Combinations of Control Conditions
- ํ์ค์์๋ ์ฌ๋ฌ ํน์์กฐ๊ฑด์ด ๋์์๋ฐ์ํ ์๋ ์๋ค.
- ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ํธ๋ฐฐํ์ ์ผ๋ก ์ธํ ์ ์ ํด๋์, ๋ฐ๋งํ ์ค์ฒฉ์ด ๋ง์ด ์๋ค.
- ํด๋ดค์ ์์ธก์คํจ์ ret1, load/use์ ret1์ ๋.
- ์์ ์กฐํฉ A, ๋ค๋ฅผ ์กฐํฉ B๋ผ๊ณ ํ์.
- ์กฐํฉ A์์๋ ๋ถ๊ธฐ๊ฐ ์๋ชป ์์ธก๋์์์ ๊ฐ์งํ๊ณ ret๋ฅผ ์ทจ์ํ๋ค.
- ์กฐํฉ B์์, ret๋๋ฌธ์ ๋ฒ๋ธ์ ๋ฃ์ผ๋ฉด ์ข ๊ณค๋ํด์ง๋ค.
- load/use์์๋ Decode๋ฅผ stallํ๋ ค๊ณ ํ๊ณ
- ret๋๋ฌธ์๋ Decode ๋จ๊ณ์ ๋ฒ๋ธ์ด ๋ค์ด๊ฐ๋๊น
- ret๋ฅผ ์ํด ํ ์ฌ์ดํด ์ง์ฐ๋์ด์ผํ๋ค.
- Control logic implementation
- ์ด๋ฅผ ๋ชจ๋ ๊ด๋ฆฌํ๋ Pipeline control Logic์ด๋ผ๋๊ฒ ์์ด์ผํ๋ค.
- ์ฌ๊ธฐ์ F_stall, D_bubble, D_stall, E_bubble…๋ฑ์ ๊ด๋ฆฌํ๊ณ
- D_icode, d_srcA, d_srcB, e_Cnt..๋ฑ์ ๋ฐ์์ ์ฒ๋ฆฌํด์ผํ๋ค.
4.5.9 Performance Analysis#
- ํ์ดํ๋ผ์ธ ์ ์ด ๋ก์ง๋๋ฌธ์ ์ฐ๋ฆฌ ๋ชฉ์ ์ด์๋ ๋งค ํด๋ญ๋ง๋ค ๋ช
๋ น์ด ํ๋ ์ฒ๋ฆฌํ๊ธฐ๋ฅผ ๋ชปํ๊ฒ ๋๊ธดํ๋ค.
- ์ด๊ฑด ๋ฒ๋ธ์ ์ฃผ์
๋น๋๋ฅผ ์ธก์ ํจ์ผ๋ก์จ ์ ๋ํํ ์ ์๋ค.
- ์ด ์ธก์ ์ CPI (Cycle Per Instruction)์ด๋ผ๊ณ ํ๋ค.
- ์ด ์ธก์ ์ ํ์ดํ๋ผ์ธ์ ํ๊ท ์ฒ๋ฆฌ ์๋์ ์ญ์์ด์ง๋ง, ์๊ฐ์ ํผ์ฝ์ด๊ฐ ์๋ ํด๋ญ ์ฌ์ดํด ๋จ์๋ก ์ธก์ ๋๋ค.
- $C_i$๋ฅผ ๋ช
๋ น์ด ๊ฐ์, $C_b$๋ฅผ ๋ฒ๋ธ ๊ฐ์๋ผ๊ณ ํ๋ฉด
- $CPI = \frac{C_i + C_b}{c_i} = 1.0 + \frac{C_b}{C_i}$
- ๋ฐ๋ผ์ ๋ช ๋ น์ด๋น ๋ฒ๋ธ ๋น์จ๋ก ๋ํ๋ผ ์ ์๋๋ฐ, ๋ฒ๋ธ์ด ๋ค์ด๊ฐ๋ ์์ดใ ๋ ์ธ๊ฐ์ง๊ฐ ์์ผ๋ฏ๋ก
- $CPI = 1.0 + lp + mp + rp$
- load penelty / mispredicted branch penalty / return penalty
- ์ด๋ ๋น์จ๋ค๋ก ๊ณ์ฐํ ์ ์๊ฒ ๋ค.
- ์ด๊ฑด ๋ฒ๋ธ์ ์ฃผ์
๋น๋๋ฅผ ์ธก์ ํจ์ผ๋ก์จ ์ ๋ํํ ์ ์๋ค.
4.5.10 Unfinished Business#
- ์์ง๋ ๋๋ฝ๋ ์ฌํญ๋ค์ด ์กด์ฌํ๋ค.
- Multicycle Instructions
- ์ ์ ๊ณฑ์ / ๋๋์ ์ด๋ ๋ถ๋์์์ ์ฐ์ฐ์ ์ํํ๋ ๋ช ๋ น์ด๋ ๊ตฌํํด์ผ ํ๋ค.
- ALU๋ฅผ ์ฌ์ฉํด์ ์คํ๋จ๊ณ ๋ก์ง์ ๊ธฐ๋ฅ์ ํ์ฅํ๋ฉด ๋๊ฒ ์ง๋ง, ์ฑ๋ฅ์ด ๋๋ฌด ๋ฎ์์ง๋ค.
- ๋๋์ ์ ๊ฒฝ์ฐ 64์ฌ์ดํด์ด๋ ๊ฑธ๋ฆด์๋ ์๋ค..
- ๊ทธ๋์ ๋
๋ฆฝ์ ์ผ๋ก ์๋ํ๋ ํน์ ํ๋์จ์ด ๊ธฐ๋ฅ ์ ๋์ ์ฌ์ฉํ๋ค.
- ๋ฌผ๋ก ํ์ดํ๋ผ์ด๋๋ ๋์ด์๋ค
- Interfacing with the Memory System
- ๋ช ๋ น์ด ์ธ์ถ๊ณผ ๋ฐ์ดํฐ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ ํ ๋ฉ๋ชจ๋ฆฌ ์์ ์๊ณ
- ๊ฐ์์ฃผ์๋ฅผ ์ฐธ์กฐํ๊ธฐ์ ์ ์ค์ ์ฃผ์๋ฅผ ๊ฐ์ผํ๊ณ …
- ๋ฉ๋ชจ๋ฆฌ๊ฐ์ด ๋์คํฌ์ ์์ด์ ์๋ฐฑ๋ง ํด๋ญ ์ฌ์ดํด์ด ํ์ํ ์๋
- ์ด๊ฑด 6, 9์ฅ์์ ๋์ค์ ๋ ์์ธํ ๋ฐฐ์ธ ๊ฒ์ด๋ค.
- ์ด์์ฒด์ , ๊ฐ์๋ฉ๋ชจ๋ฆฌ, ์บ์ ๋ฑ๋ฑ๋ฑ
โ์ง๋ฌธ ์ฌํญ#
๋๋ณด๋ค๋ ๋ฉด์ ๊ณผ ์ ๋ ฅ ๋ฌธ์ ์ธ๋ฐ, ๋ญ ๋์ถฉ ๋ง๋ค. ๊ฝค๋ ์ค์ํ ์ต์ ํ๋ค.
MUX๋ฅผ ์ด๋ค! ์๋์ ๊ฐ์ ์ฝ๋๋ผ๊ณ ์๊ฐํ ์ ์๊ฒ ๋ค.
valA = MUX(
srcA == e_dstE ? e_valE : // Execute ๋จ๊ณ์์ forwarding
srcA == m_dstM ? m_valM : // Memory ๋จ๊ณ์์ forwarding
srcA == W_dstE ? W_valE : // Write-back ๋จ๊ณ์์ forwarding
...
RegisterFile[srcA] // ์ ์ ๊ฒฝ๋ก
)์ฌ์ค ํ๋ CPU๋ Return Address Stack (RAS)๋ผ๋๊ฑธ ๋ณ๋ ํ๋์จ์ด๋ก ์จ์ ret ์์ธก์ ๊ฑฐ์ ์๋ฒฝํ๊ฒ ํ๋ค๊ณ ํ๋ค. ๊ทธ๋์ ret์ ์ํ control hazard ํ๋ํฐ๋ 0์ ์๋ ดํ๋ค. ๊ทธ๋์ ์ค์ ๋ก๋ push rbp, mov rbp, rsp, sub rsp, N ๋ฑ์ ์คํ ํ๋ ์ ๋ช ๋ น์ด๋ผ๋๊ฐ ํจ์ ํธ์ถ ๊ท์ฝ / ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ / ์ธ๋ผ์ด๋ ๋ถ๊ฐ ๋ฑ์ ์ค๋ฒํค๋๊ฐ ๋ ํฌ๋ค.
์๋ ์ด๊ฒ ๋ง๋ค๋! ๋ฒ๋ธ์ ๋ค์๊ณผ ๊ฐ๋ค. icode = nop / dstE = 0xF / dstM = 0xF / srcA = 0xF / srcB = 0xF / valC = 0 … ์์ ๊ฐ์ด ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ ์์ฒด๋ฅผ ๋ฌดํดํ ๊ฐ๋ค๋ก ๋ฎ์ด ์ฐ๋๊ฒ์ด๋ค!
๋ง๋ค. ๋๋จธ์ง๋ ์ด์์ฒด์ ์ ์์ญ. ์ค์ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค. ์์ธ ๋ฐ์ -> ํ๋์จ์ด๊ฐ ํ์ฌ ์ํ (PC, ๋ ์ง์คํฐ ๋ฑ) ์ ์ฅ -> ์ปค๋์ ์์ธ ํธ๋ค๋ฌ๋ก ์ ์ด๊ถ ์ด๋ -> ์ด์์ฒด์ ๊ฐ ํ๋ก์ธ์ค ์ข ๋ฃ / ์๊ทธ๋ ์ ์ก / ๋ค๋ฅธ ํ๋ก์ธ์ค ์ค์ผ์ฅด๋ง ๋ฑ ํ๋จ -> ํด๋น ํ๋ก๊ทธ๋จ๋ง ์ข ๋ฃ, ๋๋จธ์ง๋ ๊ณ์ ์คํ Ch.8์์ ๊ตฌ๊ฒฝํ์.
๋ญ ๊ทธ๋ ๊ฒ ์ํ๊ธด ํ๋๋ฐ, ์ํผ ์ ์ค๋๋ค๊ณ ํ๋ค.
