2-4.[os] 병렬 처리

CPU의 성능 향상 : CPU의 클록(작업속도), 캐시 크기 늘리기

  • -> 단점: 클록을 높이면 발열문제가 생김, 캐시 키우면 비용문제가 생김
  • -> 코어와 스레드를 여러개 만듦

병렬 처리

  • 동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방식
  • 코어: CPU의 핵심기능을 가짐
  • ex) 듀얼코어, 쿼드코어

  • 스레드: CPU가 처리할 수 있는 작업의 단위

  • CPU멀티스레드: 여러 개의 스레드를 동시에 처리하는 방법

파이프라인 기법:하나의 코어에 여러 개의 스레드를 이용하는 방식

슈퍼스칼라 기법: 여러 개의 코어를 사용하여 동시에 작업

image.png


병렬처리 시 고려사항

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

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

    • 각 단계의 처리 시간이 들쑥날쑥하면 앞의 작업이 먼저 끝나더라도 가장 긴 시간이 걸리는 단계에서 병목 현상이 발생
    • 오랜 시간이 걸리는 작업 때문에 진행이 전반적으로 밀려서 전체 작업 시간이 늘어난다

image.png

  • 전체 작업 시간을 몇 단계로 나눌지 잘 따져보아야 한다
    • 병렬 처리의 깊이: 작업을 N개로 쪼겠을 때의 N, 동시에 처리할 수 있는 작업의 개수
    • 이론적으로는 N이 커질수록 동시에 작업할 수 있는 작업의 개수가 많아져서 성능이 높아짐
  • 작업을 너무 많이 나누면 각 단계마다 작업을 이동하고 새로운 작업을 불러오는 데 시간이 너무 많이 걸림
    • 오버헤드를 고려하여 보통 병렬 처리의 깊이: 10〜 20

병렬 처리 기법

CPU에서 명령어가 실행되는 과정 4단계

  • 명령어 패치 (Instruction Fectch, IF): 다음에 실행할 명령어를 명령어 레지스터에 저장
  • 명령어 해석 (Instruction Decode, ID): 명령어를 해석
  • 실행 (EXecution, EX): 해석한 결과를 토대로 명령어를 실행
  • 쓰기 (Write Back, WB): 실행된 결과를 메모리에 저장
  • IF > ID > EX > WB

image.png

파이프라인 기법

  • CPU의 사용을 극대화하기 위해 명령을 겹쳐서 실행하는 방법
  • 하나의 코어에 여러 개의 스레드를 사용
  • 명령어를 여러 개의 단계로 분할 > 각 단계를 동시에 처리하는 하드웨어를 독립적으로 구성
  • 명령어 처리를 4단계로 나누면 동시에 처리되는 명령어의 개수가 최대 4개

image.png

기존: 4단계를 모두 마치고 다음 명령어를 실행 파이프라인: 각 단계가 쉬지 않고 명령어를 처리


파이프라인 위험

데이터 위험 : 데이터의 의존성

image.png

  • 데이터 a 를 필요로 하는 두 번째 명령어는 앞의 명령어가 끝날 때까지 동시에 실행되어서는 안 된다
  • 명령어 단계를 지연하여 해결

제어 위험

  • 다음 문장이 아니라 다른 문장으로 이동하게 되면 현재 동시에 처리되고 있는 명령어들이 쓸모없어진다
  • ex) if문, goto문

image.png

구조 위험

  • 서로 다른 명령어가 같은 자원에 접근하려 할 때
  • 해결하기 어렵다

image.png

슈퍼스칼라 기법(super-scalar)

  • 코어를 여러 개 구성하여 복수의 명령어가 동시에 실행되도록 하는 방식

image.png

슈퍼파이프라인 기법(super-pipeline)

  • 파이프라인 기법을 강화
  • (기존: 파이프라인 기법에서는 한 클록마다 하나의 명령어를 실행)
  • 한 클록 내에 여러 명령어를 처리
  • 한 클록 내에 여러 명령어를 실행하면 다음 명령어가 빠른 시간 안에 시작될 수 있어 병렬 처리 능력이 높아진다

image.png

슈퍼파이프라인슈퍼스칼라 기법(super-pipelined super-scalar)

  • 슈퍼파이프라인 기법을 여러 개의 코어에서 동시에 수행

image.png

공통 특징:

  • 하드웨어적인 방법
  • 실행 시 병렬 처리가 이루어짐

VLIW 기법 (Very Long Instruction Word)

  • VLIW 기법:
    • CPU가 병렬 처리를 지원하지 않을 경우 소프트웨어적으로 병렬 처리
    • CPU가 병렬 처리를 지원하지 않을 때 사용하는 방법이므로 앞의 병렬 처리 기법들에 비해 동시에 처리하는 명령어의 개수가 적다
    • 컴파일 시 병렬 처리가 이루어짐

Did you find this article valuable?

Support Software Engineer at Your Service by becoming a sponsor. Any amount is appreciated!