병렬 처리

병렬 처리 개요

  • 동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방식을 말한다.

  • CPU의 하나의 코어에 여러 개의 스레드를 이용하는 방식을 병럴 처리에서는 파이프라인 기법이라고 부른다.

  • 여기서 스레드는 CPU가 처리할 수 있는 작업의 단위를 나타낸다.

  • 슈퍼스칼라 기법: 코어 하나당 하나의 작업을 동시에 처리

병렬 처리 시 고려 사항

  • 상호 의존성이 없어야 한다.

  • 각 단계의 시간을 거의 일정하게 맞춰야 병렬 처리가 원만하게 이뤄진다.

  • 전체 작업 시간을 몇 단계로 나눌지 잘 따져보아야 한다.

병렬 처리 기법

파이프라인 기법

  • CPU의 사용을 극대화하기 위해 명령을 겹쳐서 실행하는 방법이다.

  • 하나의 코어에서 여러 개의 스레드를 사용하는 방식

  • 파이프라인의 위험

    • 데이터 위험: 후순위의 작업이 앞의 순위에서 처리되는 데이터에 의존성이 있다면 이는 앞의 명령어가 끝날 때까지 처리되면 안되는데, 파이프라인의 명령어 단계를 지연하여 해결한다.

    • 제어 위험: if나 goto 등의 문법으로 인하여 프로그램 카운터 값을 갑자기 변화시켜 발생하는 위험이다. 보통의 경우 모든 프로그램이 순차적으로 실행된다고 가정하므로 동시에 실행되는 명령어들이 순차적으로 실행되나, goto를 사용하면 다음이 아닌 다른 문장으로 이동하여 현재 동시에 처리되고 있는 명령어들이 쓸모 없어진다. 분기 예측, 분기 지연으로 해결

    • 구조 위험: 서로 다른 명령어가 같은 자원에 접근하려 할 때 발생한다.

  • 인텔 계열의 CPU에서는 하이퍼스레드라 부른다.

Last updated