[컴퓨터 구조] CPU 클럭, 코어 그리고 "스레드"

수민·2023년 12월 11일
0

CS 공부

목록 보기
5/5
post-thumbnail

혼자 공부하는 컴퓨터 구조 + 운영체제를 읽고 공부한 내용을 복기 목적으로 작성한 글입니다.
이해하기 쉽게 잘 설명되어 있는 책이니 관심있으신 분들은 구매해서 보시는걸 추천드립니다!


클럭이란?

클럭(clock)은 컴퓨터의 모든 부품이 움직이는 시간 단위이다.
컴퓨터의 모든 부품은 클럭 신호에 맞춰서 작동한다.

클럭 신호는 메트로놈 박자처럼 1초에 몇 번 반복되는 형식으로 측정한다.
클럭 신호가 빠르게 반복될 수록, 박자. 즉 컴퓨터가 실행될 수 있는 주기가 빨라진다.

그러면 CPU는 명령어 사이클을 더 빠르게 반복할 수 있다.
-> 클럭 속도 == CPU의 속도 단위

하지만, 클럭 속도를 무작정 미친듯이 높인다고 CPU 성능이 무제한 상승하는 것은 아니다.
과도한 클럭 속도 향상은 CPU의 발열을 유도한다.

그래서 결국, 클럭 속도 조절을 통해 CPU의 성능을 향상시키는 것에는 제한이 있다.

CPU 성능을 향상시키는 방법

CPU의 코어스레드 수를 늘려서 CPU의 성능을 향상시킬 수 있다.

멀티코어

코어(core) : 명령어를 실행하는 부품을 의미한다.

ALU, 레지스터, 제어장치를 포함하는 단위를 코어라고 할 수 있다.

그래서 CPU는 "하나 이상의 코어를 포함하는 부품"을 의미한다.

코어를 여러 개 포함하는 CPU를 멀티코어 CPU / 멀티코어 프로세서라고 한다.

코어 개수를 늘리면, 처리할 연산의 개수가 그 만큼 늘어나므로 CPU의 성능이 향상된다.
하지만 CPU의 성능이 코어 개수에 비례해서 100% 늘어나는 것은 아니다.

CPU 속도 향상에는 각 코어에 처리할 명령어를 적절히 배치하는 것이 중요하다.

멀티스레드

로 가기 전에, 스레드에는 하드웨어적 스레드소프트웨어적 스레드로 구분할 수 있다.

하드웨어 스레드와 소프트웨어 스레드

일반적으로 내가 알았던 스레드의 개념은 소프트웨어 스레드로,
하나의 프로그램에서 독립적으로 실행되는 흐름의 물리적 단위를 의미한다.

하지만 컴퓨터 구조에서 이야기하는 하드웨어 스레드는,
하나의 코어실행하는 명령어의 단위를 의미한다.

사실 멀티스레드를 처음 배울 때,
"내 컴퓨터에서 스레드를 50,000개를 어떻게 만들 수 있는거지?"라고 생각했던 경험이 있다.
이는 하드웨어 스레드와 소프트웨어 스레드의 개념을 관통하는 질문이라고 생각한다.

하드웨어 스레드는 작업을 실행하는 물리적인 개념이고,
소프트웨어 스레드는 주어지는 작업의 단위라고 생각해보자.

만약 8코어 16스레드의 CPU라고 하면,
총 16개의 하드웨어 스레드가 동시에 작업을 수행할 수 있다.
이 16개의 쓰레드는 돌아가면서 50,000개의 소프트웨어 스레드를 수행한다.

이러한 상황이 무조건적인 성능 향상을 일으키는 것은 아니기 때문에,
하드웨어적 스레드의 개수에 맞춰서 소프트웨어 스레드를 설정하는 것이 좋다.

profile
우하하

0개의 댓글