[컴퓨터 구조] CPU: 코어와 멀티코어

bien·2024년 8월 4일
0

컴퓨터구조

목록 보기
2/10

CPU

  • 컴퓨터의 두뇌
  • 메모리에 저장된 명령어를 읽어들이고, 읽어들인 명령어를 해석하고 실행하는 부품.

내부 구성요소

  • 산술논리연산장치(ALU: Arithmetic Logic Unit)
    • 계산기. 컴퓨터 내부에서 수행되는 대부분의 계산을 도맡아 시행한다.
  • 레지스터(register)
    • CPU 내부의 작은 임시 저장 장치
    • 프로그램을 실행하는 데 필요한 값을 임시로 저장.
    • CPU 내부에는 여러 개의 레지스터가 존재하고 각기 다른 이름과 역할을 가지고 있다.
  • 제어장치(CU: Control Unit)
    • 제어신호(control signal)라는 전기 신호를 내보내고 명령어를 해석하는 장치
      • 제어신호: 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호
    • cpu가 메모리에 저장된 값을 읽고 싶을 땐 메모리를 향해 메모리 읽기라는 제어 신호를 보낸다.
    • cpu가 메모리에 어떤 값을 저장하고 싶을 땐 메모리를 향해 메모리 쓰기라는 제어 신호를 보낸다.

코어(Core)

  • 코어는 이러한 CPU의 기본구성요소(ALU, 제어장치, 레지스터)를 모두 포함하는 완전한 실행 유닛이다.
    • 프로그램의 명렁(Instruction)을 읽고 수행하는 독립적인 처리 장치(Processing Unnit)
    • 즉, 코어는 독립적으로 명령어를 fetch,decode,execute할 수 있는 CPU의 기본 단위이다.
  • 코어는 CPU 내부에 위치하며, 아키텍쳐 설계에 따라 여러 개의 코어가 CPU에 동시에 위치할 수 있다.
    • 전통적으로 CPU에서 명령어를 실행하는 부품은 원칙적으로 1개 존재했다.
    • 그러나 오늘날에는 CPU에 명령어를 실행하는 부품이 여러 개 존재하고, 이 부품을 코어라고 하며, 코어가 여러 개 존재할 때 멀티코어 라고 한다.

CPU vs Core

CPUCore
컴퓨터 내의 전자회로CPU내의 전자 회로
컴퓨터에 여러 개의 CPU가 있을 수 있다.CPU에 여러 개의 코어(Core)가 있을 수 있다.
Fetch-Decode-ExecuteFetch-Decode-Execute

차이점

두 개의 장치 모두 컴퓨터의 컴퓨팅 구성장치로 기능을 수행하고 작동하지만, 컴퓨터의 속도와 효율성을 설명할 수 있는 몇 가지 차이점이 존재한다.
앞에서 언급한 바와 같이 CPU는 프로그램의 명령(Instruction)를 실행하는 것이며 대부분은 하나의 집적회로 칩(IC, Integrated Chip)이 포함되어 있다.
이 집적회로 내에 코어(Core), 입출력(IO) 관리 장치 및 기타 기본 구성요소 또한 포함되어 있다.

반면, 코어(Core)는 CPU의 하나의 구성요소로써 작동한다.
Fetch-Decode-Execute의 CPU 명령주기(Instruction Cycle)을 따른다.

일반적으로 멀티코어 프로세서는 단일 코어에 비해 빠른 CPU로 설명되지만, 실제로는 실행중인 프로그램에 따라 달라질 수 있다. 단일 코어 프로세서는 여전히 일부 프로그램의 멀티코어 프로세서보다 더 빠른 속도를 낼 수 있다. 이는 여전히 단계적으로 명령을 수행해야 하는 직렬방식(Serial)의 프로그램이 존재하기 때문이다.

멀티코어

  • 코어를 여러개 포함하고 있는 CPU = 멀티코어 CPU = 멀티코어 프로세서
  • CPU내에 명령어를 처리하는 일꾼이 여러명 있는 것.
  • CPU와 코어의 관계
    • 과거의 단일 코어 CPU: ALU + 제어장치 + 레지스터 = 1개의 코어 = CPU
    • 현대의 멀티 코어 CPU: (ALU + 제어장치 + 레지스터) * N + 공유자원 = N개의 코어 = CPU
  • 공유 자원
    • 멀티코어 CPU에서는 일부 자원이 코어 간에 공유된다.
      • 예: L3 캐시, 메모리 컨트롤러, I/O 인터페이스 등
  • 각 코어는 독립적으로 명령어를 실행할 수 있다.
    • 이로 인해 병렬 처리가 가능해진다.
