병렬처리

라마·2023년 7월 7일

운영체제

목록 보기
6/32

※ 전남대학교 박태준 교수님의 운영체제 강의를 듣고, 정리한 내용입니다.

병렬 처리

동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방식을 병렬 처리라고 합니다.

참고) Concurrency ( 동시성 )Parallelism ( 병렬성 )

  • Concurrency : 실제로는 동시에 실행되는게 아닌데, 동시에 실행되는 것 처럼 보이는 것
  • Parallelism : 실제로 동시에 여러 작업이 처리되는 것

파이프라이닝 ( Pipelining )

CPU 에서 명렁어가 실행되는 과정을 살펴보면… 공장의 컨베이어 벨트와 비슷하다고 볼 수 있습니다.

  1. 명령어 패치 ( IF ) : 다음에 실행할 명령어를 명령어 레지스터에 저장
  2. 명령어 해석 ( ID )
  3. 실행 ( EX ) : 해석한 결과를 토대로 명령어 실행
  4. 쓰기 ( WB ) : 실행된 결과를 메모리에 저장

이렇게 차례차례 실행되다보니, 시간이 너무 오래걸린다는 문제점이 존재했습니다.

그래서 명령어를 겹쳐서 실행하는 방법 ( 분업화 ) 으로, 하나의 코어에 여러 개의 스레드를 실행하는 방식인 파이프라인 이 도입되었습니다.

병렬 처리 시 고려 사항

  • 상호 의존성이 없어야 함
    • 각 명령이 독립적이고, 앞의 결과가 뒤의 명령에 영향을 미치지 않아야 함
  • 각 단계별 처리 시간이 일정해야 함
    • 만약 각 단계별 처리 시간이 다르다면 ( 앞 작업은 처리하는데 시간이 오래걸리고, 뒷 작업은 처리하는데 시간이 빨리 걸리는 경우 )
    • 진행이 전반적으로 밀려서 전체 작업 시간이 늘어나게 되고
    • 이는 즉, 병목 현상이 발생하게 됨
  • 전체 작업 시간을 몇 단계로 나눌지 잘 따져봐야 함
    • 일반적으로 작업을 많이 나누면 성능이 올라가지만, 너무 많이 나누면 다음 작업으로 이동하는데 시간이 오래걸려 오히려 성능이 떨어질 수 있음

Pipeline hazard

하지만, 현실에선 처리 시간이 일정하지도 않고, 처리 단계 또한 균등하지 않습니다.

이로 인해 여러가지 문제들이 발생하게 되는데, 이 발생하는 문제들을 해저드 ( hazard ) 라고 부릅니다.

해저드의 종류를 살펴보면 다음과 같습니다.

  • Structrual hazard ( 구조 해저드 )
    • 자원이 부족할 때 발생
    • 해결책 : 자원 확보 ( 메모리 ↑ ), 자원이 나올 때 까지 기다리기
  • Control hazard ( 제어 해저드 )
    • 프로그렘의 의존성에 의해 발생
    • 분기에 의해 프로그램 제어 순서가 바뀌면, 명령어를 교체해야 함 ( 파이프라인 내 명령어들이 쓸모가 없어짐 )
    • 해결방안 : 기다리기, 예측 ( Predict branches ), 우선 실행 ( Fast branches )
  • Data hazard ( 데이터 해저드 )
    • 이전 명령어의 결과를 기반으로 다음 명령이 수행될 때 발생 ( 의존성 문제 )
    • 해결방안 : 대기, 전방전달, 비순차실행, 리펙토링 등등

다양한 병렬처리

  • Super Scalar ( 슈퍼스칼라 )
    • 파이프라인 안에 코어를 여러개 구성
    • 여러개의 명령어가 동시에 실행되도록 하는 방식
  • Super-Pipeline ( 슈퍼파이프라인 기법 )
    • 파이프라인의 각 단계를 세분하여 한 클록 내에 여러 명령어를 처리
    • 병렬 처리 능력이 높아짐
  • Super-Pipelined Super-Scalar ( 슈퍼파이프라인 슈퍼스칼라 기법 )
    • 슈퍼파이프라인 기법을 여러 개의 코어에서 동시에 수행
  • VLIW ( Very Long Instruction Word )
    • CPU 가 병렬 처리를 지원하지 않을 경우, 소프트웨어적으로 병렬 처리 진행
    • 하지만, 만들기가 어려움
    • 속도 향상도 딱히..
  • SIMD ( Single Instruction Multiple Data )
    • 하나의 명령어로 여러개의 데이터를 한번에 처리하는 기법
    • 현재도 많이 쓰이는 기법

0개의 댓글