[컴퓨터 구조] 클럭, 코어, 스레드

byeol·2023년 3월 15일
0

오늘은 클럭, 코어, 스레드의 개념을 이해하고 이 3가지가 CPU의 속도로 어떤 관련이 있는지 배웠다.

노트북을 살 때 자주 보이던 단어였는데
이번 시간을 계기로 더 자세히 알게되어 기쁘다.

오늘도 🏃🏃‍♂️🏃‍♀️ Ready, Set, Go!!

클럭

클럭은 앞서 제어장치로 들어오는 정보 중의 하나로 부품들을 일사불란하게 움직이게 하는 신호이다.

클럭 속도 높다 = CPU의 성능이 좋다 = 더 빠르게 작동한다.

여기서 클럭 속도란
CPU의 속도 단위로 간주 될 수 있다.
단위는 헤르츠(Hz)로 1초에 몇 번 반복하느냐를 나타낸다.

하지만 클럭 속도는 항상 일정할까? ❌
고성능을 요하는 순간에는 순각적으로 클럭 속도를 높이고, 그렇지 않을 때는 유연하게 클럭 속도를 낮춘다.
최대 클럭 속도를 강제로 더 끌어올릴 수 있는데 이런 기법을 오버클럭킹(overclocking)이라고 한다.

클럭 속도를 무한정 높이자 ≠CPU가 빨라진다.

왜냐하면 클럭 속도가 무한정 높으면 CPU가 과부하에 걸려 발열 문제 등의 문제가 생길 수 있다.

따라서 클럭 속도만으로 CPU의 성능을 향상 시킬 수는 없다.

코어

앞서 내가 배웠던 CPU는 "명령어를 실행하는 부품"이었다.

하지만 현재 그 정의는 코어에 쓰인다.
코어는 "명령어를 실행하는 부품"이고 CPU는 "명령어를 실행하는 부품을 여러 개 포함하는 부품"이다.

즉 8코어의 의미는 CPU에 명령어를 실행하는 부품이 8개라는 의미이다.

넓게 확장해서 N코어 = 멀티코어 CPU = 멀티코어 프로세서 (N>=2)

코어의 무한정 늘리자 ≠ CPU가 빨라진다.

두가지 경우를 떠올리면 이해가 된다.
1. 4인 1조 조별과제와 8인 1조 조별과제를 했을 때 8인 1조의 조별과제 성과가 4인 1조 조별과제보다 떨어질 수도 있다. 이는 업무가 균등하게 배분되지 않았기 때문이다. 즉 코어마다 처리할 연산이 적절히 분배되지 않는다면 코어 수에 비례해서 연산 속도가 증가하지 않는다.
2. 처리한 연산의 양보다 지나치게 코어의 수가 많은 경우에는 성능에 크게 영향이 없다.

가장 중요한 것은 코어마다 처리할 명령어가 적절하게 분배하느냐!

스레드

스레드(thread) : 실행 흐름의 단위

스레드는 CPU에서 사용되는 하드웨어적 스레드와 프로그램에서 사용되는 소프트웨어적 스레드가 있다.

하드웨어적 스레드

하드웨어적 스레드 : 하나의 코어가 동시에 처리하는 명령어 단위

2코어 4스레드 CPU는 하나의 코어가 2개의 명렁어를 처리할 수 있어서 총 4개의 명령어인 4스레드를 처리한다.

하나의 코어가 여러 개의 명령어를 동시에 처리하는 CPU
= 멀티스레드 CPU
= 멀티스레드 프로세서

하이퍼스레딩 = 인텔의 멀티스레드 기술

소프트웨어적 스레드

소프트웨어적 스레드 : 하나의 프로그램에서 독립적으로 실행되는 단위

"더하라" 스레드 하나를 실행할 수 있고
"더하라","빼라" 스레드 두개를 동시에 실행할 수도 있다.

"더하라,빼라"는 동시에 실행되는 하나의 명렁어이며 따라서
1코어 1스레드 CPU는 소프트웨어적 스레드 여러개를 동시에 실행할 수 있다.

멀티스레드 프로세서

멀티스레드 프로세서 : 하나의 코어가 여러 개의 명령어를 동시에 실행시키는 CPU

하나의 코어가 여러 개의 명령을 한다 = 레지스터가 그에 맞게 역할을 한다는 것

예를 들어 프로그램 카운터라는 레지스터가 두개의 명령어를 실행한다면 명령어를 메모리에서 찾는데 혼란이 온다.

따라서 이렇게 레지스터들의 묶음(프로그램 카운터, 데이터 주소 레지스터 등)이 하나의 코어가 실행할 수 있는 명령어의 수만큼 존재한다.

그러나 메모리 입장에서 보면 N개의 CPU가 실행하는 것처럼 보인다. 따라서 하드웨어적 스레드(하나의 코어가 실행할 수 있는 명령어의 단위)를 논리 프로세서라고도 한다.

profile
꾸준하게 Ready, Set, Go!

0개의 댓글

관련 채용 정보