CPU 코어(core), 스레드(thread)란???
CPU의 '성능'을 보다보면 코어(core) 수, 스레드(thread) 수 같은게 있습니다.
이것들이 무엇인지 확인해보도록 하겠습니다.
이 core와 thread를 이해하기 위해서는 hyper-threading 이라는 기능을 알아야 합니다.
쉽게 설명하자면, 하나의 core에서 일을 할 때 한 가지 일만 하면 남는 잉여자원이 존재하기 때문에 잉여자원을 활용해 동시에 다른 일을 하는 기술입니다.

더 쉽게 말하면
원래는 1core 당 1thread 로 한가지 일만 할 수 있었는데 hyper-threading을 활용하면 1core 당 2thread로 일을 2배로 할 수 있게 된 것입니다.
1차선 도로보다 2차선 도로가 덜 막히는 것과 같은 원리입니다.
예를 들어,
single core는 1 core 2 thread
duel core는 2 core 4 thread
quad core는 4 core 8 thread
이런 식인 것이죠.
물론
4 core 4 thread 와 2 core 4 thread 를
비교하면 전자가 좋습니다.
하나의 core를 쪼개서 2가지 일을 하는 것보다 하나로 1가지 일을 하는 것의 효율이 더 좋죠.
thread에 대해서 조금 더 이야기해보면 thread는 process 보다 작은 단위입니다.
1개의 process는 1개의 program 실행을 의미합니다.
1개의 프로그램에서 복잡한 동시작업을 하기위해서 process를 더 작은 단위로 나눈 것이 thread입니다.
하나의 process에서 thread를 여러 개로 나눈 뒤 각각의 thread가 memory를 공유하면 정보 교환이 쉽고, 메모리 점유가 적어 속도를 더 올릴 수 있습니다.
이걸 process 입장에서 바라보면 process는 최소 1개의 thread를 가진다고도 할 수 있습니다.
물론 너무 과하게 thread를 나누다보면 여러 문제가 발생합니다.
또 중요한 것은 사용 중인 software, program이 multi-core(다중코어)와 multi-thread (다중스레드)를 지원해야만 의미가 있습니다.
어떤 프로그램들은 multi-core나 multi-thread를 지원하지 않습니다.
만약 한 프로그램이 single core만 지원한다면 core가 1개인 CPU (single core CPU)를 쓴 것과 core가 4개인 quad core CPU를 쓴 것의 성능차이가 무의미해집니다.
심지어 single core CPU가 더 빠를 수도 있습니다.
같은 성능이라면 core 수가 적을수록 clock(클럭)이 높기 때문입니다.
single core의 경우, 하나의 CPU에 한 개의 core만 있기 때문에 하나의 CPU에 4개의 core가 있는 것보다 1개의 core만 비교해보면 효율이 더 높습니다.
좁은 공간에 혼자 일하는 것이 4명이서 비좁게 일하는 것보다 효율이 높다는 비유 정도로 기억하시면 될 것 같습니다.
그렇기 때문에 평소에 dual core까지만 지원하는 program을 대부분 사용한다면 quad core CPU를 구매하는 것보다 dual core CPU를 구매하는것이 나을 수도 있습니다.
참고로 clock은 computer prcessor의 동작속도를 의미하고 초당 몇 회 전기적 신호를 주느냐를 Hz 단위로 표기합니다.
그렇다면 clock이 CPU의 성능을 대표한다고 할 수 있을까요?
반은 맞고 반은 틀린 말입니다.
CPU의 성능을 결정하는 것에는 크게 3가지 정도가 있습니다.
(1) clock 수
(2) core 와 thread 의 개수
(3) IPC (사이클 당 명령어 처리 횟수)
여기서 주의해야 할 점!!
multi core가 single core보다 항상 좋을까??
상식적으로 생각해보면 당연히 single core 보다 dual core가 같은 일을 2배로 할 수 있으니 좋을 것이고 quad core, hexa core, octa core가 더욱 더 좋을 것입니다.
실제로 가격도 core 수가 올라갈수록 높습니다.
하지만 실제 운영에서 꼭 그런 것은 아닙니다.
하나의 CPU에서 여러 개의 core를 가지고 운영하는 것은 전력소모가 더 심하고, 발열도 더 많이 생깁니다.
이를 보완하기 우해서 CPU controller 라는 것이 존재하고 이것이 전력소모와 발열을 최소화하기 위해 관리합니다.