컴퓨터 구조 4-6강. 파이프라인 데이터패스 및 제어

기타/[컴퓨터 구조]

2019. 12. 10. 17:52

 

[MIPS 명령어 파이프라인의 5단계]

1. IF(Instruction fetch) : 명령어 인출

2. ID(Istruction decode) : 명령어 해독 및 레지스터 파일 읽기

3. EX(Execution) : 실행 및 주소 계산

4. MEM(memory) : 데이터 멤리 접근

5. WB(Write back) : 레지스터에 쓰기

 

 

[단일 사이클 데이터패스의 분할]

: 앞서 보았듯이 일반적으로 정보 흐름은 왼쪽에서 오른쪽으로 진행된다. 하지만, 이 흐름중 두가지 예외가 있다.

  1. WB단계 : 결과를 Reg파일에 쓰기(역류) => 데이터 해저드 유발

  2. PC의 다음 값 선정 : 증가된 PC값(IF서 처리) 과 MEM단계의 분기 주소 중에서 선택 => 제어 해저드 유발

 

 

 

[파이프라인 데이터패스]

: 데이터패스를 위에서 나눈 5단계 기준으로 분리하려 한다.

- 파이프라인 레지스터 : 파이프라인 단계를 분리하는 역할 / 후속 파이프라인 단계에서 필요한 정보를 필요단계까지 전달

 

파란부분이 파이프라인 레지스터

 

 

[분리된 데이터패스 시간 흐름 순서대로 보기]

: 각 단계별 그림자료 생략

1. Iw명령어 시간 흐름 별 수행 과정

  1) IF 단계 : Mux, PC, Adder, Instruction memory 활성화

  2) ID 단계 : Register의 Read data1, 2, Sign-extend 활성화

  3) EX 단계 : Mux, ALU 활성화

  4) MEM 단계 : Data Memory, Read data 활성화

  5) WB 단계 : Mux와 Register의 Write Reg, data 활성화 => 데이터 해저드 유발

# lw 명령어가 데이터패스에서 사용하는 부분(파란영역) 

 

 

2. sw명령어 시간 흐름 별 수행 과정

  : lw와 유사, 하지만 MEM단계에서 Data Memory의 왼쪽부분만 작동 (WB단계에선 수행하는 것 없음)

 

 

 

[그림으로 표현하는 파이프라인]

: 두가지 방식의 표현법이 있다.

  1. 시간별로 명령어마다 작동하는 부분을 칠하는 방식 : but, 그리기 번거로움

  2. 그냥 각 시간별로 수행되는 단계 작성

좌(1), 우(2)

 

# 단일 클럭 사이클 파이프라인 다이어그램

 

 

[파이프라인 제어신호]

: 단일방식에선 10개의 신호 동시에 발사했지만, 파이프라인 도입으로 인해 이제는 부분별로 제어신호 발사해야한다.

 

# 각 단계별 제어 신호(제어신호를 제어하는 제어신호)

  1. IF : 제어신호 없음 : 항상 같은 작업 수행하기때문에 필요없다

  2. ID : 제어신호 없음 : 이하동

  3. EX : RegDst(rt, rd 구분) , ALUOP(수행연산종류), ALUSrc(Read data2, extended16bit 중 어느걸 피연산자?)

  4. MEM : Branch(beq), MemRead(lw), MemWrite(sw)

  5. WB : MemtoReg, RegWrite (rw, lw일때만 활성화)

 

# 각 단계에서 명령어에 따라 각 제어신호들에게 내보내주는 신호

지시어 EX 신호 MEM 신호 WB 신호
RegDst ALUOp1 ALUOp0 ALUSrc branch MemRead MemWrite RegWrite MemtoReg
R-형식 1 1 0 0 0 0 0 1 0
lw 0 0 0 1 0 1 0 1 1
sw X 0 0 1 0 0 1 0 X
beq X 0 1 0 1 0 0 0 X

 

# 파이프라인 레지스터를 통한 제어신호의 전달

: 제어신호가 Ex -> MEM -> WB 거치면서 각자에 필요한 정보는 쓰고 나머지는 다음꺼에 전달 하는방식

 

# 완성된 MIPS 파이프라인