์์ ๊ธ์์ ์ดํด๋ณธ ๋ฐ์ดํฐํจ์ค์ ์ ์ด๋ฅผ ์์ธํ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ง ALU ์ ์ด ์ ๋
RISC-V ALU๋ ์ ์ด ์ ๋ ฅ 4๊ฐ๋ฅผ ์ฌ์ฉํ๋ ๋ค์ 4๊ฐ์ ์กฐํฉ์ ์ ์ํฉ๋๋ค.
ALU๋ ๋ช ๋ น์ด ์ข ๋ฅ์ ๋ฐ๋ผ ์์ ๋ค ๊ฐ์ง ๊ธฐ๋ฅ๋ค ์ค ํ๋๋ฅผ ์ํํ๊ฒ ๋ฉ๋๋ค.
ld, sd ๋ช ๋ น์ด์ธ ๊ฒฝ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํ ๋ง์ ์ฉ์ผ๋ก ALU๋ฅผ ์ฌ์ฉํฉ๋๋ค.
R ํ์ ๋ช ๋ น์ด์ ๊ฒฝ์ฐ์๋ ๋ช ๋ น์ด์ funct7 ํ๋([31 : 25])์ funct3 ํ๋([14:12])๊ฐ์ ๋ฐ๋ผ์ ๋ค ๊ฐ์ง ์ฐ์ฐ(AND, OR, add, sub)๋ค ์ค ํ๋๋ฅผ ์ํํ๊ฒ ๋ฉ๋๋ค.
์กฐ๊ฑด๋ถ ๋ถ๊ธฐ ๋ช ๋ น์ด(beq)์ ๊ฒฝ์ฐ ALU๋ ๋ ํผ์ฐ์ฐ์์ ๋บ์ ์ ํ ํ ๊ฒฐ๊ณผ๊ฐ 0์ธ์ง ์๋์ง๋ฅผ ํ ์คํธํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ค์ ํตํด ALU ์ ์ด ์ ๋์ ๋ง๋ค ์ ์์ต๋๋ค.
ALU ์ ์ด ์ ๋์ ์ ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ช ๋ น์ด์ funct7 ํ๋
- ๋ช ๋ น์ด์ funct3 ํ๋
- ALUOp๋ผ ๋ถ๋ฆฌ๋ 2๋นํธ ์ ์ด ํ๋ (์ฃผ ์ ์ด ์ ๋์ด ์์ฑํฉ๋๋ค.)
์ด๋ค์ ํตํด 4๋นํธ ALU ์ ์ด ์ ํธ๋ฅผ ๋ฐ์์ํฌ ์ ์์ต๋๋ค.
โญ๏ธ ALUOp
ALUOp๋ ALU๊ฐ ์ํํด์ผ ํ ์ฐ์ฐ์ ํ์ํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
00 - ๋ง์ ์ ์ํ(์ ์ฌ๋ ์ ์ฅ ๋ช ๋ น์ด์ ๊ฒฝ์ฐ)
01 - ๋บ์ ๊ณผ ๊ฒฐ๊ณผ์น๊ฐ 0์ธ์ง ํ ์คํธ(beq์ ๊ฒฝ์ฐ)
10 - funct7๊ณผ funct3์ ํตํด ์ธํด ALU์ ์ฐ์ฐ์ ๊ฒฐ์
ALU ์ ์ด ์ ๋์ ์ถ๋ ฅ์ 4๋นํธ ์ ํธ์ด๋ฉฐ, ์ด 4๋นํธ ์ ํธ๋ ์์ ALU ์ ์ด ์ ๋ ฅ 4๋นํธ์ ์กฐํฉ ์ค ํ๋๋ก์จ ALU๋ฅผ ์ง์ ์ ์ดํฉ๋๋ค.
๋ค์์ ALU ์ ์ด ์ ๋ ฅ(ALU control input)์ด ์ด๋ป๊ฒ ์์ฑ๋๋์ง์ ๋ํ ํ์ ๋๋ค.
์ด๋ ALUOp ์ ํธ๋ ์ฃผ ์ ์ด ์ ๋(main control unit)์ด ๋ง๋ค์ด๋ด๋๋ฐ, ์ด ๊ณผ์ ์ ์กฐ๊ธ ์ด๋ฐ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ALUOp๊ฐ 00์ด๊ฑฐ๋ 01์ธ ๊ฒฝ์ฐ์๋ Funct7์ด๋ Funct3์ ๊ฐ์ ๊ด๊ณ ์์ด ALU ์ ์ด ์ ๋ ฅ(ALU control input)์ ๋ง๋ค์ด๋ด๊ธฐ ๋๋ฌธ์ ์ด๋ค์ don't care ์ฒ๋ฆฌ ํ์์ต๋๋ค.
์ฃผ ์ ์ด ์ ๋์ด ALUOp๋ฅผ ์์ฑํ๊ณ , ALU ์ ์ด ์ ๋์ ์ด๊ฒ์ ์ ๋ ฅ์ผ๋ก ๋ฐ์์ ALU๋ฅผ ์ ์ดํ๋ ์ค์ ์ ํธ๋ฅผ ๋ง๋ค์ด ๋ด๋ ํ์์ ๋ค๋จ๊ณ ๋์ฝ๋ฉ์ ๋ง์ด ์ฌ์ฉ๋๋ ๊ตฌํ ๊ธฐ๋ฒ์ ๋๋ค.
๋ค๋จ๊ณ ์ ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ฃผ ์ ์ด ์ ๋์ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
๋ํ ์ฌ๋ฌ ๊ฐ์ ์์ ์ ์ด ์ ๋์ ์ฌ์ฉํ๋ฉด ์ ์ด ์ ๋์ ์๋๋ฅผ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค.
์ ์ด ์ ๋์ ์๋๊ฐ ํด๋ญ ์ฌ์ดํด ์๊ฐ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก ์ด๋ฌํ ์ต์ ํ๋ ์ค์ํฉ๋๋ค.
๐ง ALU ์ ์ด ์ ๋ ฅ(๋นํธ) ๋ง๋ค์ด๋ด๊ธฐ
2๋นํธ์ ALUOp ํ๋์, funct ํ๋๋ค(funct3, funct7)์ 4๋นํธ์ ALU ์ ์ด ๋นํธ๋ก ์ฌ์์ํค๊ธฐ ์ํ์ฌ ์ง๋ฆฌํ๋ฅผ ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
00์ ๊ฒฝ์ฐ ld ์ด๊ฑฐ๋ sd ๋ช ๋ น์ด์ ๋๋ค.
01์ beq ๋ช ๋ น์ด์ ๋๋ค.
10์ R-format ๋ช ๋ น์ด์ ๋๋ค.
ALUOp์ ๊ฐ์ผ๋ก๋ 11์ด ์ฌ์ฉ๋์ง ์์ผ๋ฏ๋ก ์ ๋ ์ ๋ ฅ๋์ง ์๋๋ค ์๊ฐํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด๋ค์ don't care ํญ์ผ๋ก ์ฒ๋ฆฌํ์์ต๋๋ค.
๋ํ ์์ ์ดํด๋ณธ ๊ฒ ์ฒ๋ผ ALUOp๊ฐ 00์ด๊ฑฐ๋ 01์ธ ๊ฒฝ์ฐ์๋ funct ํ๋๋ค์ ๊ฐ์ ์๋ฌด๋ฐ ์ํฅ์ด ์๊ธฐ ๋๋ฌธ์ don't care์ ๋๋ค.
์ง๊ธ๊น์ง๋ opcode์ 2๋นํธ ์ ํธ(ALUOp)๋ฅผ ์ ์ด ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ ALU ์ ์ด ์ ๋์ ์ค๊ณ ๋ฐฉ๋ฒ์ ์์๋ณด์์ต๋๋ค.
์ด์ ๋ถํฐ๋ ์ฃผ ์ ์ด ์ ๋์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ง ์ฃผ ์ ์ด ์ ๋
์ฐ์ ๋ฐ์ดํฐํจ์ค์ ํ์ํ ๋ช ๋ น์ด ํ๋์ ์ ์ด์ ๋ค์ ์์๋ด๋ ๊ฒ์ผ๋ก ์์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
โญ๏ธ ๋ช ๋ น์ด ํ์์ ํน์ง
๋ช ๋ น์ด ํ๋๋ค์ ๋ฐ์ดํฐํจ์ค์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๊ธฐ ์ํด์ ๋ค ๊ฐ์ง ๋ช ๋ น์ด ์ข ๋ฅ,
์ฆ ์ฐ์ ๋ช ๋ น์ด, ์ ์ฌ ๋ช ๋ น์ด, ์ ์ฅ ๋ช ๋ น์ด, ์กฐ๊ฑด๋ถ ๋ถ๊ธฐ ๋ช ๋ น์ด ์ข ๋ฅ์ ํ์์ ๋ค์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
opcode ํ๋๋ ํญ์ ๋ช ๋ น์ด์ [6 : 0] ๋นํธ์ ์กด์ฌํฉ๋๋ค.
opcode์ ๋ฐ๋ผ์๋ funct3 ํ๋์ funct7 ํ๋๊ฐ ํ์ฅ opcode ํ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
R-ํ์ ๋ช ๋ น์ด์ ๋ถ๊ธฐ ๋ช ๋ น์ด์ ์ฒซ ๋ฒ์งธ ๋ ์ง์คํฐ ํผ์ฐ์ฐ์๋ ํญ์ ๋นํธ [19 : 15]์ ์๋๋ฐ,
์ด ํ๋๊ฐ ์ ์ฌ/์ ์ฅ ๋ช ๋ น์ด์์๋ ๋ฒ ์ด์ค ๋ ์ง์คํฐ๋ฅผ ์ง์ ํฉ๋๋ค.
R-ํ์ ๋ช ๋ น์ด์ ๋ถ๊ธฐ ๋ช ๋ น์ด์ ๋ ๋ฒ์งธ ๋ ์ง์คํฐ ํผ์ฐ์ฐ์๋ ํญ์ ๋นํธ [24 : 20]์ ์์ต๋๋ค.
์ด ํ๋๊ฐ ์ ์ฅ ๋ช ๋ น์ด์์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ ์ง์คํฐ ํผ์ฐ์ฐ์๋ฅผ ์ง์ ํฉ๋๋ค.
๋ถ๊ธฐ๋ ์ ์ฌ/์ ์ฅ ๋ช ๋ น์ด์ ๋ค๋ฅธ ํผ์ฐ์ฐ์ ํ๋๋ 12๋นํธ ๋ณ์์ ๋๋ค.
R- ํ์ ๊ณผ ์ ์ฌ ๋ช ๋ น์ด์ ๋ชฉ์ ์ง ๋ ์ง์คํฐ๋ ํญ์ ๋นํธ [11 : 7]์ ์์ต๋๋ค.
์ด์ ์์ ์ ๋ณด๋ฅผ ๋ชจ๋ ์ฌ์ฉํ์ฌ ํ์ํ ๋ชจ๋ ์ ์ด ์ ํธ๋ฅผ ์ถ๊ฐํ ๋ฐ์ดํฐ ํจ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โญ๏ธ ์ ์ด ์ ํธ๋ค์ ์ญํ
์ ๊ทธ๋ฆผ์ ์ ์ด ์ ํธ๋ค์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ํธ ์ด๋ฆ | ๋ฐ์ํ์ง ์์ ๊ฒฝ์ฐ(0) | ๋ฐ์ํ ๊ฒฝ์ฐ(1) |
PCSrc (= Branch+ zero) | PC + 4๊ฐ ์๋ก์ด PC์ ๊ฐ์ด ๋ฉ๋๋ค. | ๋ถ๊ธฐ ๋ชฉ์ ์ง ์ฃผ์๊ธฐ ์๋ก์ด PC์ ๊ฐ์ด ๋ฉ๋๋ค. |
MemRead | X | Address ์ ๋ ฅ์ด ์ง์ ํ๋ ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ ๋ด์ฉ์ Read data ์ถ๋ ฅ์ผ๋ก ๋ด๋ณด๋ ๋๋ค. |
MemtoReg | ALU ์ถ๋ ฅ์ด ๋ ์ง์คํฐ์ Write data ์ ๋ ฅ์ด ๋ฉ๋๋ค. | ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ ์ถ๋ ฅ์ด ๋ ์ง์คํฐ์ Write data ์ ๋ ฅ์ด ๋ฉ๋๋ค. |
ALUOp(2๋นํธ) | ALU ์ ์ด ์ ๋์ ์
๋ ฅ์ผ๋ก ๋ค์ด๊ฐ๋ ์ ํธ๋ฅผ ๋ง๋ค์ด๋
๋๋ค. 00 : ๋ง์ (์ ์ฌ๋ ์ ์ฅ ๋ช ๋ น์ด์ ๊ฒฝ์ฐ) 01 : ๋บ์ ๊ณผ ๊ฒฐ๊ณผ๊ฐ 0์ธ์ง ํ ์คํธ(beq์ ๊ฒฝ์ฐ) 10 : funct7๊ณผ funct3์ผ๋ก ์ธํด ๊ฒฐ์ ๋๋ ์ฐ์ฐ |
|
MemWrite | X | Adress ์ ๋ ฅ์ด ์ง์ ํ๋ ๋ฐ์ดํฐ ๋ฉ๋ชจ๋ฆฌ ๋ด์ฉ์ Write data ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ๊ฟ๋๋ค. |
ALUSrc | ๋ ์ง์คํฐ ํ์ผ์ ๋ ๋ฒ์งธ ์ถ๋ ฅ(Read data 2)์ด ALU์ ๋ ๋ฒ์งธ ํผ์ฐ์ฐ์๊ฐ ๋ฉ๋๋ค. | ๋ช ๋ น์ด์ 12๋นํธ ๋ณ์๊ฐ ๋ถํธํ์ฅ์ด ๋์ด ALU์ ๋ ๋ฒ์งธ ํผ์ฐ์ฐ์๊ฐ ๋ฉ๋๋ค. |
RegWrite | X | Write register์ ์ ๋ ฅ์ด ์ง์ ํ๋ ๋ ์ง์คํฐ์ Write data์ ๊ฐ์ ์๋๋ค. |
์ ์ด ์ ํธ์ ๊ฐ์ opcode[6 : 0]์๋ง ์์กดํฉ๋๋ค.
์ด์ opcode ๊ฐ์ ๋ํ์ฌ ์ ์ด ์ ํธ๊ฐ 0, 1, don't care ์ค ์ด๋ค ๊ฐ์ด ๋์ด์ผ ํ๋์ง๋ฅผ ์ ์ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
R ํ์ ๋ช ๋ น์ด๋ค์ ๋ ์ง์คํฐ๋ค๋ง์ ์ฌ์ฉํ๋ฉฐ, ์ด๋ค ์ฌ์ด์ ์ ์ผํ ์ฐจ์ด์ ์ ALU๊ฐ ์ํํ๋ ์ฐ์ฐ์ด๊ธฐ ๋๋ฌธ์ ํ๋๋ก ๋ฌถ์ด ํํํ ์ ์์ต๋๋ค. (ALUOp๋ 10์ด๋ฏ๋ก ALU ์ ์ด ์ ๋์์ funct ํ๋๋ค์ ์ถ๊ฐ๋ก ํ์ธํ์ฌ ALU ์ ์ด ์ ํธ๋ฅผ ๋ฐ์์ํต๋๋ค.)
๋ํ RegWrite๊ฐ 0์ธ ๊ฒฝ์ฐ ๋ ์ง์คํฐ์ ์ฐ์ง๋ฅผ ์์ผ๋ฏ๋ก MemtoReg ๊ฐ์ด ๋ฌด์์ด ๋๋ ์๊ด์์ต๋๋ค.
๐ง R- format ๋ช ๋ น์ด์ ๋ํ Datapath
๐ง Load ๋ช ๋ น์ด์ ๋ํ Datapath
๐ง BEQ ๋ช ๋ น์ด์ ๋ํ Datapath
'๐ฅ Computer Science > ์ปดํจํฐ ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ ๊ตฌ์กฐ] ๋ฉ๋ชจ๋ฆฌ[0] - ๋ฉ๋ชจ๋ฆฌ์ ๊ธฐ์ ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต๊ตฌ์กฐ (0) | 2022.12.03 |
---|---|
[์ปดํจํฐ ๊ตฌ์กฐ] ํ๋ก์ธ์[2] - ํ์ดํ๋ผ์ด๋ (0) | 2022.11.24 |
[์ปดํจํฐ ๊ตฌ์กฐ] ํ๋ก์ธ์[0] - ๋ฐ์ดํฐํจ์ค ๊ตฌํ (0) | 2022.11.08 |
[์ปดํจํฐ ๊ตฌ์กฐ] ์ปดํจํฐ ์ฐ์ฐ[4] - ๋ถ๋์์์ ์ฐ์ฐ (0) | 2022.10.25 |
[์ปดํจํฐ ๊ตฌ์กฐ] ์ปดํจํฐ ์ฐ์ฐ[3] - ๋๋์ (1) | 2022.10.25 |