코어 수프로세서 명칭
1싱글코어(single-core)
2듀얼코어(dual-core)
3트리플코어(triple-core)
4쿼드코어(quad-core)
6헥사코어(hexa-core)
8옥타코어(octa-core)
10데카코어(deca-core)
12도네카코어(dodeca-core)
  • CPU 연산속도가 꼭 코어 수에 비례하여 증가하지는 않는다.
    • 코어마다 처리할 연산이 적절하게 분배되지 않는다면 코어 수에 비례하여 연산 속도가 증가하지 않는다.

스레드와 멀티스레드

  • 스레드(thread): 실행 흐름의 단위
    • 하드웨어적 스레드: 하나의 코어가 동시에 처리하는 명령어 단위
    • 소프트웨어적 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위

하드웨어적 스레드

  • 하나의 코어가 동시에 처리하는 명령어 단위
    • 전통적 cpu: 1코어 1스레드
      • 명령어를 실행하는 부품이 하나 있고, 한 번에 하나씩 명령어를 실행하는 CPU
    • 2코어 4스레드
      • 명령어를 실행하는 부품을 두 개 포함하고, 한 번에 네 개의 명령어를 처리할 수 있는 CPU.
  • 멀티스레드(multithread) 프로세서, 멀티스레드 CPU
    • 하나의 코어로 여러 명령어를 동시에 처리하는 CPU
    • 8코어 16스레드: 명령어 실행 부품 8개 포함, 한번에 16개의 명령어를 처리하는 CPU
      • 코어 하나당 2개의 하드웨어 스레드를 처리.
  • 하이퍼스레딩(hyper-threading): 인텔이 자신들의 멀티스레드 기술에 부여한 명칭.

소프트웨어적 스레드

  • 하나의 프로그램에서 독립적으로 실행되는 단위
    • 하나의 프로그램은 실행되는 과정에서 한 부분만 실행될 수도 있지만, 프로그램의 여러 부분이 동시에 실행될 수도 있다.

스레드의 두가지 용례

  • 한 번에 하나씩 명령어를 처리하는 1코어 1스레드 CPU도 소프트웨어적 스레드를 수십 개 실행할 수 있다.
  • 1코어 1스레드 CPU로도 프로그램의 여러 부분을 동시에 실행할 수 있다.

멀티스레드 프로세서

  • 멀티스레드 프로세서: 하나의 코어로 여러 명령어를 동시에 처리하는 CPU
    • 어떻게 이런 일이 가능할까?
      • 가장 큰 핵심은 레지스터 에 있다.

  • 하나의 코어로 여러 명령어를 동시에 처리하도록 만들려면 프로그램 카운터, 스택 포인터, 메모리 버퍼 레지스터, 메모리 주소 레지스터와 같이 하나의 명령어를 처리하기 위해 꼭 필요한 레지스터를 여러개 가지고 있으면 된다.
    • 가령 프로그램 카운터가 2개 있다면 '메모리에서 가져올 명령어 주소'를 두 개 지정할 수 있을 것.
    • 스택 포인터가 2개 있다면 2개의 스택을 관리할 수 있다.
  • 하나의 명령어를 실행하기 위해 꼭 필요한 레지스터들을 '레지스터 세트'라고 표기
    ALU와 제어장치가 2개의 레지스터 세트에 저장된 명령어를 해석하고 실행하면 하나의 코어에서 2개의 명령어가 동시에 실행 가능.

논리 프로세서

  • 메모리 속 프로그램 입장에서 하드웨어 스레드는 마치 '한 번에 하나의 명령어를 처리하는 CPU'나 다름없음.
    • 그래서 하드웨어 스레드를 논리 프로세서(logic processor)라고 부르기도 한다.

정리

  • 코어: 명령어를 실행할 수 있는 '하드웨어 부품'
  • 스레드: 명령어를 실행하는 단위
  • 멀티코어 프로세서: 명령어를 실행할 수 있는 하드웨어 부품이 cpu안에 2개 이상 있는 cpu.
  • 멀티스레드 프로세서: 하나의 코어로 여러개의 명령어를 동시에 실행할 수 있는 cpu

📌 요약 정리

  • 하드웨어 스레드: 하나의 코어에서 명령어 실행을 병렬해서 동시에 여러개 실행하는 것. (일꾼이 여러개)
  • 소프트웨어 스레드: 프로그램 내부에서 개발자가 로직 흐름을 여러개 만든 것. (수행해야 할 일이 동시에 여러개)
  • 코어: 명령어 실행 주체. (= like 직원)
    • 코어 하나가 작업(하드웨어 스레드) 여러개 실행 가능.
      • 멀티스레드 코어 (직원이 여러명)
    • 하나의 cpu에 코어 여러개 존재 가능
      • 멀티코어 프로세서 (직원이 여러일 동시에 멀티로 수행)
  • CPU: 코어들 여러 개(1개일수도 있음). 코어 여러개가 하나의 두뇌. (= like 사장)

Reference

profile
Good Luck!

0개의 댓글