๐ง ๋จ์ผ ์ฌ์ดํด ๊ตฌํ
๋จ์ผ ์ฌ์ดํด ๊ตฌํ์ ๋น๋ก ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋ค ํ๋๋ผ๋ ๋นํจ์จ์ฑ ๋๋ฌธ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
์ด์ ๋ ๋๋ฌด ๋ถ๋ช ํ๋ฐ, ๋จ์ผ ์ฌ์ดํด ์ค๊ณ์์๋ ํด๋ญ ์ฌ์ดํด์ด ๋ชจ๋ ๋ช ๋ น์ด์ ๋ํด์ ๊ฐ์ ๊ธธ์ด๋ฅผ ๊ฐ์ ธ์ผ ํ๊ธฐ ๋๋ฌธ์ ํด๋ญ ์ฌ์ดํด์ ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฌ๋ ๋ช ๋ น์ด์ ๋ง์ถ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํด๋น ๋ช ๋ น์ด๋ ์ ์ฌ ๋ช ๋ น์ด๋ผ๋ ๊ฒ์ด ๊ฑฐ์ ํ์คํ๋ฐ, ์ ์ฌ ๋ช ๋ น์ด๋ ๋ช ๋ น์ด ๋ฉ๋ชจ๋ฆฌ, ๋ ์ง์คํฐ ํ์ผ, ALU, ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ, ๋ ์ง์คํฐ ํ์ผ์ 5๊ฐ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๐ง ํ์ดํ๋ผ์ด๋์ ์ดํด
ํ์ดํ๋ผ์ด๋์ ์ฌ๋ฌ ๋ช ๋ น์ด๊ฐ ์ค์ฒฉ๋์ด ์คํ๋๋ ๊ตฌํ ๊ธฐ์ ์ ๋๋ค.
ํ์ดํ๋ผ์ด๋์ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ์ธํ์ ์งํํ๋ ์์๋ฅผ ๋ค์ด ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ฐ์ ํ์ดํ๋ผ์ด๋์ ์ฌ์ฉํ์ง ์์ ์ธํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ธํ๊ธฐ์ ์ท์ ๋ฃ์ต๋๋ค.
- ์ธํ์ด ๋๋๋ฉด ๊ฑด์กฐ๊ธฐ์ ๋ฃ์ต๋๋ค.
- ๊ฑด์กฐ๊ฐ ๋๋๋ฉด ์ท์ ์ ๊ฐ์ด๋ก๋๋ค.
- ์ท์ ์ท์ฅ์ ๋ฃ์ต๋๋ค.
์ด๋ ๊ฒ ํ ๊ณผ์ ์ด ๋๋๋ฉด ๋ค์ ์ท๋ค์ ๋นจ๊ธฐ ์์ํฉ๋๋ค.
์ด๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ด๋ฅผ ํ์ดํ๋ผ์ด๋์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์์ง๋๋ค.
์ฆ ์ธํ์ด ๋๋๋ ์๊ฐ ๋ค์ ์ธํ๋ฌผ์ ์ธํ๊ธฐ์ ๋ฃ๊ณ , ๋์์ ๋นจ๋๊ฐ ๋๋ ์ท์ ๊ฑด์กฐ๊ธฐ์ ๋ฃ์ต๋๋ค.
์ดํ ๊ณผ์ ๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ถฉ๋ถํ ์ดํดํ ์ ์์ ๊ฒ์ด๋ผ ์๊ฐํ์ฌ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
์ ์ธํ ์์ ๋ฅผ ํตํ ์ค์ํ ๊ด์ฐฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ ๋จ๊ณ๋ง๋ค ๋ณ๊ฐ์ ์์์ ์ฌ์ฉํ๋ค๋ฉด ์์ ๋ค์ ํ์ดํ๋ผ์ด๋ ํ ์ ์์ต๋๋ค.
ํ์ดํ๋ผ์ธ์ ์ญ์ค์ ์ธ ์ ์ ์๋ง ํ๋๋ง์ ์ธํํ๋ ๊ณผ์ ๊ณผ ์ฌ๋ฌ ์ท๋ค์ ์ธํํ๋ ๊ณผ์ ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๋์ผํ๋ค๋ ๊ฒ์ ๋๋ค.
ํ์ดํ๋ผ์ด๋์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ด ํฅ์๋๋ ์ด์ ๋ ๊ฐ ๋จ๊ณ๋ฅผ ๋ณ๋ ฌ๋ก ๋์์์ผ ๊ฐ์ ์๊ฐ์ ๋ ๋ง์ ์ผ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ์ดํ๋ผ์ด๋์ ์ฒ๋ฆฌ ์๊ฐ์ ์คํ๋ ค ์ฆ๊ฐ์ํค์ง๋ง, ์ฒ๋ฆฌ๋์ ๊ทน๋ํ์์ผ ์๊ฐ์ ๊ฐ์์ํต๋๋ค.
๐ง ํ์ดํ๋ผ์ธ๊ณผ ๋ฐ์ดํฐํจ์ค ์ ์ด
์ฐ์ ๋ช ๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ด 5๋จ๊ณ๋ก ๋๋ ์ ์์ต๋๋ค.
IF (Instruction Fetch): ๋ช ๋ น์ด ์ธ์ถ
ID (Instruction Decode): ๋ช ๋ น์ด ํด๋ ๋ฐ ๋ ์ง์คํฐ ํ์ผ ์ฝ๊ธฐ
EX (Execution/Address Calculation): ์คํ ๋๋ ์ฃผ์ ๊ณ์ฐ
MEM (Memory Access) : ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ
WB (Write Back) : ์ฐ๊ธฐ
์๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ 5๊ฐ์ ๋จ๊ณ๊ฐ ๋ฐ์ดํฐํจ์ค๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์ด๋์ ๋ ์๋ง๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ช ๋ น์ด์ ๋ฐ์ดํฐ๊ฐ ์ด ๋ค์ฏ ๋จ๊ณ๋ฅผ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ง๋๊ฐ๋ฉด์ ์คํ์ ๋ง์นฉ๋๋ค.
๊ทธ๋ฌ๋ ์ ํ๋ฆ์ ์ด๊ธฐ๋ ๋ ๊ฐ์ง ์์ธ๊ฐ ์์ต๋๋ค.
WB ๋จ๊ณ : ์ด ๋จ๊ณ์์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐํจ์ค ์ค์์ ์๋ ๋ ์ง์คํฐ ํ์ผ์ ์๋๋ค.
PC ๋ค์ ๊ฐ ์ ์ : ์ฆ๊ฐ๋ PC๊ฐ๊ณผ MEM ๋จ๊ณ์ ๋ถ๊ธฐ ์ฃผ์ ์ค์์ ๊ณ ๋ฆ ๋๋ค
์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ๊ฑฐ๊พธ๋ก ํ๋ฅด๋ ๋ฐ์ดํฐ๋ ํ์ฌ ๋ช ๋ น์๋ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉฐ ํ์ดํ๋ผ์ธ ๋ค์ชฝ์ ์กด์ฌํ๋ ๋ช ๋ น์ด์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
WB ๋จ๊ณ์์๋ ๋ฐ์ดํฐ ํด์ ๋๋ฅผ, PC์ ๋ค์ ๊ฐ์ ์ ์ ํ๋ ๋จ๊ณ์์๋ ์ ์ด ํด์ ๋๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
๋ช ๋ น์ด์ 5๋จ๊ณ ๊ฐ๊ฐ์ ์ํํ๋ ๋์, ๊ฐ ๋ช ๋ น์ด์ ๊ฐ, ๋ ์ง์คํฐ์ ๊ฐ ๋ฑ์ ์ ์งํ๊ธฐ ์ํด์ ํด๋น ๋จ๊ณ์์ ์ฌ์ฉ์ค์ธ ๊ฐ์ ๋ ์ง์คํฐ์ ์ ์ฅํด์ผ ํฉ๋๋ค.
์ด๋ ์ฌ์ฉ๋๋ ๋ ์ง์คํฐ๋ฅผ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ๋ผ๊ณ ํฉ๋๋ค.
์๋๋ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ๊ฐ ๊ฐ์กฐ๋ ํ์ดํ๋ผ์ธ ๋ฐ์ดํฐํจ์ค์ ๋๋ค.
๋ชจ๋ ๋ช ๋ น์ด๋ ๋งค ํด๋ญ ์ฌ์ดํด๋ง๋ค ํ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ์์ ๋ค์ ๋ ์ง์คํฐ๋ก ์ ์งํฉ๋๋ค.
ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ์ ์ด๋ฆ์ ํด๋น ๋ ์ง์คํฐ๊ฐ ๋ถ๋ฆฌํ๊ณ ์๋ ๋ ๋จ๊ณ์ ์ด๋ฆ์ ๋ฐ์ ๋ถ์ฌ์ง๋๋ค.
์๋ฅผ ๋ค์ด IF ๋จ๊ณ์ ID ๋จ๊ณ ์ฌ์ด์ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ๋ IF/ID๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ฐ๊ธฐ(WB) ๋จ๊ณ ๋ค์๋ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ๊ฐ ์์ต๋๋ค.
๋ชจ๋ ๋ช ๋ น์ด๋ ํ๋ก์ธ์์ ์ํ(๋ ์ง์คํฐ ํ์ผ, ๋ฉ๋ชจ๋ฆฌ, PC)๋ฅผ ๊ฐฑ์ ํด์ผ ํฉ๋๋ค.
์ด๋ ๊ฒ ๊ฐฑ์ ๋๋ ์ํ๋ ๋ณ๋์ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
๋ชจ๋ ๋ช ๋ น์ด๋ PC๊ฐ์ ์ฆ๊ฐ์ํค๋ , ๋ถ๊ธฐ ๋ชฉ์ ์ง ์ฃผ์๋ก ๋ฐ๊พธ๋ ์๋ฌดํผ PC ๊ฐ์ ๋ฐ๊ฟ๋๋ค.
PC๋ IF ๋จ๊ณ ์์ ์๋ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ๋ผ ์๊ฐํ ์ ์์ต๋๋ค.
์ด์ ๋ช ๋ น์ด๊ฐ ํ์ดํ๋ผ์ธ์ ๊ฐ๊ฐ์ ๋จ๊ณ๋ฅผ ํต๊ณผํด ๊ฐ๋ฉด์ ํ์ฑํ๋๋ ๋ฐ์ดํฐํจ์ค ๋ถ๋ถ์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ ์ง์คํฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ์ ๋์๋, ๋ ์ง์คํฐ ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์ค๋ฅธ์ชฝ ๋ฐ์ ํ๋๊ฒ,
์ฐ๊ธฐ๋ฅผ ํํ ๋์๋ ์ผ์ชฝ ๋ฐ์ ํ๋๊ฒ ์น ํฉ๋๋ค.
๐ IF ๋จ๊ณ - ๋ชจ๋ ๋ช ๋ น์ด ๋์ผ
๐ ID ๋จ๊ณ - ๋ชจ๋ ๋ช ๋ น์ด ๋์ผ
๐ EX ๋จ๊ณ - ์ ์ฌ ๋ช ๋ น์ด์ ๊ฒฝ์ฐ
์ ์ฌ ๋ช ๋ น์ด๋ immediate์ ๋ฒ ์ด์ค ๋ ์ง์คํฐ 1๊ฐ๋ฅผ EX ๋จ๊ณ์์ ์ฌ์ฉํฉ๋๋ค.
๐ MEM ๋จ๊ณ - ์ ์ฌ ๋ช ๋ น์ด์ ๊ฒฝ์ฐ
์ ์ฌ ๋ช ๋ น์ด๋ MEM ๋จ๊ณ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
๐ WB ๋จ๊ณ - ์ ์ฌ ๋ช ๋ น์ด์ ๊ฒฝ์ฐ
์ ์ฌ ๋ช ๋ น์ด๊ฐ ์คํ๋๋ ๊ณผ์ ์ ํตํด ํ์ดํ๋ผ์ธ์ ํ์ ๋จ๊ณ์์ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ๋ฅผ ๋ฐ๋ผ ์ ๋ฌ๋์ด์ผ ํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ํ ๋ฐ์ดํฐํจ์ค์ ๊ฐ ๊ตฌ์ฑ ์์(๋ช ๋ น์ด ๋ฉ๋ชจ๋ฆฌ, ๋ ์ง์คํฐ ์ฝ๊ธฐ ํฌํธ, ALU, ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ, ๋ ์ง์คํฐ ์ฐ๊ธฐ ํฌํธ ๋ฑ)๋ ํ ํ์ดํ๋ผ์ธ ๋จ๊ณ์์๋ง ์ฌ์ฉ๋ ์ ์๋ค๋ ๊ฒ๋ ์ ์ ์์ต๋๋ค.
๊ทธ๋ ์ง ์๋ค๋ฉด ๊ตฌ์กฐ์ ํด์ ๋๋ฅผ ๋ฐ์์ํต๋๋ค.
์ ์ ์ฌ ๋ช ๋ น์ด ์ค๊ณ๋ ์ฌ์ค ์๋ชป๋ ์ค๊ณ์ธ๋ฐ, ์ด์ ๋ถํฐ ๊ทธ ์ด์ ๋ฅผ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ์ฌ ๋ช ๋ น์ด์ ์ต์ข ๋จ๊ณ์์ ๊ฐ์ด ๋ฐ๋๋ ๋ ์ง์คํฐ๋, IF/ID ๋จ๊ณ์ ์์นํ ๋ช ๋ น์ด์ ์ํด ์ ๊ณต๋ฉ๋๋ค.
์ด๋ ์ ์ฌ ๋ช ๋ น์ด๋ณด๋ค ๋์ค์ ๋์ค๋ ๋ช ๋ น์ด์ ๋๋ค.
๋ฐ๋ผ์ ์ ์ฌ ๋ช ๋ น์ด๊ฐ ์ฝ์ด์จ ๊ฐ์ ์ ํํ ์์น์ ์ ์ฅํ๊ธฐ ์ํด์๋ ๋ชฉ์ ์ง ๋ ์ง์คํฐ ๋ฒํธ๋ฅผ ์ ์ฅํ ํ์๊ฐ ์์ต๋๋ค.
์ด๋ฅผ ํํํ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐํจ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๐ง ํ์ดํ๋ผ์ธ ์ ์ด
์ด์ ํ์ดํ๋ผ์ธ ๋ฐ์ดํฐํจ์ค์ ์ ์ด๋ฅผ ์ถ๊ฐํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด๋ ์ด์ ๊ธ์์ ์ฌ์ฉ๋ ์ ์ด์ ๋์ผํฉ๋๋ค.
์ ์ด๋ ID ๋จ๊ณ์์ ์์ฑ๋๋ฉฐ, ์์ฑ๋ 7๊ฐ์ ์ ์ด์ ์ค 2๊ฐ๊ฐ EX๋จ๊ณ์์ ์ฌ์ฉ๋๊ณ ๋๋จธ์ง 5๊ฐ์ ์ ์ด์ ์ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๋๋ค.
์ด๋ฅผ ์ถ๊ฐํ ๋ฐ์ดํฐํจ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ดํ๋ผ์ด๋์ ์ํ ์ ์ด๋ฅผ ๋ช ์ํ๊ธฐ ์ํด์๋ ๊ฐ ํ์ดํ๋ผ์ธ ๋จ๊ณ ๋์์ ์ ์ด๊ฐ๋ค์ ์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๊ฐ ์ ์ด์ ์ ํ ํ์ดํ๋ผ์ธ ๋จ๊ณ์์๋ง ํ์ฑํ๋๋ ๊ตฌ์ฑ ์์๋ค๊ณผ ๊ด๋ จ ์๊ธฐ ๋๋ฌธ์ ์ ์ด์ ์ ํ์ดํ๋ผ์ธ ๋จ๊ณ์ ๋ฐ๋ผ ๋ค์ฏ ๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์์ต๋๋ค.
1. ๋ช ๋ น์ด ์ธ์ถ(IF) : ์์
๋ช ๋ น์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๋ ์ ์ด ์ ํธ์ PC์ ์ฐ๋ ์ ์ด ์ ํธ๋ ํญ์ ์ธ๊ฐ๋์ด ์์ผ๋ฏ๋ก ์ด ํ์ดํ๋ผ์ธ ๋จ๊ณ์๋ ํน๋ณํ ์ ์ดํ ๊ฒ์ด ์์ต๋๋ค.
2. ๋ช ๋ น์ด ํด๋ / ๋ ์ง์คํฐ ํ์ผ ์ฝ๊ธฐ(ID) : ์์
RISC-V ๋ช ๋ น์ด ํ์์์๋ 2๊ฐ์ ๊ทผ์์ง ๋ ์ง์คํฐ ๋ฒํธ๊ฐ ํญ์ ๊ฐ์ ์์น์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด ํ์ดํ๋ผ์ธ ๋จ๊ณ์์๋ ํน๋ณํ ์ ์ดํ ๊ฒ์ด ์์ต๋๋ค.
3. ์คํ / ์ฃผ์ ๊ณ์ฐ (EX) : ALUOp, ALUSrc
์ด ์ ํธ๋ค์ ALU ์ฐ์ฐ์ ์ ํํ๊ณ , Read data 2์, ๋ถํธํ์ฅ๋ ์์น๊ฐ(immediate) ์ค ํ๋๋ฅผ ALU์ ์ ๋ ฅ์ผ๋ก ์ ํํฉ๋๋ค.
4. ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ (MEM) : MemRead, MemWrite, Branch
์ด ์ ํธ๋ค์ ๊ฐ๊ฐ ์ ์ฌ(ld), ์ ์ฅ(sd), beq ๋ช ๋ น์ด์ผ ๋ ์ธ๊ฐ๋ฉ๋๋ค.
(Branch๋ ์ฌ์ค ์ด ์ ๋จ๊ณ์, ํน์ ๋ ์ค์ฌ์ ID ๋จ๊ณ์์ ๊ฒฐ์ ๋ ์ ์์ต๋๋ค. ์ด๋ ์ ์ด ํค์ ๋๋ฅผ ์ค์ด๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋๋ค.)
5. ์ฐ๊ธฐ (WB) : MemToReg, RegWrite
๐ง ํ์ดํ๋ผ์ธ ํด์ ๋(hazard)
๋ค์ ๋ช ๋ น์ด๊ฐ ๋ค์ ํด๋ญ ์ฌ์ดํด์ ์คํ๋ ์ ์๋ ์ํฉ์ด ์์ต๋๋ค.
์ด๋ฌํ ์ฌ๊ฑด์ ํด์ ๋๋ผ ๋ถ๋ฅด๋๋ฐ, ํด์ ๋์๋ ๊ตฌ์กฐ์ ํด์ ๋, ๋ฐ์ดํฐ ํด์ ๋, ์ ์ด ํด์ ๋๊ฐ ์์ต๋๋ค.
๐ง ๊ตฌ์กฐ์ ํด์ ๋
๊ฐ์ ํด๋ญ ์ฌ์ดํด์ ์คํํ๊ธฐ๋ฅผ ์ํ๋ ๋ช ๋ น์ด์ ์กฐํฉ์ ํ๋์จ์ด๊ฐ ์ง์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ด์ ์ ์ดํด๋ณธ ๋ฐ์ดํฐํจ์ค ๊ทธ๋ฆผ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ๊ฐ๋ผ๊ณ ์๊ฐ์ ํ๋ค๋ฉด load ํน์ store ์ธ์คํธ๋ญ์ ์ ์คํํ๊ฒ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ฒ ๋๋๋ฐ, ์ด ๊ฒฝ์ฐ ๋ค์ ์ธ์คํธ๋ญ์ ์ fetchํ๊ธฐ ์ํด์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ฏ๋ก ๊ตฌ์กฐ์ ํด์ ๋๋ฅผ ํผํ ์ ์์ต๋๋ค.
(์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ช ๋ น์ด๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ ์บ์์ ๋ฐ์ดํฐ๋ฅผ ์ํ ๋ฉ๋ชจ๋ฆฌ ์บ์๋ฅผ ๋ฐ๋ก ๋์ด ์ด๋ค์ ์ฌ์ฉํฉ๋๋ค.)
๋ํ ๋ ์ง์คํฐ์ ๊ฒฝ์ฐ์๋ ์ฝ๊ธฐ์ ์ฐ๊ธฐ๊ฐ ๋์์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ ๊ตฌ์กฐ์ ํด์ ๋๋ฅผ ํผํ ์ ์์ง๋ง, ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํด๋ญ ์ฌ์ดํด์ ์ ๋ฐ๋ถ์๋ ๋ ์ง์คํฐ ์ฐ๊ธฐ๊ฐ, ํ๋ฐ๋ถ์๋ ๋ ์ง์คํฐ ์ฝ๊ธฐ๊ฐ ๋ฐ์ํ๋ค๊ณ ํ๊ฒ ์ต๋๋ค.
๐ง ๋ฐ์ดํฐ ํด์ ๋
์ด๋ค ๋จ๊ณ๊ฐ ๋ค๋ฅธ ๋จ๊ณ๊ฐ ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ํ์ดํ๋ผ์ธ์ด ์ง์ฐ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฐ์ํฉ๋๋ค.
๋ค์ ์ํฉ์ ์๊ฐํด ๋ณด๋ฉด ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค.
add x19, x0, x1
sub x2, x19, x3
์ ์ํฉ์ ๋ณ ๋ค๋ฅธ ์กฐ์น๊ฐ ์๋ค๋ฉด ๋ฐ์ดํฐ ํด์ ๋๊ฐ ๋ฐ์ํ์ฌ ํ์ดํ๋ผ์ธ์ ์ง์ฐ์ํฌ ์ ์์ต๋๋ค.
add ๋ช ๋ น์ด์์๋ 5๋ฒ์งธ ๋จ๊ณ์์ x19์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ฐ๊ธฐ ๋๋ฌธ์, 2๋ฒ์งธ ๋จ๊ณ์์ ๋ ์ง์คํฐ๋ฅผ ์ฝ์ด์ผ ํ๋ sub ๋ช ๋ น์ด์ ๊ฒฝ์ฐ 3๊ฐ์ ํด๋ญ ์ฌ์ดํด์ ๋ญ๋นํ๊ฒ ๋ฉ๋๋ค.
์ฆ ์์ ๊ฐ์ด ์ปดํจํฐ ํ์ดํ๋ผ์ธ์์๋ ์ด๋ค ๋ช ๋ น์ด๊ฐ ์์ง ํ์ดํ๋ผ์ธ์ ์๋ ์์ ๋ช ๋ น์ด์ ์ข ์์ฑ์ ๊ฐ์ง ๋ ๋ฐ์ดํฐ ํด์ ๋๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ฌํ ๋ฐ์ดํฐ ํด์ ๋๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ ๋ฐฉ์ ๋ฌ(forwarding)์ด ์์ต๋๋ค.
์ ๋ฐฉ์ ๋ฌ์ ๋ํ ์ฐํ์ ๋ฌ(bypassing)์ด๋ผ๊ณ ๋ ํฉ๋๋ค.
๐ ์ ๋ฐฉ์ ๋ฌ
์ ๋ฐฉ์ ๋ฌ์ ๋ช ๋ น์ด๊ฐ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์๋ค๋ ๊ด์ฐฐ์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ต๋๋ค.
์์ ๋ฐ์ดํฐ ํด์ ๋๊ฐ ๋ฐ์ํ๋ ์ฝ๋๋ฅผ ์์๋ก ๋ค๋ฉด, ALU๊ฐ add์ ํฉ์ ๋ง๋ค์ ๋ง์ ์ด๊ฒ์ sub์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ณ๋์ ํ๋์จ์ด๋ฅผ ์ถ๊ฐํ์ฌ ์ ์์ ์ผ๋ก ์ป์ ์ ์๋ ๊ฐ์ ๋ด๋ถ ์์์ผ๋ก๋ถํฐ ์ผ์ฐ ๋ฐ์์ค๋ ๊ฒ์ ์ ๋ฐฉ์ ๋ฌ ๋๋ ์ฐํ์ ๋ฌ์ด๋ผ ํฉ๋๋ค.
๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ ๋ฐฉ์ ๋ฌ์ ๋ชฉ์ ์ง ๋จ๊ณ๊ฐ ๊ทผ์์ง ๋จ๊ณ๋ณด๋ค ์๊ฐ์ ์ผ๋ก ๋ฆ์ ๊ฒฝ์ฐ์๋ง ์ ํจํ๋จ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค๋ฉด ์ฒซ ๋ฒ์ฌ ๋ช ๋ น์ด์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๋จ๊ณ[MEM]์ ์ถ๋ ฅ์ผ๋ก๋ถํฐ ๋ค์ ๋ช ๋ น์ด์ ์คํ ๋จ๊ณ[ID] ์ ๋ ฅ์ผ๋ก์ ์ ๋ฐฉ์ ๋ฌ ํต๋ก๋ ์ ํจํ ํต๋ก๊ฐ ๋ ์ ์์ต๋๋ค.
์ ๋ฐฉ์ ๋ฌ์ ์ ๋์ํ์ง๋ง, ์ด๊ฒ๋ง์ผ๋ก๋ ๋ชจ๋ ํ์ดํ๋ผ์ธ ์ง์ฐ์ ๋ง์ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ฒซ ๋ฒ์งธ ๋ช ๋ น์ด๊ฐ add๊ฐ ์๋ ld ๋ช ๋ น์ด๋ผ๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
์ด๋ ์๋์ ๊ฐ์ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค.
์ ์ฌ ๋ช ๋ น์ด์ ๊ฒฝ์ฐ 4๋จ๊ณ(MEM) ์ดํ์๋ง ์ฌ์ฉํ ์ ์์ง๋ง, ์ด๋ sub ๋ช ๋ น์ด์ ์ ๋ ฅ์ผ๋ก๋ ๋๋ฌด ๋ฆ์ต๋๋ค.
๋ฐ๋ผ์ ์ ๊ทธ๋ฆผ์ฒ๋ผ ์ ๋ฐฉ์ ๋ฌ์ ์ฌ์ฉํ๋๋ผ๋ ํ ๋จ๊ณ ์ง์ฐ๋์ด์ผ ํ๋ฉฐ, ์ด๋ฌํ ํน์ํ ํด์ ๋๋ฅผ ์ ์ฌ-์ฌ์ฉ ๋ฐ์ดํฐ ํด์ ๋(load-use data hazard)๋ผ ๋ถ๋ฆ ๋๋ค.
์ ๊ทธ๋ฆผ์ ํ์ดํ๋ผ์ธ ์ง์ฐ(pipline stall)์ด๋ผ๋ ์ค์ํ ๊ฐ๋ ์ ๋ณด์ฌ์ค๋๋ค.
์ง์ฐ(stall)์ ๊ฑฐํ(bubble)์ด๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค.
์ง์ฐ์ ์ ์ด ํด์ ๋ ๋ถ๋ถ์์ ๋ค์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ์ฌ ์ฌ์ฉ ๋ฐ์ดํฐ ํด์ ๋์ ๊ฒฝ์ฐ ์ง์ฐ์ ์ฌ์ฉํ๊ฑฐ๋ ํน์ ์ ์ฌ ์ฌ์ฉ ๋ฐ์ดํฐ๋ฅผ ํผํ ์ ์๊ฒ ๋ช ๋ น์ด์ ์์๋ฅผ ๋ฐ๊พธ๋ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. (๋ช ๋ น์ด์ ์์๋ฅผ ๋ฐ๊พธ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ชจ๋ ๋ฐ์ดํฐ ํด์ ๋๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.)
๐ง ์ ์ด ํด์ ๋
๋ค๋ฅธ ๋ช ๋ น์ด๋ค์ด ์คํ ์ค์ ํ๋์ ๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๊ฐ์ ๊ธฐ๋ฐ์ ๋ ๊ฒฐ์ ์ ํ ํ์๊ฐ ์์ ๋ ๋ฐ์ํฉ๋๋ค.
branch ์ธ์คํธ๋ญ์ ์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ ์ด ํด์ ๋๊ฐ ๋ฐ์ํฉ๋๋ค.
์ ์ด ํด์ ๋๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ํด๊ฒฐ์ฑ ์ผ๋ก๋ ์ง์ฐ๊ณผ, ์์ธก์ด ์์ต๋๋ค.
๐ ์ง์ฐ (Stall)
๋ช ๋ น์ด์ ๊ฒฐ๊ณผ๋ฅผ ํ๋จํ ๋๊น์ง ํ์ดํ๋ผ์ธ์ ์ ์ง์ํค๋ ๋ฐฉ๋ฒ์ ๋๋ค.
ํ์ฌ ์ดํด๋ณธ ๋ฐ์ดํฐํจ์ค์ ํ๋์จ์ด๋ฅผ ์ข ๋ ์ถ๊ฐํ๊ณ ์์น๋ฅผ ์ฎ๊ธฐ๋ฉด ๋ ๋ฒ์งธ ๋จ๊ณ(ID)์์ ๋ ์ง์คํฐ๋ฅผ ํ ์คํธํ๊ณ ๋ถ๊ธฐ ์ฃผ์๋ฅผ ๊ณ์ฐํ ํ PC๊ฐ์ ๋ฐ๊พธ๋๋ก ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ๋ฐ๊พธ๋๋ผ๋, ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ๋ฅผ ์คํํ๋ ํ์ดํ๋ผ์ธ์ ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์คํ๋ ๊ฒ์ ๋๋ค.
์ง์ฐ์ ์ํด ๊ฑฐํ์ฒ๋ผ ๋์ํ๋, ์ฆ ์๋ฌด๋ฐ ํจ๊ณผ๋ ์๋ ๋ช ๋ น์ด(nop)๋ฅผ ์ฝ์ ํ๋ ๋ฐฉ๋ฒ์ 7๊ฐ์ ์ ์ด ์ ํธ(RegWrite, ALuSrc, ALUOp, MemToReg, MemRead, MemWrite, Branch)๋ชจ๋์ 0์ ํ ๋นํ๋ฉด nop ๋ช ๋ น์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๐ ์์ธก (Prediction)
์์ธก์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์์ธก์ด ๋ง๋๋ค๋ฉด ํ์ดํ๋ผ์ธ์ ์ฑ๋ฅ์ ๋จ์ด๋จ๋ฆฌ์ง ์์ง๋ง, ์์ธก์ด ํ๋ ธ๋ค๋ฉด ํ์ดํ๋ผ์ธ์ด ์ง์ฐ๋ฉ๋๋ค.
๋ฐ๋ณต๋ฌธ ๋ฑ์ ์๊ฐํ๋ค๋ฉด ์ค์ ๋ก ์ฌ์ฉ๋๋ ๋ถ๊ธฐ์ ๊ฒฝ์ฐ ์ฑ๊ณตํ๋ ์ผ์ด์ค๊ฐ ๋ง๊ฒ ์ง๋ง,
๊ตฌํ์ด ๋ณต์กํด์ง๊ธฐ์ RISC-V์ ๊ฒฝ์ฐ ์คํจํ๋ค๊ณ ์์ธกํฉ๋๋ค.
๋ง์ผ ๋ถ๊ธฐ๊ฐ ์ผ์ด๋๋ค๋ฉด ์ธ์ถ๋๊ณ ํด๋ ๋์๋ ๋ช ๋ น์ด๋ค์ ๋ฒ๋ฆฌ๊ณ ๋ถ๊ธฐ ๋ชฉ์ ์ง์์ ์คํ์ ๊ณ์ํฉ๋๋ค.
๋ช ๋ น์ด๋ฅผ ๋ฒ๋ฆฌ๊ธฐ ์ํด์๋ (์ ์ฌ-์ฌ์ฉ ๋ฐ์ดํฐ ํด์ ๋๋ ๋ง์ฐฌ๊ฐ์ง๋ก) ๊ฒฝ์ฐ์ฒ๋ผ ์๋์ ์ ์ด๊ฐ์ 0์ผ๋ก ๋ง๋ค๋ฉด ๋ฉ๋๋ค.
์ ์ฌ-์ฌ์ฉ ๋ฐ์ดํฐ ํด์ ๋์ ๊ฒฝ์ฐ, ID ๋จ๊ณ์ ์ ์ด๊ฐ์ 0์ผ๋ก ๋ฐ๊พธ๋ ์ผ๋ง ํ๊ณ ๊ทธ ํ์๋ ์์ฐ์ค๋ฝ๊ฒ ํ์ดํ๋ผ์ธ์ ํต๊ณผํ๋๋ก ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ถ๊ธฐ ๋ช ๋ น์ด๋ MEM ๋จ๊ณ์ ๋์ฐฉํ์ ๋ ID, IF, EX ๋จ๊ณ์ ์ ์ด๊ฐ์ 0์ผ๋ก ๋ฐ๊พธ๋ ์ผ๋ง ํ๊ณ ๊ทธ ํ์๋ ์์ฐ์ค๋ฝ๊ฒ ํ์ดํ๋ผ์ธ์ ํต๊ณผํ๋๋ก ํฉ๋๋ค.
์์ `์ง์ฐ`์ ๋ํ ์ค๋ช ์์ ์ดํด๋ณด์๋ฏ์ด, ๋ถ๊ธฐ ๊ฒฐ์ ์ ๋ ๋ ์๋น๊ธด๋ค๋ฉด, ๋ฒ๋ฆฌ๋ ๋ช ๋ น์ด์ ์๊ฐ ์ค์ด๋ญ๋๋ค.
(์ด๋ ์ง์ฐ์ ๊ฐ์์ ๋์ผํฉ๋๋ค)
๋ถ๊ธฐ ๊ฒฐ์ ์ ์ข ๋ ๋นจ๋ฆฌ ์งํํ๊ธฐ ์ํด์๋ ๋ถ๊ธฐ ๋ชฉ์ ์ง ์ฃผ์์ ๊ณ์ฐ๊ณผ ๋ถ๊ธฐ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ์ผ์ด ์ข ๋ ์ผ์ฐ ๋ฐ์ํด์ผ ํฉ๋๋ค.
์ด ์ค ์ฌ์ด ๋ถ๋ถ์ ๋ถ๊ธฐ ์ฃผ์ ๊ณ์ฐ์ ๋์ด์ฌ๋ฆฌ๋ ๊ฒ์ ๋๋ค.
IF/ID ํ์ดํ๋ผ์ธ ๋ ์ง์คํฐ์๋ ์ด๋ฏธ PC๊ฐ๊ณผ ์์น ํ๋๊ฐ ๋ค์ด์์ต๋๋ค.
๋ฐ๋ผ์ ๋ถ๊ธฐ ๋ง์ ๊ธฐ๋ฅผ EX ๋จ๊ณ์์ ID ๋จ๊ณ๋ก ์ฎ๊ธฐ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ข ๋ ์ด๋ ค์ด ๋ถ๋ถ์ ๋ถ๊ธฐ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๊ฒ์ ๋๋ค.
beq ๋ช ๋ น์ด๋ ๋ ๋ ์ง์คํฐ ๊ฐ์ด ๊ฐ์์ง ์์๋ณด๊ธฐ ์ํด ID ๋จ๊ณ์์ ์ฝ์ ๋ ์ง์คํฐ ๊ฐ์ ๋น๊ตํด์ผ ํฉ๋๋ค.
๋ ๋ ์ง์คํฐ๊ฐ ๊ฐ์์ง๋ฅผ ์์๋ณด๋ ค๋ฉด ๋นํธ๋ณ๋ก XOR์ ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ORํ๋ฉด ๋ฉ๋๋ค.
๋ถ๊ธฐ ํ ์คํธ๋ฅผ ID ๋จ๊ณ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ์ถ๊ฐ์ ์ธ ์ ๋ฐฉ์ ๋ฌ ์ ๋๊ณผ ํด์ ๋ ๊ฒ์ถ ํ๋์จ์ด๋ฅผ ํ์๋ก ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฌํ ๊ฒ์ ์ถ๊ฐํ์ฌ ์ป์ ์ํด๋ณด๋ค ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ ์คํ์ ID ๋จ๊ณ๋ก ์ฎ๊น์ผ๋ก์จ ์ป๋ ์ฑ๋ฅ ํฅ์์ด ํจ์ฌ ํฝ๋๋ค.
๋ถ๊ธฐ ํ ์คํธ๋ฅผ ID ๋จ๊ณ๋ก ์ฎ๊ธฐ๊ณ ๋๋ค๋ฉด ์์ธก ์คํจ ์ ๋ฒ๋ ค์ผ ํ๋ ๋ช ๋ น์ด์ ์๊ฐ 1๊ฐ๋ก ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๋๋ค.
'๐ฅ Computer Science > ์ปดํจํฐ ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ ๊ตฌ์กฐ] ๋ฉ๋ชจ๋ฆฌ[1] - ์บ์(Cache) (0) | 2022.12.04 |
---|---|
[์ปดํจํฐ ๊ตฌ์กฐ] ๋ฉ๋ชจ๋ฆฌ[0] - ๋ฉ๋ชจ๋ฆฌ์ ๊ธฐ์ ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต๊ตฌ์กฐ (0) | 2022.12.03 |
[์ปดํจํฐ ๊ตฌ์กฐ] ํ๋ก์ธ์[1] - ๋ฐ์ดํฐํจ์ค ์ ์ด (0) | 2022.11.09 |
[์ปดํจํฐ ๊ตฌ์กฐ] ํ๋ก์ธ์[0] - ๋ฐ์ดํฐํจ์ค ๊ตฌํ (0) | 2022.11.08 |
[์ปดํจํฐ ๊ตฌ์กฐ] ์ปดํจํฐ ์ฐ์ฐ[4] - ๋ถ๋์์์ ์ฐ์ฐ (0) | 2022.10.25 |