빠른 CPU 를 위한 설계 기법

.·2023년 12월 28일

computer-architecture

목록 보기
5/10

목차

  • 클럭
  • 코어 & 멀티 코어
  • 쓰레드 & 멀티 쓰레드

컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다.
cpu는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다.

그럼 클럭 신호가 빠르게 반복되면 cpu는 그만큼 빠른 박자에 맞춰 움직일까 ?
정답은 일반적으로는 그렇다.

그럼 클럭 신호를 마냥 높이면 cpu 가 무지막지하게 빨라질까 ?
그렇지 않다. 필요 이상으로 클럭을 높이면 발열이 심각해진다.

그럼 컴퓨터를 빠르게 하기 위해선 어떤 방법들이 추가적으로 있을까 ?

  • 클럭 속도 늘리는 방법
  • 코어 수 늘리기
  • 쓰레드 수 늘리기

Clock

  • 클럭 속도 : 헤르츠(Hz) 단위로 측정
  • 헤르츠(Hz) : 1초에 클럭이 반복되는 횟수
  • 클럭이 똑-'딱' 하고 1초에 한번 반복되면 1Hz, 클럭이 1초에 100번 반복되면 100Hz


Core & Multi core

  • 현대적인 관점에서 'CPU'라는 용어를 재해석 해야함
  • '명령어를 실행하는 부품'?
  • 전통적으로 '명령어를 실행하는 부품'은 원칙적으로 하나만 존재
  • 그러나 오늘날 CPU에는 '명령어를 실행하는 부품'이 여러개 존재
  • '명령어를 실행하는 부품'을 코어라는 용어로 사용

멀티 코어란

여러개의 코어를 포함하고 있는 CPU를 말한다.

  1. single-core
  2. dual-core
  3. triple-core
  4. quad-core
  5. hexa-core
  6. octa-core
  7. deca-core
  8. dodeca-core

그렇다면 코어를 많이 늘리면 연산 속도도 그에 비례해서 빨라질까 ?
그렇지 않다. 꼭 코어 수에 비례해서 증가하지는 않는다.


Thread & Multi Thread

쓰레드는 두 종류가 있다.

  • 하드웨어적 쓰레드가 있고,
  • 소프트웨어적 쓰레드가 있다.

하드웨어 쓰레드

하나의 코어가 동시에 처리하는 명령어 단위

멀티 쓰레드 프로세서를 실제로 설계하는 일은 매우 복잡하다.
가장 큰 핵심은 레지스터이다.
아래 그림과 같이 하나의 코어에 여러개의 레지스터 세트가 있다면 하나의 코어가 여러 명령어를 동시에 처리할 수 있다. 즉 이게 멀티 쓰레이드이다.
(레지스터 세트 : 하나의 명령어를 실행하기 위해 꼭 필요한 레지스터들 (MAR, MBR, Stack pointer, PC, ...))

만약 CPU 가 2코어 4쓰레드라고 했을 때에 메모리는 CPU 가 몇개의 코어와 쓰레드를 가지고 있는지는 알 수 없다.
그저 명령어를 몇개씩 가지고 가는구나 (=작업 흐름이 몇개 있구나) 만 알 고 있다.
그렇기때문에

하드웨어 쓰레드는 논리 프로세스라고도 부른다.

소프트웨어 쓰레드

하나의 프로그램에서 독립적으로 실행되는 단위

즉 하드웨어적으로 1코어 1쓰레드 CPU여도 여러 소프트웨어적 쓰레드를 만들 수 있다.

profile
.

0개의 댓글