Processor

EEEFFEE·2023년 9월 12일
0

Computer Architecture

목록 보기
4/6

23.09.12 최초 작성

1. Datapath

Datapath : 데이터가 움직이는 경로를 나타낸 것

1.1 Instruction Fetch

  • 명령어를 인출하고 PC를 증가시키는 Datapath이다.
  • PC의 값이 명령어가 저장된 메모리의 read에 입력되면 해당하는 명령어를 반환한다.
  • PC값을 증가시키기 위해 ADD연산기에 상수 4를 넣어두고 PC+4 값을 만든다. 해당 결과는 다음 클락 구동때(rising & falling edge...) PC에 반영된다.

1.2 R-Format Instruction

  • Operand인Rm, Rn로 지정할 레지스터를 Read Register 1, 2에 입력한 값으로 결정한다. Read Register 1, 2에 저장된 값은 Read Data 1, 2로 나온다.
  • 연산 결과인 Rd로 지정할 레지스터를 Write Register에 입력한 값으로 결정한다.
  • Write DataALU result의 값을 받아 저장한다.
  • ALU Operation은 수행할 연산의 종류를 지정한다.

1.3 Load/Store Instruction

  • Load의 경우 Address로 들어온 메모리의 주소 안에 있는 값을 레지스터에 저장한다. (MemRead 신호)
  • Store할 경우 Write Data로 들어온 레지스터 값을 Address로 들어온 메모리 주소에 저장한다.(MemWrite 신호)
  • Sign Extend은 32비트 을 64비트로 변환해준다. (Address는 32비트 offset값이기 때문에)

1.4 Branch Instruction

  • Read Register 1, 2에 저장된 값이 Read Data 1, 2로 나오고 ALU에서 뺄셈을 한다.
  • ALU에 입력된 Read Data1Read Data2 의 값이 같으면 0이 아닌 값이 세팅되고 이 경우 PC+4 값이 다음 분기 목적지 주소가 된다.
  • 0이면 명령어의 하위 32비트를 왼쪽으로 한칸 shift 연산을 실행하고 branch할 목적지 주소를 계산해 다음 분기 목적지 주소로 세팅한다.

1.5 종합

  • Datapath가 겹칠 경우 2×12\times1 Multiplexer를 사용해 여러개의 입력 값 중 하나를 선택한다.

    • PCSrc : 분기를 다음 명령어(PC+4)로 할지, 다른 목적지 주소로 할지 결정하는 Mux
    • ALUSrc : ALU의 Operand를 레지스터에 저장된 값으로 할지, 상수로 할지 결정하는 Mux
    • MemtoReg : ALU에서 나온 값이 다시 레지스터로 쓰여질지, 메모리에서 나온 값이 레지스터로 쓰여질지 결정하는 Mux

2. ALU Control

ALU는 ALU control의 값에 따라 정해진 연산을 수행한다.

명령어의 Opcode에서 2비트의 ALUOp를 얻을 수 있고 이에 따라 ALU control에 수행할 연산을 지정할 수 있다.

0개의 댓글