병렬 처리

GwanMtCat·2023년 9월 12일
0

CPU의 성능을 향상하는 가장 좋은 방법은

CPU의 클록을 높인다. -> 발열 문제
캐시의 크기를 늘린다. -> 비용 문제가 발목을 잡는다.

CPU의 핵심 기능을 가진 코어를 여러 개 만들거나, 동시에 실행 가능한 명령의 개수를 늘리는 방법을 사용한다.


병렬처리의 개념

동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방식을 말한다.
여러 개의 명령을 동시에 처리하는 병렬 처리는 코어가 여러 개인 CPU는 물론이고, 코어가 하나인 CPU에서도 작동 가능하다.

예로 어떤 한 작업을 작업 처리 시간에 따라 몇개의 단계로 나누었을 때, 그 단계가 겹치지만 않는다면 작업을 동시에 실행할 수 있다.

이는 한 코어에서 여러 개의 스레드를 이용하는 방식과 같고 이러한 방식을 파이프라인 기법이라고 한다.

스레드는 CPU가 처리할 수 있는 작업의 단위를 나타내며, 여러 개의 스레드를 동시에 처리하는 방법을 CPU 멀티 스레딩 이라고 한다.

병렬 처리에는 파이프라인 기법 뿐만 아니라, CPU 2개가 있으면 2개의 작업을 동시에 처리하는 슈퍼스칼라 기법을 이용할 수도 있다.

이외에도 파이프라인 및 슈퍼스칼라 기법을 합친 슈퍼파이프라인 슈퍼스칼라 기법, VLIW 기법 등 여러가지 방법이 잇다.

병렬 처리시 고려사항

병렬 처리는 다음과 같은 사항을 고려해야 한다.

  • 상호 의존성이 없어야 병렬 처리가 가능하다.

    • 각 명령이 서로 독립적이고 앞의 결과가 뒤의 명령에 영향을 끼치지 않아야 한다.
  • 각 단계의 시간을 거의 일정하게 맞춰야 병렬 처리가 원만하게 이루어진다.

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

    • 작업을 N개로 쪼개면 N을 병렬 처리의 깊이라고 하는데 이론적으로 N이 커질수록 동시에 작업할 수 있는 개수가 많아져 성능이 높아지나 작업을 너무 많이 나누면 각 단계마다 작업을 이동하고 새로운 작업을 불러오는 데 시간이 너무 많이 걸려 성능이 떨어진다. (컨텍스트 스위칭)

0개의 댓글