포스트

[OS] 컴퓨터구조: 병렬 처리

1. 병렬 처리

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

1.1. Concurrency vs Parallelism

동시성 Concurrency병렬성 Parallelism
동시에 실행되는 것 같이
보이는 것
실제로 동시에 여러 작업이
수행되는 것
싱글 코어에서 멀티 쓰레드를
동작시키는 방식
멀티 코어에서 멀티 쓰레드를
동작시키는 방식
한번에 많은 것을 처리한번에 많은 일을 처리
논리적인 개념물리적인 개념

Concurrency vs Parallelism Concurrency vs Parallelism

2. 파이프라이닝(Pipelining)

  • CPU에서 명령어가 처리되는 과정
    1. 명령어 페치(IF): 다음에 실행할 명령어를 명령어 레지스터에 저장
    2. 명령어 해석(ID): 명령어 해석
    3. 실행(EX): 해석된 결과를 토대로 명령어 실행
    4. 쓰기(WB): 실행 결과를 메모리에 저장
펄스 1펄스 2펄스 3펄스 4펄스 5펄스 6펄스 7펄스 8
IFIDEXWBIFIDEXWB
명령어 처리 단계


파이프라인이란?

  • 명령어를 겹쳐 실행하는 방법
  • 하나의 코어에 여러 스레드를 실행하는 방식
  • 명령어를 여러 단계로 분할 후, 각 단계를 동시에 처리하는 하드웨어를 독립적으로 구성하는 방법

파이프라인 동작과정

2.1. 병렬 처리 시 고려 사항

  • 상호 의존성이 없어야 함
    • 각 명령이 서로 독립적, 앞 결과가 뒤 명령에 영향이 없어야 함
  • 각 단계별 처리 시간이 일정해야 함
    • 오랜 시간이 걸리는 작업으로 진행이 전반적으로 밀릴 수 있음
    • 병목 현상 발생 → 놀고 있는 Stage 발생 (파이프라인 버블)

병렬 처리 시 고려 사항

  • 전체 작업 시간을 몇 단계로 나눌 지 잘 따져야 함
    • 동시의 처리할 수 있는 작업의 수를 병렬 처리 깊이 N으로 정의하자.
    • 이론적으론 N ↑ 할수록, 동시 작업 개수가 많아져 성능 ↑
    • but 작업 너무 많이 나누면 각 단계마다 작업 이동 / 새 작업 불러오는 시간이 너무 오래 걸려 오히려 성능 ↓

3. Pipeline hazard

실제로는 처리 시간이 일정하지도 않고, 처리 단계까 균등하지도 않아 각종 문제가 발생하는데 이것을 Pipeline hazard라고 한다.

해저드(Hazard)발생 이유
구조적 Structural자원 충돌로 여러 명령의 동시 수행 시 발생
제어 Control순차적 명령어가 분기에 의해 버려지는 경우
데이터 Data미수행된 명령의 결과값 참조 시도 발생

3.1. Structural hazard(구조 해저드)

  • 프로세서 자원 부족할 때, 서로 다른 명령어가 같은 자원에 접근하려 할 때 발생
  • 해결 방안: 추가 자원 확보, 대기 (Stall, Bubble, Nop)

Structural hazard

3.2. Control hazard(제어 해저드)

  • 프로그램 의존성에 의해 발생
  • 분기에 의해 프로그램 제어 순서 바뀌어, 파이프라인 내 명령어들이 무가치해짐
  • 해결 방안: 대기(Stall), 예측(Predict branches), 우선 실행(Fast branches)

Control hazard

3.3. Data hazard(데이터 해저드)

  • 이전 명령어 결과 기반으로 다음 명령 수행 시 발생
    • 예시: A = C + D; E = A * 2;
  • 해결 방안: 전방전달, 비순차 실행, 코딩 잘하기

Data hazard

4. 다양한 병렬 처리 기법

4.1. Super scalar

  • 파이프라인 처리 코어를 여러 개 구성, 복수의 명령어가 동시에 실행되도록 하는 방식
  • 대부분 파이프라인 기법과 동일, 하지만 코어를 다중으로 구성해 동시 실행 명령어가 다중이라는 점이 다름

Super scalar

4.2. Super pipeline

  • 파이프라인 각 단계를 세분화해 한 클록 내에 여러 명령어 처리
  • 한 클록 내 여러 명령어 실행하면, 다음 명령어가 빠른 시간 안에 처리되므로 병렬 처리 능력 ↑

Super pipeline

4.3. Super-pipelined super-scalar

  • 슈퍼 파이프라인 기법을 여러 코어에서 동시에 수행하는 방식

Super-pipelined super-scalar

4.4. VLIW(Very Long Instruction Word)

  • CPU가 병렬 처리 미지원하는 경우 SW적으로 병렬 처리 하는 방법
    → 컴파일 단계에 구성
  • 동시 수행 가능 명령어들을 컴파일러가 추출, 하나의 명령어로 압축해 실행

4.5. SIMD(Single Instruction Multiple Data)

  • 하나의 명령어로 여러 데이터를 한번에 처리하는 기법

SIMD

5. 무어의 법칙, 암달의 법칙

5.1. 무어의 법칙(Moore’s law)

  • CPU 속도가 24개월마다 2배 빨라진다는 내용
  • 초기 CPU에만 적용, 현대에선 그렇지 않음

5.2. 암달의 법칙(Amdahl’s law)

  • 컴퓨터 시스템 일부 개선 시 전체 시스템에 미치는 영향과의 관계를 수식으로 나타낸 법칙
  • 이 법칙에 따르면, 주변 장치 향상 없이 CPU의 속도를 2GHz → 4GHz로 늘리더라도 컴퓨터 성능이 2배 빨라지지 않음
이 포스팅은 작성자의 CC BY-NC 4.0 라이선스를 준수합니다.