태크놀로지

멀티코어 하드웨어 소개 본문

멀티코어

멀티코어 하드웨어 소개

원택 2020. 9. 4. 17:16

한국산업기술대학교 게임공학부 정내훈 교수님 멀티코어 1주차 강의

 

 

멀티 쓰레드 프로그래밍

멀티 쓰레드의 사용목적

  • 멀티코어 CPU(or 멀티 CPU)에서의 프로그램 성능향상 (O)
    • 성능향상이 없다면 의미가 없다.
  • 분산 컴퓨터에서의 프로그램 성능향상 (X)
    • 멀티쓰레드는 하나의 프로세스에서 동작하기 때문에
    • 분산 컴퓨터에서 성능향상을 위해선 멀티프로세스를 통해
  • 싱글코어(CPU) 컴퓨터 환경에서의 프로그램 성능향상 (X)
    • 오히려 더 느려짐
  • 프로그램을 모듈화해서 알아보기 쉽게 (X)
    • 디버깅이 매우 어려움

멀티코어 프로그래밍 => 병렬컴퓨터에서의 프로그램 성능향상

 

멀티코어 프로세서

IntelARM에서 멀티 코어 프로세서를 만드는 이유

  • CPU의 성능을 올려야 한다.
  • 클럭 속도를 높일 수 없다. -> 발열문제
  • 클럭 속도 말고 CPU의 속도를 올리는 법
    • 아키텍쳐 개선 : 캐시, 파이프라인, 예측분기, 동적수행 -> 한계에 부딪힘
  • 남은 방법 -> 멀티코어

 

코어?

  • ALU + Register + CU + Cache
  • 그냥 CPU와 똑같다.

멀티코어 CPU

  • 하나의 칩에 여러개의 프로세서를 같이 포장해 넣은 것
  • 프로그래머 입장에서는 멀티프로세서와 똑같다.

 

왜 이렇게 늦게 나왔는가?

  • 프로그래머가 싫어하기 때문
  • 프로그램을 다시 작성하지 않으면 성능향상 ZERO
  • 전혀 다른 알고리즘들을 사용해야한다.
  • 디버깅이 어렵다.
  • 옛날부터 있었다.
  • 과학 기술 계산용 (매우 비쌈)

 

게임콘솔

  • 소음이 나면 안되기 때문에 CPU 클럭수를 줄이고, 코어를 늘림
  • 컴퓨터: 3.2GHz / 4Core
  • 콘솔: 1.6GHz / 8Core

 

멀티프로세서 지원

운영체제에서의 쓰레드 지원

 

Windows

  • 프로세스의 하위 개념
  • 모든 프로세스는 처음 시작 시 한 개의 쓰레드를 갖고 실행
  • 운영체제가 쓰레드를 직접 스케쥴링
  • 멀티 CPU라면 여러개의 쓰레드를 동시에 실행시켜줌

Linux

  • 리눅스는 쓰레드라는 개념이없다.
    • 모든 것은 프로세스
    • Pthread라이브러리가 마치 쓰레드가 존재하는것처럼 보이게 해준다.
  • 리눅스에서 쓰레드를 사용할 수 있다.
    • 코드, 데이터, 힙을 공유하는 프로세스를 생성할 수 있다.
    • 다른 운영체제의 쓰레드와 다른 것이 없다.

 

다음 포스팅은 덧셈을 하는 멀티쓰레드 프로그램을 실습해보겠습니다.


출처

한국산업기술대학교 게임공학부 정내훈 교수님 강의 - 멀티코어 프로그래밍