책- 정리/프로그래머가 몰랐던 멀티코어 CPU이야기

7장. 파이프라인(pipeline)

jinkwon.kim 2018. 5. 22. 02:40
728x90
반응형

 파이프라인(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로 연결

  

 

  

728x90
반응형