[오늘의 배움] 019 컴퓨터구조 병렬 프로세서

이상민·2020년 12월 14일
1

[오늘의 배움]

목록 보기
20/70
post-thumbnail

1. 멀티프로세서와 병렬 프로그램

멀티프로세서 : 한개 이상의 프로세서를 가진 컴퓨터 시스템

1-1. 멀티프로세서

  • 프로세스 수준 병렬성에 해당 : 독립적 작업들의 Throughput 향상

  • 클러스터 : LAN으로 연결된 멀티 프로세서 시스템

  • 병렬 처리 프로그램 : 여러 프로세서에서 작동하는 단일 프로그램

  • 멀티코어 마이크로프로세서 : 여러 프로세서(코어)를 가진 칩. SMP = shared memory processor

1-2. 병렬 프로그래밍

병렬성을 가진 하드웨어를 효율적으로 사용하는 것은 어렵다

  • 난관
    i. partition
    ii. coordination
    iii. communications overhead
  • Amdahl's Law : 병렬처리 불가한 부분을 최소화 해야함


2. SISD, SIMD, MIMD

데이터 스트림과 명령어 스트림으로 구분

SISD : 고전적 싱글 컴퓨터
SIMD : 벡터 데이터 연산에 유용, 데이터 수준 병렬성 ex) 멀티미디어
MIMD : SISD의 연결로 병렬 프로그램 실행. MIMD 상 병렬 프로그램 = SPMD

2-1. 벡터 프로세서

  • 고도로 파이프라인됨
  • 명령어 fetch 대역폭 감소 시킴
  • SIMD는 간단한 형태의 벡터 프로세서

2-1-1. SIMD

  • 모든 프로세서는 동시에 다른 데이터를 가지고 동일한 명령어 실행
  • 병렬 데이터 처리에 적합

3. 멀티쓰레드

  • 프로세스 : 단일 혹은 여러개의 쓰레드, 독자적 주소 공간과 OS 상태. OS에 의해 문맥 교환

  • 쓰레드 : 작업을 위한 명령어의 순차적 흐름

  • 각 프로세서는 하나 혹은 그 이상의 하드웨어 쓰레드를 제공

  • 멀티쓰레딩 : 병렬적으로 여러 쓰레드 처리를 하는 것

3-1. 소프트웨어 멀티쓰레딩

  • OS가 하드웨어 쓰레드에 번걸아가면서 문맥 교환

3-2. 하드웨어 멀티쓰레딩

  • 프로세서 자원은 비용이 높으므로 아이들 상태가 없도록 해야함
    ex) 캐시 미스 등으로 대기 시, 다른 쓰레드로 교환

  • 쓰레드 교환이 대기 지연보다 짧아야하기 때문에 하드웨어 추가, 쓰레드 교환마다 문맥 저장 불필요

3-3. 멀티쓰레딩 방법

  1. Fine-grain : 각 사이클마다 쓰레드 교환, stall 발생 시 다른 쓰레드 실행

  2. Coarse-grain : stall이 길 때만 교환

  3. Simultaneous : function 유닛이 가용일 때 쓰레드들의 명령어 실행


4. Shared Memory

  • SMP : shared memory multiprocessor
    여러 프로세스들이 같은 물리 주소 공간 사용, 캐시를 통해 메모리 병목 해소

  • Uniform Mem Access(프로세서 간 동기화 필요 시) vs. Non-uniform Mem Access


5. Message Passing

  • 각각의 물리 주소 공간을 가지고 네트워크를 통해 메시지를 전달하여 작동
  • Loosely Coupled Clusters. ex) web server

6. GPU

3D 그래픽 작업을 위한 프로세서

  • 구조 : 고도로 멀티쓰레드됨, 범용 프로세서화 되며 순차적 코드는 CPU 병렬 코드는 GPU가 처리함
profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글