업데이트:

태그:

카테고리:

들어가며

  • 다시, 폰-노이만 아키텍처의 핵심은 CPU-memory의 아키텍처이다.
  • 프로그램을 실행하면 로더에 의해 메모리에 프로그램이 프로세스로서 올라가게된다.
  • 이 프로그램은 INSTRUCTION의 묶음이며, CPU는 이 instruction들을 순차적으로 실행한다.
  • 각 instruction은 Fetch, Decode, Execute stage에 맞춰서 실행되게된다.
  • 이후 pipelined processor에서 이 3개의 stage는 병렬화되어 단위 시간 내의 전체 처리량을 증가시키게된다.



Control Unit

정의

ALU와 ALU control signal

  • ALU Control Unitop, funct를 기반으로 제어신호를 생성해 ALU가 어떤 연산을 해야하는지 결정한다.
  • ALU Control Unitdecoding 단계에서 opcode와 funct를 input으로 받아들이, 각 stage의 multiplexer, memory controller, register file에서 어떤 연산을 수행해야하는지 결정하는 제어신호를 생성한다.



Instruction 별 제어신호

스크린샷 2023-03-28 18 44 27

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

  1. Instruction Memory(IM)에서 instruction을 읽어온다.
  2. PC를 다음 instruction주소를 가르키도록 update한다.


No need Control signal

  • !!Control signal은 필요없다.
    1. PC는 모든 사이클에서 반드시 업데이트 되기 때문에, write하는 control signal이 필요하지 않다.
    2. IM은 항상 read를 수행해야만 하므로, read하는 control signal은 필요하지않다.



2. Decoding Instructions

Sequence

  1. fetch instruction의 opcode와 functcontrol unit에 전달
  2. 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)에 값을 작성하기 때문.

따라서, 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)이다.



MIPS Machine

스크린샷 2023-03-29 11 24 51

댓글남기기