Instruction Fetch
- PC : 32-bit 레지스터 , 현재 instruction의 주소를 저장한다.
- Instruction Memory : combinational logic으로 동작하며 PC 주소에 있는 instruction을 제공해준다
- Move to the next instruction => PC + 4가 된다
R-format instructions
opcode | rs | rt | rd | shamt | funct
R-type의 opcode는 항상 000000이다.
funct로 명령어를 구분한다.
Register File
- Read : combinational logic처럼 동작하며 주어진 register ID로 현재 register value을 제공한다 / 2개의 register를 읽는다
- Write : sequential logic처럼 동작하며 RegWrite 가 1일때 지정된 register로 value을 저장하며, 실제 동작 시 다음 cycle로 이동할 때 작성이 된다.
ALU Control
- OPcode => ALUOP
- ALUOP & funct => ALU control (And 연산)
opcode | ALUOP | Operation | funct | ALU function | ALU control |
lw | 00 | word를 load | X | add | 0010 |
sw | 00 | word를 store | X | add | 0010 |
beq | 01 | branch equal | X | subtract | 0110 |
R | 10 | add | 100000 | add | 0010 |
subtract | 100010 | subtract | 0110 | ||
AND | 100100 | AND | 0000 | ||
OR | 100101 | OR | 0001 | ||
set-on-less-than | 101010 | set-on-less-than | 0111 |
Data Memory
- Read : combinational logic 처럼 동작 , MemRead가 1이면 @address에 있는 현재 memory value를 제공
- Write : sequential logic 처럼 동작 , MemWrite가 1이면 @address에 있는 data를 작성, 실제 작성은 다음 cycle에서 이루어짐
Sign-extend
Instruction의 [0:15] 부분은 16bit인데 32bit로 바꿔야 한다.
2배를 늘려주어 ALU 연산에 활용되게 하는 방식
'CS(Computer Science) > 컴퓨터구조' 카테고리의 다른 글
10. 파이프라인 (3) (0) | 2023.06.04 |
---|---|
10. 파이프라인 (2) (0) | 2023.06.04 |
10. 파이프라인 (1) (0) | 2023.06.04 |
9. 프로세서 (3) (0) | 2023.06.04 |
9. 프로세서 (1) (0) | 2023.06.04 |