Pipelining, Out-of-order Execution, Branch prediction

2021. 4. 17. 10:47Layer7/Hardware

728x90

- Pipelining이란?

 

명령어를 순차적으로 실행시키는 프로세서에서 적용되는 기술이다.

하나의 명령어를 실행시키면서 동시에 다른 명령어도 순차적으로 실행시키는 기술이다.

이미지로 구현시키면 여러개의 바를 나열시킨 모양으로 그려진다.

이렇게 여러개의 명령어를 동시에 실행시키면서 처리량을 증폭시키는 것이 Pipelining의 핵심 목표다.

 

+) 그렇다고 해서 동작속도가 빨라지는 것은 아니다.

 

 

- Pipelining의 효율성을 높히기 위한 조건

 

  • 각 단계별 처리시간이 일정해야한다.
  • 각 명령의 처리단계가 균일해야한다.

 

- Hazard란?

 

위 조건이 만족되지 않았을 때 발생하는 문제를 뜻한다.

 

- Hazard의 종류?

 

Hazard의 종류는 총 3개가 있다.

  1. 구조적 해저드(structural hazard)
  2. 데이터 해저드(data hazard)
  3. 제어 해저드(control hazard)

각 해저드에 대해 하나씩 설명해보면 다음과 같다.

 

구조적 해저드는 프로세서에서 *자원이 부족 할 때 생기는 문제다.

이는 하드웨어 *자원 충돌의 문제인데, 각 단계에 해당되는 필요 *자원을 여러개 설치해주면 해결되는 문제다.

 

* 사용 될 수 있는 어떠한 하드웨어적 항목

 

데이터 해저드는 앞에서 이루어진 명령어 처리의 결과를 사용해야 할 때

앞에서 명령어 처리가 끝나지 않아 생기는 문제다.

이를 해결하기 위해선 Out-of-order Execution이라는 방법을 사용해야한다.

 

제어 해저드는 앞 분기 명령어의 결과를 몰라서 지연이 생길 때 생기는 문제다.

이는 Branch prediction이라는 방법을 사용하여 해결이 가능하다.

 

 

- Out-of-order Execution이란?

 

위에서 말한 Out-of-order Execution이란건 무엇일까?

Out-of-order Execution을 우리말로 번역하면 비순차 실행이라는 뜻이다.

이는 대부분의 고성능 중앙 처리 장치에서 사용되는 핵심 기술이라고 해도 과언이 아니다.

 

Out-of-order Execution을 진행 할 때 프로세서는 프로그램을 원래 순서대로 진행하지 않는다.

입력된 데이터가 어떤 단위로 실행되는지, 가용성은 어떤지에 따라 순서를 바꿔 명령어를 실행한다.

 

이 방식으로 명령어를 실행하면 어떤 점이 좋을까?

 

이렇게 실행을 하면 위에서 말한 파이프라인에서의 데이터 해저드를 해결 할 수 있다.

데이터 해저드는 이전의 명령어 처리가 끝나지 않아 생기는 문제이므로

명령어 처리가 끝날 때 까지의 대기시간 동안 독립적으로 실행 할 수 있는 다른 명령어를 실행한다.

그러면 낭비되는 시간이 없어지고 자연스럽게 데이터 해저드가 해결된다.

 

 

- Branch prediction이란?

 

Branch prediction을 우리말로 번역하면 분기 예측이라는 뜻이 된다.

분기 예측은 다음에 실행될 조건문이 어느 쪽으로 분기할 것인지를 알 수 없을 때 미리 추측을 하는 기술이다.

 

이를 파이프라인에서 제어 해저드에 적용시켜보면, 앞 분기 명령어의 결과를 몰라

어떤 쪽으로 실행을 할지 모를 때 CPU는 단순한 알고리즘을 실행시킨다.

이 알고리즘의 결과값에 따라 다음 명령을 미리 예측하고, 예측값에 따라 명령어들이 실행된다.

 

이 예측이 맞는다면 굉장히 효율적으로 문제를 해결 할 수 있겠지만

만약 틀렸다면 미리 실행되던 명령이 모두 취소되고 올바른 명령이 다시 실행된다.

 

조건 분기문이 파이프라인에 들어왔을 때 활용할 수 있는 정보의 양은 많지 않고

예측이 틀렸을 때 낭비되는 주기의 양은 꽤나 많다.

 

그럼에도 불구하고 Branch prediction을 쓰는 이유는

장점과 단점을 놓고 손익계산을 해봤을 때, 이득이 훨씬 많기 때문이다.

 

+) 미리 예측을 한다는 것 자체가 컴퓨터에선 엄청난 시간 단축이다.

 

728x90