본문 바로가기
IT 공부/컴퓨터 하드웨어 및 구조

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

by exdus3156 2023. 12. 27.

1. 코어와 하드웨어 스레드 (논리 프로세서)

스레드라는 단어가 하드웨어 단위에서 사용되는 경우도 있고, 위와 같이 소프트웨어적으로 사용되는 경우도 있다. 따라서 헷갈릴 수 있다.

그러나 서로 완전히 다른 개념이다.

멀티코어는 제어장치와 ALU와 같이 실제로 작업을 병렬적으로 처리할 수 있도록 CPU의 핵심 장치 자체를 여러 개 두는 것을 말한다. 시분할 방식이 아니라 정말로 여러 개의 코어에 작업을 적재시키면 동시에 실행시킬 수 있다.

하드웨어에서 말하는 멀티쓰레드는 제어장치나 ALU까지 병렬적으로 두는 것은 아니다. 다만 온전하게 하나의 실행 단위가 수행되기 위한 레지스터 세트 여러 개를 물리적으로 배치했다. 

작업관리자로 내 컴퓨터의 코어 개수와 하드웨어 스레드 개수를 확인할 수 있다. 코어는 4개 이므로 물리적으로 작업을 병렬처리할 수 있다. (정말로 동시에 처리되는 것이다.)

논리 프로세서가 8개라 적혀 있는데 이것이 하드웨어 스레드다. 레지스터 세트가 8개 배치되어 있다는 것을 말한다. 순수하게 CPU 자원을 완전 독점하는 것은 아니므로 상식적으로 생각하는 완전 병렬 처리는 아니다. 하지만 컨텍스트 스위칭 비용이 줄어들어 적은 비용으로 다양한 작업을 한 번에 빠르게 처리할 수 있는 효과가 있다.

이러한 하드웨어 장치 위에 OS가 실행되고, 이 OS가 CPU 자원을 토대로 여러 개의 작업(task)을 CPU에 할당하는 것이다. 이 계층 위에 커널 쓰레드가 있다. 커널 쓰레드는 논리 프로세서와 완전히 다른 개념이다.

하드웨어 쓰레드가 8개라고 해서 시스템이 총 8개의 쓰레드만 실행하는 것이 아니다. 이런 오해는 코어가 4개라고 오직 4개의 프로세스만 동시 실행될 수 있다는 해석과 별반 다를 것이 없는 착각이다.