CPU Parallel 동작 방법

규규·2024년 1월 26일
0

병렬 프로그래밍

목록 보기
2/11

CPU 란

  • CPU (Central Processing Unit)
    • executes instructions
    • Instructions : CPU 가 사용하는 언어인 assembly 어로 coding 이 되어 있음.
    • 각 CPU 제조사마다 고유의 assembly language 를 가짐.
    • 따라서 OS 선택 시 CPU architecture 에 맞는 버전을 설치 필요
    • CPU 구성 요소
      업로드중..
      업로드중..
  • CPU interrupts
    • 인터럽트는 process 나 event 에 즉각적인 대응이 필요 할 때 하드웨어나 소프트웨어에서 발생하는 신호
    • interrupt 의 3 종류 : hardware, software, exceptions
      - hardware : 키보드, 마우스에서 발생
      - IRQ : Interruption Request
      - IDT : Interrupt Descriptor Table
      - ISR : Interrupt Service Routine
      업로드중..
       - software : user app. 이나 kernel 에서 발생
       - Exception interrupts : CPU 는 incorrect 하거나 fatal 한 instruction 후에 interruption 을 호출 가능. (ex: division by zero, invalid access memory)

      출처 :
      https://gregsnotes.medium.com/cpu-components-and-interruptions-fd0e876eb78b

How do CPUs execute instructions in paralle?

  • Single core CPU
    업로드중..
    • Linux 에서는 process, thread 를 task_struct 라는 C structure 로 다룸.
  • Hyper-threading
    업로드중..
    업로드중..
  • Multi-cores CPU
    업로드중..
  • 결론
    업로드중..

출처 :
https://gregsnotes.medium.com/how-do-cpus-execute-instructions-in-parallel-dfa15e87a86c

  • 이기종 컴퓨팅

    • https://www.samsungsds.com/kr/insights/1233719_4627.html
    • 서로 다른 종류의 프로세서들을 다수 장착한 시스템
    • 범용 프로세서와 가속기 형태로 구성. 범용 프레세서는 주 연산 및 제어 역할. 가속기는 Coprocessor 형태로 고속 수행 특정 작업 (DSP, GPU, GPGPU)
  • 병렬 컴퓨터의 분류

    • https://www.samsungsds.com/kr/insights/1233715_4627.html
    • SISD
      • 하나의 명령에 하나의 데이터가 순차적으로 처리되는 전통적인 폰 노이만 구조. 일반적인 싱글 코어
      • 파이프 라이닝이나 슈퍼스칼라 등 명령어 수준의 병렬 컴퓨팅 기법 사용
      • 최신 프로세서에는 하나의 물리적인 코어를 두 개의 논리적인 코어로 다루는 SMT (Simultaneous multithreading) 기술 채택 (인텔 하이퍼스레딩)
    • SIMD
      • 하나의 명령어 여러 개의 데이터가 처리
      • 다수의 데이터에 적용되는 연산이 동일하고, 데이터 간 의존성이 없는 경우 SIMD 구조로 데이터 병렬 처리. 많은 슈퍼컴퓨터는 벡터 프로세서라는 구조를 갖추고 있으며, 인텔에서도 coprocessor (보조 프로세서) 형태로 SSE (Streaming SIMD Extensions) 나 AVX (Advanced Vector eXtensions) 등의 SIMD 아키텍처 지원. GPU 도 기본적으로 SIMD.
    • MISD
      • 여러 개의 명령어에 하나의 데이터 처리
      • 거의 쓰지 않으며, 상업적으로 구현된 이력 없음
    • MIMID
      • 여러 개의 명령어들이 여러 개의 데이터를 동시 처리.
      • 일반적으로 멀티프로세서

  • 병렬 컴퓨터의 구조
    • 공유 메모리 시스템
      - SMP (Symmetric Multiprocessor)
      - 다수의 프로세서들이 주기억 장치, I/O 를 공유하고 하나의 운영체제가 모든 프로세서를 관리
      - 메인보드에 CPU 를 여러개 꽂는 구조

      - CMP (Chip Multiprocessor)
      - SMP 의 일종
      - 하나의 칩에 여러 개의 코어를 장착
      - SMP 처럼 CPU 여러개를 장착하는게 아니라, 단일 chip (CPU) 에 연산 담당 코어를 여러 개 두어 공간적 활용성을 높이고, 코어 간에 캐시를 공유
      - 현재 일반 PC 에 가장 범용적으로 적용되고 있는 병렬 컴퓨터 구조

      - NUMA (Non-uniform Memory Access)
      - 모든 프로세서에 메모리 접근을 균일하게 제공하면 메모리 자원을 공유하기 위한 경쟁이 심하게 발생하여 버스에서 큰 병목 현상 발생
      - 메모리에 대한 접근을 균일하게 제공하는 시스템 UMA (Uniform Memory Acess) 라고 하는데, 이를 해결하기 위한 구조가 NUMA
      - NUMA 는 각 프로세서에 메모리를 할당하여 NUMA 노드라는 그룹으로 묶고, 각 노드를 상호 연결.

출처 :
https://www.samsungsds.com/kr/insights/1233727_4627.html

profile
복습용 저장소

0개의 댓글