프로세서 - Unpipelined Datapath[2]

임승섭·2023년 5월 10일
0

Computer Architecture

목록 보기
11/19
post-thumbnail

Building a Datapath

  • Datapath : Elements that process data and addressees in the CPU
    • Register, ALU, MUX, Memory, ...

MIPS format review

R-format

  • add rd, rs, rt
  • sub rd, rs, rt
  • Machine level configuration

    oprsrtrdshamtfunct
    6 bits5 bits5 bits5 bits5 bits5 bits

I-format

  • lw rt, rs, imm
  • sw rt, rs, imm
  • beq rs, rt, imm
  • ori rt, rs, imm
  • Branch uses PC relative addressing
    : PC + 4 + (4 * imm)
  • Machine level configuration

    oprsrtaddress / immediate
    6 bits5 bits5 bits16 bits

J-format

  • j target
  • Use pseudodirect addressing(target * 4) to allow addressing 2282^{28} bits directly
  • Uses top 4 bits from PC
  • Machine level configuration

    optarget address
    6 bits26 bits

R-format Instruction

  • Read two register operands,
  • Perform arithmetic/logical operation,
  • Write register result
  • 레지스터 번호용 : (Read register1, 2, Write register) - 5bits
    (32개의 레지스터 중 하나)
  • 데이터용 : (Write data, Read data1, 2) - 32 bits

Immediate operation

2개의 MUX와 1개의 Sign Extension이 추가된다.

  • 1st MUX : 만약 R-format이면(by RegDst), Rd를 선택한다
  • 2st MUX : 만약 R-format이면(by ALUsrc), register에서 data를 선택한다.

Load / Store Instruction

  • Read register operands,
  • Calculate address(to read/write) using 16-bit offset,
    • Use ALU, but sign-extend offset
  • (Load) Read memory and update register
  • (Store) Write register value to memory

Load

Sign Extension logic이 추가된다.

  • lw $t1, offset_value($t2)
  • offset_value은 양수, 음수 둘 다 가능하다
  • lw $r1, 100($r2)
  • Read register 1에는 rs($r2)가 들어간다.
  • Read register 2에는 아무것도 안들어간다.
  • Write register에는 rt($r1)이 들어간다.
  • Sign extend에 100이 들어간다.
  • ALU의 윗부분에는 $r2, 아래부분에는 100이 들어가서 이를 더한다.
  • 이 결과값을 이용해, data memory를 읽는다.

Store

register에서 memory로 가는 path가 추가된다.

  • sw $1, 100($2)

  • Load instruction과 거의 유사하다.


Branch Instruction

  • Read register operands,
  • Compare operands
    • Use ALU, subtract and check Zero output
  • Calculate target address
    • Sign-extend displacement
    • Shift left 2 places (word displacement)
      • 명령어 집합 구조는 변위 필드가 2비트만큼 left shift해서 워드 변위가 된다고 서술한다.
      • 이를 통해 변위 필드의 유효 범위를 4배 증가시킨다.
    • Add to PC + 4
      • 명령어 집합 구조는 분기 주소 계산의 베이스 주소분기 명령어 다음 명령어의 주소라고 서술하고 있다.


Jump Instruction

  • instruction의 하위 26비트를 2비트만큼 왼족으로 자리이동한 값으로
    PC의 하위 28비트를 대체한다. (점프 offset 뒤에 00을 덧붙이면 된다)

Full Datapath

0개의 댓글