컴퓨터구조 - datapath🧭

chance·2020년 6월 5일
0

컴퓨터구조

목록 보기
3/6

학교에서 진행되는 컴퓨터구조 수업을 듣고 중요한 부분 위주로 정리하였습니다. 내용 상에 오류가 있다면 댓글로 피드백 부탁드립니다!

데이터패스

  • 데이터 처리 연산을 수행하는 ALU(산술 연산 장치)와 functional unit의 모음
  • 데이터패스에서 명령어를 수행하는 과정
    • MIPS instruction은 PC(프로그램 카운터)가 다음 명령어의 주소를 가져오기 위해 다음 명령어가 저장되어 있는 위치인 PC + 4로 업데이트를 한다.
    • 명령어의 주소는 instruction memory에 저장되고 명령어를 fetch한다(가져온다).
    • 명령어의 format에 따라 ALU를 사용하여 결과를 만든다.

데이터패스의 구성

  • PC, IM(Instruction Memory, Registers, ALU, DM(Data Memory)

I Format

  • opcode, rs, rt, address(constant)
  • 구성
    • 각각이 6, 5, 5, 16bit를 차지한다.
    • rs, rt는 각각 first/second source이다.
  • 종류: lw(load word), sw(store word), beq, bne, addi
  • 경로:

R Format

  • opcode, rs, rt, rd, shamt(shift), address, funct
  • 구성
    • 각각이 6, 5, 5, 5, 5, 6bit를 차지한다.
    • opcode는 항상 0번으로 고정되어 있다.
    • rs, rt와 연산한 값을 rd에 저장한다.
    • shamt는 shift left 연산을 할 경우 얼마나 하는지 결정한다.
    • funct는 r type 명령어를 서로 구분해주는 역할을 한다.
  • 산술연산을 할 때 사용하는 명령어 타입니다.
  • 종류: add, sub, and, or, nor, slt 등
    ---주의---
    첫번째 레지스터가 rd로 들어가고 두번째, 세번째 레지스터가 rs, rt로 들어간다.
add $1 $2 $3

rd: $1, rs: $2, rt: $3

J Format

  • opcode, address
  • 구성
    • 각각 6, 26bit를 차지한다.
      address는 word addressing 방법을 사용하여 저장하였다. 즉, 주소 지정 단위가 워드이다. 바이트로 바꿔주려면 1워드 = 4바이트이므로 4를 곱해야한다.
    • 워드 어드레싱을 바이트 어드레싱으로 바꿔서 28비트 + 기존에 있던 PC의 맨 앞 4비트를 가져와서 target 주소를 계산한다.
  • 종류: beq, bne, lw, sw, addi 등

control signal의 효과

전자의 경우는 1이 들어왔을 경우(asserted), 후자의 경우 0이 들어왔을 경우(deasserted)

  • RegDst: write register field에 rd를 전달한다/rt를 전달한다.
  • RegWrite: write Register field에 write data field의 값을 쓴다/아무것도 안한다.
  • ALUSrc: ALU의 두번째 피연산자는 16비트에서 32비트로 extended(확장)된다./두번째 ALU 피연산자를 read data 2 field에서 받는다.
  • PCSrc: adder의 출력 결과인 branch target 주소로 PC를 교체한다./adder의 출력 결과인 PC + 4로 PC를 업데이트한다.
  • MemRead: data address에 있는 데이터 내용물을 read data output에 전달한다./아무것도 안한다.
  • MemtoReg: data memory의 값을 write data로 전달한다./ALU 연산 결과를 write data로 전달한다.

참조

위키피디아: 데이터패스

추가할 내용

  • instruction type에 따른 control unit의 signal
  • instrctuion type을 datapath에서 수행하는 과정
profile
프론트엔드와 알고리즘을 주로 다룹니다.

0개의 댓글