[단일 사이클 구현의 문제점]
: 앞에서 보았던 방식은 한 명령어를 데이터패스를 통해 실행하는 동안에, 다음명령어는 앞 명령어가 실행끝나기를 기다린다.
: 하지만 이러면 클럭 사이클 시간이 너무 길어져 전체 성능에 좋지 않다.
=> 파이프라이닝 기술 적용
[파이프라이닝]
: 여러 명령어가 중첩되어 실행되는 구현 기술 (병렬성 이용)
: 각 명령어의 실행시간을 개선하진 못하지만, 처리량을 개선한다.
# 파이프 라이닝 성능 개선 정도 예시
ex) 명령어 5개, 명령어 4단계이고, 한 명령어 처리 시간이 1이라 할때, - 일반적 방법 : 시간 1 * 4단계 * 5개 = 20 (시간) - 파이프라이닝 : 4 + 1 + 1 +1 + 1 = 8 (시간) => 20 / 8 = 2.5 배 개선 |
[단일 사이클 vs 파이프라인 성능]
# 명령어 실행의 5단계
1. 명령어 메모리에서 명령어 인출
2. 명령어 해독과 레지스터 읽기(동시수행)
3. 연산 수행 or 주소 계산
4. 데이터 메모리 내의 피연산자에 접근
5. 결과 값을 레지스터에 작성
# 각 기능 유닛 수행 시간과 수행 명령어 예시
명령어 종류 | Inst fetch | Register Read | ALU oper | Data access | Reg write | Total time |
lw | 200 | 100 | 200 | 200 | 100 | 800 |
sw | 200 | 100 | 200 | 200 | 700 | |
R형식 | 200 | 100 | 200 | 100 | 600 | |
beq | 200 | 100 | 200 | 500 |
lw $1, 100($0) lw $2, 200($0) lw $3, 300($0) |
# 단일 사이클과 파이프라인 예시 수행 시간 비교
[파이프라인의 성능]
- 완벽하게 균형 잡힌 파이프라인 : 모든 단계의 처리시간이 같은 파이프라인
[파이프라인 해저드]
: 다음 명령어가 다음 클럭 사이클에 실행될 수 없는 상황
1. 구조적 해저드
: 다른 단계에 있는 명령어들이 동시에 같은 자원 사용하려 하는 상황 => 해당 자원 여러개 설치로 해결
2. 데이터 해저드
: 앞 명령어 결과 사용해야하는데 앞이 아직 안끝나 그 결과 사용 못하는 상황 => 파이프라인 지연, 전방전달로 해결
3. 제어 해저드
: 앞 분기 명령어 결과 몰라 다음 명령어 인출 못하는 상황 => 파이프라인 지연, 분기예측, 지연분기로 해결
'기타 > [컴퓨터 구조]' 카테고리의 다른 글
컴퓨터 구조 4-6강. 파이프라인 데이터패스 및 제어 (3) | 2019.12.10 |
---|---|
컴퓨터 구조 4-4강. 단순한 구현 (0) | 2019.12.09 |
컴퓨터구조 4-3강. 데이터패스 만들기 (0) | 2019.12.05 |
컴퓨터 구조 4-1강. 서론과 MIPS 부분집합 구현의 추상적 개관 (1) | 2019.11.21 |