[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. 그냥 각 시간별로 수행되는 단계 작성
# 단일 클럭 사이클 파이프라인 다이어그램
[파이프라인 제어신호]
: 단일방식에선 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 파이프라인
'기타 > [컴퓨터 구조]' 카테고리의 다른 글
컴퓨터구조 4-5강. 파이프라이닝(Pipelining) (1) | 2019.12.10 |
---|---|
컴퓨터 구조 4-4강. 단순한 구현 (0) | 2019.12.09 |
컴퓨터구조 4-3강. 데이터패스 만들기 (0) | 2019.12.05 |
컴퓨터 구조 4-1강. 서론과 MIPS 부분집합 구현의 추상적 개관 (1) | 2019.11.21 |