카테고리 없음

[컴퓨터 구조] 5-1. 빠른 CPU를 위한 설계 기법 - 클럭&멀티 코어&멀티 스레드

haeyoon 2024. 5. 1. 11:51

CPU 속도를 빠르게 하기 위해서는 어떤 방법들이 있을까?
오늘은 클럭, 멀티코어, 멀티스레드에 대해 알아보고 내 컴퓨터 사양도 뜯어보겠다.



1. 클럭
클럭 속도 ↑ → 성능 ↑

[컴퓨터 구조] 4-1&2. CPU의 구성요소 - https://haeyoon12.tistory.com/m/23

클럭 신호가 빠르게 반복되면

- 컴퓨터 부품이 더 빠른 박자에 맞춰 움직이고, CPU는 명령어 사이클을 더 빠르게 반복할것이고, 다른 부품들도 더 빠르게 작동한다.
- 클럭속도 너무 높이면 발열문제 발생

클럭 속도 단위 헤르츠(HZ)
1초에 클럭이 몇번 반복되는지
예시) Base: 2.5GHz / Max: 4.9GHz
→ 1초에 클럭이 기본적으로 2.5*10^9 = 25억번, 순간적으로 최대 4.9*10^9 = 49억번 반복된다

 



2. 코어와 멀티코어
코어 수 ↑ → 성능 ↑
- 하지만 코어수에 비례해 증가하지는 않는다. 코어마다 처리할 연산이 적절히 분배되어야 한다.
- 작업량보다 코어수가 지나치게 많아도 성능에 크게 영향을 미치지 않는다,

* 코어
명령어를 실행하는 부품

* CPU
과거의 CPU는 명령어를 실행하는 부품
명령어를 실행하는 부품(=코어)를 여러개 포함하는 부품

* 멀티코어 CPU / 멀티코어 프로세서
여러개의 코어를 가지고 있는 CPU



3. 스레드와 멀티스레드

* 스레드

사전적 정의: 실행 흐름의 단위

 

3.1. 하드웨어적 스레드 (CPU에서 사용되는 스레드) / 논리 프로세서

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

 

  • ex1) 2코어 4스레드

     명령어를 실행하는 부품 = 2개 / 한번에 처리할 수 있는 명령어 개수 = 4개

        → 코어 하나당 2개의 하드웨어 스레드 처리

  • ex2) 8코어 16스레드

     명령어를 실행하는 부품 = 8개 / 한번에 처리할 수 있는 명령어 개수 = 16개

        → 코어 하나당 2개의 하드웨어 스레드 처리

 

3.2. 소프트웨어적 스레드 (프로그래밍에서 사용되는 스레드)

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

1코어 1스레드 (한번에 하나씩 명령어 처리)에서도 소프트웨어적 스레드를 수십개 실행할 수 있다

 

* 멀티스레드 프로세서

하나의 코어로 여러 명령어를 동시에 처리하도록 하기 위해, 하나의 명령어를 처리하기 위해 꼭 필요한 레지스터(프로그램 카운터, 스택 포인터, 메모리 버퍼레지스터, 메모리 주소 레지스터 등)를 여러개 가지고 있어야 한다.

→ 두개의 프로그램 카운터 = 메모리에서 가져올 명령어 주소 두개 저장 가능

     두개의 스택포인터 = 두개의 스택 관리 가능

레지스터 세트가 두개인 CPU = 한개의 명령어를 처리하기 위한 정보를 기억한다 = 하나의 코어에서 두개의 명령어 처리

 

 



다시 돌아와 내 컴퓨터 사양을 보자

2코어 4스레드
내 컴퓨터는 다음과 같을 것이다

 

클럭: 2.40GHz

1초에 클럭이 기본적으로 2.4*10^9 = 24억번 반복된다

 

코어: 2
CPU에 명령어를 실행하는 부품을 2개 포함하고 있다 = 듀얼코어 (멀티코어)

스레드: 4

한번에 4개의 명령어를 처리할 수 있다 (멀티스레드)