학교에서 진행되는 컴퓨터구조 수업을 듣고 중요한 부분 위주로 정리하였습니다. 내용 상에 오류가 있다면 댓글로 피드백 부탁드립니다!
데이터패스
- 데이터 처리 연산을 수행하는 ALU(산술 연산 장치)와 functional unit의 모음
- 데이터패스에서 명령어를 수행하는 과정
- MIPS instruction은 PC(프로그램 카운터)가 다음 명령어의 주소를 가져오기 위해 다음 명령어가 저장되어 있는 위치인 PC + 4로 업데이트를 한다.
- 명령어의 주소는 instruction memory에 저장되고 명령어를 fetch한다(가져온다).
- 명령어의 format에 따라 ALU를 사용하여 결과를 만든다.
데이터패스의 구성
- PC, IM(Instruction Memory, Registers, ALU, DM(Data Memory)
- opcode, rs, rt, address(constant)
- 구성
- 각각이 6, 5, 5, 16bit를 차지한다.
- rs, rt는 각각 first/second source이다.
- 종류: lw(load word), sw(store word), beq, bne, addi
- 경로:
- 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
- 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에서 수행하는 과정