클럭, 멀티코어, 멀티스레드
컴퓨터를 구매할 때 많이 본 단어들이다.
CPU 속도와 어떤 관계가 있을까?
클럭
클럭 속도가 높은 CPU는 빠르게 동작한다.
클럭 속도는 헤르츠(Hz)의 단위로 측정이 되는데 이는 1초에 클럭이 몇 번 반복되는지를 나타낸다.
1초에 100번 반복되면 CPU 클럭 속도는 100Hz인 것이다.
하지만 단순히 클럭 속도만 높다고 CPU가 빨라지는 것은 아니다.
컴퓨터의 발열 문제가 심각해지기 때문에 한계가 있다.
코어와 멀티코어
클럭 속도 외에 CPU 성능을 높이는 방법에는 코어와 스레드 수를 늘리는 방법이 있다.
보통 컴퓨터 구매시 '듀얼코어', '쿼드코어'와 같은 용어를 접하게 된다.
●코어
'코어'는 오늘날에는 명령어를 실행하는 부품을 뜻한다.
예전에는 CPU를 명령어를 실행하는 부품이라고 했지만 기술의 발전으로 CPU 내부에는 명령어를 실행하는 부품을 얼마든지 만들 수 있게 되었다.
따라서 8코어(Core)라고 한다면 명령어를 실행하는 부품 코어를 8개 포함하고 있구나로 생각하면 된다.
●멀티코어
'멀티코어'는 코어를 여러개 포함하고 있는 CPU를 부르는 단어이다.
명령어를 처리하는 일꾼이 여러 명 있는 것과 같다.
그럼 코어의 갯수가 많다고 CPU의 연산 속도가 빨라지는가?
그렇지는 않다.
처리하고자 하는 작업량보다 코어 수가 지나치게 많아도 성능에는 큰 영향이 없다.
예로 100인분의 도시락은 한 명의 요리사가 만드는 것보다 열 명의 요리사가 만드는 것이 빠르다.
하지만 4인분의 도시락은 열 명의 요리사가 만드는 게 다섯 명의 요리사가 만드는 것보다 특별히 더 빠르지는 않다.
이와 같이 코어마다 처리할 명령어들을 얼마나 적절하게 분배했는지, 그에 따라 연산 속도는 크게 달라진다.
스레드(thread)
스레드(thread)는 '실행 흐름의 단위'를 뜻한다.
중요한 점은 CPU에서 사용되는 스레드와 프로그래밍에서 사용되는 스레드는 용례가 다르다.
CPU에서 사용되는 스레드에는 '하드웨어적 스레드'가 있고 프로그램은 '소프트웨어적 스레드'가 있다.
●하드웨어적 스레드
하드웨어적 스레드는 하나의 코어가 동시에 처리하는 명령어 단위를 의미한다.
보통 흔히 우리가 알고있는 스레드는 하드웨어적 스레드를 의미한다.
예를들어 2코어 4스레드 CPU라고 한다면 2개의 코어안에 스레드가 2개씩 들어간 것을 의미한다.
즉, 명령어를 실행하는 부품 2개를 포함하고, 한 번에 4개의 명령어를 처리할 수 있는 CPU를 의미한다.
●소프트웨어적 스레드
소프트웨어적 스레드는 하나의 프로그램에서 독립적으로 실행되는 단위를 의미한다.
프로그래밍 언어나 운영체제 학습시 접하는 스레드가 소프트웨어적 스레드이다.
예로 노트를 개발한다고 가정한다면 입력받은 내용 화면에 보여주기, 맞춤법 검사하기, 수시로 저장하기 등
다양한 기능들을 넣게 된다.
그리고 동시에 수행되길 원한다면 이 기능들을 작동시키는 코드를 각각의 스레드로 만들면 동시에 실행할 수 있다.
●멀티스레드 프로세서
멀티스레드 프로세서의 가장 큰 핵심은 레지스터이다.
하나의 명령어를 처리하기 위해 꼭 필요한 레지스터를 여러개 가지고 있으면 된다.
즉, 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU를 말한다.
'컴퓨터공학(CS) 배우기 > 혼공 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[CS] CISC 와 RISC(CPU 마지막) (1) | 2023.04.12 |
---|---|
[CS] 명령어 병렬 처리 기법 (0) | 2023.04.10 |
[CS] 인터럽트 (0) | 2023.04.08 |
[CS] 명령어 사이클 (0) | 2023.04.03 |
[CS] 레지스터 (0) | 2023.04.02 |