엔지니어가 되고 싶은 공돌이
11. Datapath Including Controls 본문
11. 1. Datapath Control Signals
1) RegDst: 0일 때 rt를 입력받고, 1일 때 rd를 입력 받습니다.
2) RegWrite: 0일 때 아무런 일도 생기지 않고, 1일 때 Write Data를 Write Register에 입력합니다.
3) ALUSrc: 0일 때 두 번째 Register가 입력이 되고, 1일 때 명령어의 하위 16비트가 부호확장되어 ALU의 피연산자가 됩니다.
4) PCSrc: 0일 때 PC + 4가 새로운 PC 값이 되고, 1일 때 분기 목적지 주소가 PC값이 됩니다.
5) MemRead: 0일 때 아무런 일도 생기지 않고, 1일 때 Data를 내보냅니다.
6) MemWrite: 0일 때 아무런 일도 생기지 않고, 1일 때 Data를 Data Memory에 씁니다.
7) MemtoReg: 0일 때 ALU출력을 Register에 쓰고, 1일 때 Data Memory의 출력을 Register에 씁니다.
[R Type] : add, sub, and, or, slt
1) Instruction을 Instruction Memory에서 가져오고 PC값을 4만큼 증가시킵니다.
2) rs, rt로 지정된 Two Registers의 값을 읽으면서, Control Signals을 계산합니다.
3) ALU 작업을 수행하고 결과 값을 Register에 Write합니다.
[I Type]: lw
1) Instruction을 Instruction Memory에서 가져오고 PC값을 4만큼 증가시킵니다.
2) rs로 지정된 One Register의 값을 읽습니다.
3) 하위 16bit Sign-Extend 한 값과 rs Register값의 합을 구하고, 이 값으로 Data Memory의 Address에 접근합니다.
4) Data Memory로부터 Data를 읽고, Register에 Write합니다.
[I Type]: sw
1) Instruction을 Instruction Memory에서 가져오고 PC값을 4만큼 증가시킵니다.
2) rs, rt로 지정된 Two Registers의 값을 읽습니다.
3) rs의 값과, offset의 값을 더하여서 Address를 계산하고, rt의 값을 넣습니다.
[I Type]: beq
1) Instruction을 Instruction Memory에서 가져오고 PC값을 4만큼 증가시킵니다.
2) rs, rt로 지정된 Two Registers의 값을 읽습니다.
3) ALU가 Subtraction을 수행하여 Zero 결과를 만들어내며, 이를 바탕으로 PC 값을 결정합니다.
11. 2. Datapath Including Controls
- Intrustion 31 – 26 op를 Control로 묶고, 새로 Branch라는 Control을 만들어서 ALU Zero로 AND 연산을 수행시켜 beq를 결정합니다.
[Datapath with Jumps Added]
'Computer Science > Computer Architecture' 카테고리의 다른 글
13. Pipelining Datapath (0) | 2025.05.05 |
---|---|
12. Pipelining (0) | 2025.05.05 |
10. Datapath (0) | 2025.04.29 |
09. Floating Point Number (0) | 2025.04.29 |
08. Arithmetic Operations (0) | 2025.04.29 |