파이프라인(pipeline)
1. 파이프라인(pipeline) 이란?
- 프로세서에서 성능을 높이기 위해서 명령어 처리 과정으로 명령어 처리를 여러 단계로 나누어 단계별로 동시에
수행하여 병렬화를 시키는 것을 말한다.
2. pipeline 동작 방식
- 매 클록마다 여러 명령어를 중복된 단계 없이 실행 킨다.
- 아래는 5단계 pipeline의 모습이다
3. 가장 효율인 pipeline 조건
- 각 단계별 처리 시간이 일정해야 한다.
- 각 명령어의 처리 단계는 균일해야 한다.
* 그러나 실제로는 처리 시간일 일정하지도 않고 처리 단계가 균등하지 않아서 문제가 발생한다.
이를 Hazard라고 한다.
4. 헤저드의 종류(Hazard)
1) 구조 헤저드
- 프로세서의 자원이 부족해서 발생한다.
- 아래와 같이 명령어 2에서 EXE가 1 클락에 안 끝날 경우, 명령어 3에서 WB 수행할 때 멈춤(stall) 이 발생한다.
이를 구조 헤저드라 한다.
- 또한 명령어 4에서는 OF단계가 필요 없는 명령어이므로 EXE를 수행하려고 할 시 명령어 3에서 EXE가
수행되고 있어 이때 또한 Stall이 발생한다
2) 데이터 헤저드
- 이전 명령어의 결과를 기반으로 다음 명령이 수행될 때 발생한다.
3) 컨트롤 헤저드
- 프로그램의 의존성에 의해서 발생한다
- 분기 분의 경우 해당 명령어 경과같이 나와야 다음 명령어가 수행되는데, 이때 해당 명령어가 끝날 때까지
다음 명령어가 멈춤이 발생한다. 이른 컨트롤 헤저드라고 한다.
5. 소프웨어에서 pipeline 기법 사용하기(매력적인 방법이다)
- 만약 소프웨어가 여러 단계로 독립적으로 구현될 수 있다면, 다음 방식으로 pipeline으로 구현할 수 있다.
1단계 : 각 단계를 Thread 구현
2단계 : 각 Thread를 queue로 연결
'책- 정리 > 프로그래머가 몰랐던 멀티코어 CPU이야기' 카테고리의 다른 글
6장. 프로세스 기본 동 (0) | 2018.05.22 |
---|---|
3장. 프로세스의 기본 부품과 개념들 (0) | 2018.03.27 |
2장. RISC vs CISC 차이점 (0) | 2018.03.13 |