CPU 스레드란? 코어·논리 프로세서·프로그램 스레드의 차이
CPU 사양의 스레드(Thread)는 프로세서가 하드웨어로 제공하는 실행 문맥의 수를 뜻하며, 운영체제에서는 논리 프로세서 수로 확인할 수 있습니다. 프로그램 안의 실행 흐름인 소프트웨어 스레드와는 구분해야 합니다. 8코어 16스레드는 물리 코어가 16개라는 뜻도, 프로그램을 16개까지만 실행할 수 있다는 뜻도 아닙니다.
스레드라는 말이 두 가지로 쓰이는 이유
프로그램에서 스레드는 운영체제가 실행 시간을 배정할 수 있는 작업 흐름입니다. 하나의 프로세스 안에 화면 입력을 처리하는 스레드, 파일을 읽는 스레드와 계산을 수행하는 스레드가 함께 있을 수 있습니다. 같은 프로세스의 스레드들은 주소 공간과 자원을 공유하면서 각자의 실행 상태를 유지합니다. Microsoft의 프로세스와 스레드 설명은 이 관계를 정의합니다.
반면 CPU 판매 사양의 “16스레드”는 프로그램이 만든 스레드를 세는 값이 아닙니다. 하드웨어가 제공하는 실행 문맥을 세는 값입니다. 운영체제는 실행할 준비가 된 소프트웨어 스레드를 논리 프로세서에 배치하고, 대기 중이거나 실행 시간이 끝난 스레드는 다른 스레드로 바꿉니다.
| 용어 | 무엇을 세나요? | 예시의 의미 |
|---|---|---|
| 물리 코어 | 실제 명령 실행 자원 | 8코어는 물리 코어 8개 |
| 하드웨어 스레드·논리 프로세서 | 하드웨어 실행 문맥 | 16스레드는 논리 프로세서 16개 |
| 소프트웨어 스레드 | 프로그램의 실행 흐름 | 프로그램 여러 개가 합쳐 수백·수천 개를 만들 수도 있음 |
프로세스끼리도 공유 메모리 같은 명시적인 수단으로 데이터를 공유할 수 있습니다. 다만 같은 프로세스의 스레드처럼 주소 공간을 기본으로 공유하는 것과는 다릅니다. 이 글에서는 CPU 사양을 읽는 데 필요한 범위로 두 의미를 구분합니다.
SMT와 하이퍼스레딩은 어떻게 작동하나요?
동시 멀티스레딩(SMT, Simultaneous Multithreading)은 하나의 물리 코어가 여러 하드웨어 스레드를 지원하는 방식입니다. Intel의 하이퍼스레딩(Hyper-Threading)은 그 구현 중 하나입니다. 지원 제품에서는 코어 하나를 운영체제에 두 개의 논리 프로세서로 제공할 수 있습니다.
두 실행 문맥은 레지스터 상태 등 필요한 문맥을 구분해 유지하지만, 같은 코어의 실행 장치와 일부 캐시 같은 자원은 공유합니다. 한 스레드가 자원을 충분히 쓰지 못하는 동안 다른 스레드가 활용할 기회를 만드는 것이 핵심입니다. Intel의 스레딩 최적화 문서도 동일 코어의 하드웨어 스레드가 실행 자원을 공유한다고 설명합니다.
따라서 8코어 16스레드를 16코어와 동일하게 볼 수 없습니다. 추가 실행 문맥이 생겨 처리량이 개선될 수 있지만, 물리 코어의 계산 자원이 두 배로 늘어나는 것은 아닙니다. 지원 여부와 활성화 상태는 CPU 모델과 BIOS·UEFI 설정에 따라 달라집니다.
프로그램은 CPU 스레드 수보다 많이 실행할 수 있나요?
실행할 수 있습니다. 논리 프로세서 수는 시스템에 존재할 수 있는 소프트웨어 스레드의 최대 개수가 아닙니다. 운영체제가 여러 스레드에 CPU 시간을 나누어 주기 때문에 논리 프로세서보다 많은 스레드가 번갈아 진행할 수 있습니다.
예를 들어 논리 프로세서가 4개인 PC에서 실행 준비가 된 스레드가 20개라면, 스케줄러는 우선순위와 실행 상태 등을 고려해 시간을 배정합니다. 모든 스레드가 같은 순간에 CPU에서 실행되는 것은 아니지만 사용자에게는 여러 작업이 함께 진행되는 것처럼 보일 수 있습니다.
이처럼 작업이 겹쳐 진행되는 동시성과 실제 여러 실행 자원에서 동시에 계산하는 병렬성은 구분해야 합니다. 파일이나 네트워크 응답을 기다리는 스레드를 별도로 두면 코어를 추가하지 않아도 화면 응답성이 좋아질 수 있습니다. 반대로 계산 스레드를 무조건 많이 만들면 전환 비용과 자원 경쟁이 늘어날 수 있습니다.
스레드 수가 많으면 어떤 작업이 빨라지나요?
독립적으로 나눌 수 있는 CPU 계산이 충분하고 프로그램이 이를 활용하면 추가 하드웨어 스레드가 처리량에 도움이 될 수 있습니다. 여러 파일 변환, 병렬 빌드와 일부 렌더링이 이런 비교를 해 볼 만한 작업입니다. 다만 프로그램과 데이터에 따라 이득이 달라집니다.
- 작업 대부분이 하나의 소프트웨어 스레드에 의존하면 추가 논리 프로세서의 효과가 제한됩니다.
- 두 스레드가 같은 코어의 계산 자원이나 캐시를 강하게 경쟁하면 SMT의 이점이 작아질 수 있습니다.
- 메모리나 디스크가 먼저 한계에 도달하면 CPU 실행 문맥을 늘려도 대기가 남습니다.
- 전체 CPU 사용률이 낮아도 특정 논리 프로세서가 바쁘면 일부 처리 흐름이 병목일 수 있습니다.
SMT를 끄면 무조건 게임이 빨라지거나 보안 문제가 모두 해결된다고 일반화할 수 없습니다. 특별한 요구 사항이 없다면 기본 설정을 유지하고, 변경이 필요한 경우 같은 작업 조건에서 결과를 비교한 뒤 원래 설정으로 되돌릴 수 있도록 기록하세요.
스레드 수 증가의 이득은 동일 조건의 벤치마크로 확인합니다. 코어가 공유하는 캐시와 메모리 접근도 결과에 영향을 줍니다. 게임에서 전체 CPU 사용률이 낮아도 특정 스레드가 병목일 수 있으므로 사용률 하나로 여유를 판단하지 마세요.
코어 수의 두 배가 스레드 수인 것은 아닙니다
모든 코어가 두 스레드를 제공하는 CPU도 있지만, 한 스레드만 제공하거나 코어 종류별로 다른 구성을 쓰는 제품도 있습니다. Core i7-12700K는 12코어 20스레드이고, Core Ultra 7 265K는 20코어 20스레드입니다. 제품 이름이나 제조사만 보고 스레드 수를 계산하지 말고 공식 사양의 Total Cores와 Total Threads를 확인해야 합니다.
물리적인 처리 단위의 의미와 하이브리드 구성은 CPU 코어와 성능을 비교하는 방법에서 설명합니다. 숫자가 더 큰 제품이 모든 프로그램에서 빠르다는 의미로 두 사양을 비교하지 않는 것이 중요합니다.
Windows에서 실제 코어와 논리 프로세서 수 확인하기
- Ctrl + Shift + Esc → 성능 → CPU를 엽니다.
- 코어와 논리 프로세서를 구분해서 확인합니다. 작업 관리자의 소프트웨어 스레드 총계와 혼동하지 않습니다.
- 그래프를 마우스 오른쪽 버튼으로 눌러 그래프 변경 → 논리 프로세서를 선택하면 실행 문맥별 사용률을 볼 수 있습니다. Windows 버전에 따라 표시 문구는 조금 다를 수 있습니다.
PowerShell에서는 다음 읽기 전용 명령으로 같은 종류의 정보를 조회할 수 있습니다. 관리자 권한이나 별도 모듈 설치는 필요하지 않습니다.
Get-CimInstance Win32_Processor |
Select-Object Name, NumberOfCores, NumberOfLogicalProcessors
NumberOfCores는 코어 수, NumberOfLogicalProcessors는 논리 프로세서 수입니다. CPU 소켓이 여러 개인 시스템에서는 프로세서별 행이 나올 수 있습니다. 속성의 정의는 Microsoft의 Win32_Processor 문서에서 확인할 수 있습니다.
조회값이 공식 사양과 다르면 가상 머신에서 실행한 것은 아닌지, BIOS·UEFI에서 코어나 SMT가 비활성화되었는지 확인합니다. 이 명령은 현재 환경에 보이는 구성을 조회하며, 특정 프로그램의 성능이나 모든 종류의 코어 구성을 판별하는 벤치마크는 아닙니다.










