[Mips] Processor design
들어가며
- 다시, 폰-노이만 아키텍처의 핵심은
CPU-memory
의 아키텍처이다. - 프로그램을 실행하면
로더
에 의해 메모리에 프로그램이 프로세스로서 올라가게된다. - 이 프로그램은
INSTRUCTION
의 묶음이며, CPU는 이 instruction들을 순차적으로 실행한다. - 각 instruction은
Fetch
,Decode
,Execute
stage에 맞춰서 실행되게된다. - 이후
pipelined processor
에서 이 3개의 stage는 병렬화되어 단위 시간 내의 전체 처리량을 증가시키게된다.
Control Unit
정의
ALU Control Unit
은op, funct를 기반으로 제어신호를 생성해
ALU
가 어떤 연산을 해야하는지 결정한다.- 이
ALU Control Unit
은decoding 단계에서 opcode와 funct를 input으로
받아들이, 각 stage의 multiplexer, memory controller, register file에서 어떤 연산을 수행해야하는지 결정하는제어신호를 생성
한다.
Instruction 별 제어신호
RegDst
- destination register가 정의되었는지 결정한다.
- RegDst가 1일 경우, rd레지스터에 값을 작성한다.
- 0일 경우, rt에 작성한다.
- R format 모두 1이다.
ALUSrc
- 피연산자 중 1개를 immediate로 할지 말지를 결정한다.
- 1이면 immediate를 source로 취한다.
- 0이면 rt를 source로 취한다.
- 대표적으로 sw, addi, andi 가 ALUSrc 1을 필요로한다.
MemtoReg
- write될 value가 어디서 오는지 결정한다.
- 1이면 value는 data memory로부터 오는 것
(mem-to-reg)
이다. - 0이면 register에서 오는 것(
reg-to-reg
)이다 - lw는 메모리에서 값을 읽어와 레지스터에 옮기므로 1이다. 나머지는 0
RegWrite
- 레지스터 파일에 값을 쓰는지 안쓰는지 결정한다.
- R포맷 모두 1이다.
Mem-Read
- 메모리에서 값을 읽어오는지 여부를 결정
- lw의 경우, 1이다.
Mem-Write
- 메모리에 값을 쓰는지 결정한다.
- sw의 경우, 메모리에 값을 쓴다.
ALUOP
- 수행될 instruction을 정의하거나, funct bit로부터 결정되야하는 것을 결정한다.
1. Fetching Instructions
Sequence
Instruction Memory(IM)
에서 instruction을 읽어온다.PC
를 다음 instruction주소를 가르키도록 update한다.
No need Control signal
!!Control signal은 필요없다.
- PC는 모든 사이클에서 반드시 업데이트 되기 때문에, write하는 control signal이 필요하지 않다.
- IM은 항상 read를 수행해야만 하므로, read하는 control signal은 필요하지않다.
2. Decoding Instructions
Sequence
- fetch instruction의
opcode와 funct
를control unit
에 전달 - register file에서 rs, rt를 읽어온다.
(two read port)
3. Executing Instructions
- Instruction의 종류에 따라 필요한 Control signal의 개수는 다르다.
Control Signals
signals for Register file, Data memory
-
RegWrite, MemWrite, MemRead
- R format에서,
add, sub, slt, and, or
과 같은 연산은 register file write가 필요하다.Data memory
에서 값을 레지스터에 불러와서 이register file
연산결과를 작성하기때문.
- 그런데, I format의
sw
연산의 경우, register file에 write가 필요하지 않다.register file
(rs)에서 값을 읽어와서data memory
(rt)에 값을 작성하기 때문.
- R format에서,
따라서, RegWrite라는 Control signal이 필요하다.
signals for branch operation
- beq, bne 와 같은 branch operation은 I format이다.
ALU
에서 rs, rt가 같은지 연산하고, 같으면 immediate의 sign-extend && slt « 2를 통해 주소를 지정해 이동한다.- 지정가능한 주소의
개수는 2^16
, 범위는 word address로-2^15 ~ 2^15 - 1
이며 byte address 지정가능한 주소의 범위는-2^15 * 4(약 -128kb) ~ 128kb
이다.
signals for jump operation
- jump, jal은 J format이다.
- pc의 상위 4bit와 instruction의 address bit, 뒤에 00 2개를 concat해서 주소를 지정한다.
- 따라서, 지정가능한 주소의
개수는 2^26
, byte address 범위는PC와 상위 4bit가 같은 256M(2^26 * 4)
이다.
댓글남기기