Post

CPU[Thread]

Thread

쓰레드(Thread)에 대해 알기전에 먼저 코어에 대해 알아보겠습니다.

Core

코어에 대해 먼저 알아보기전에, CPU라는 용어를 다시 해석해야합니다.

전통적인 관점에서는 명령어를 실행하는 부품은 원칙적으로 한개만 존해하였습니다.

하지만 기술이 발전하면서 CPU내부에는 명령어를 실행하는 부품을 얼마든지 만들 수 있게 되었습니다

이렇게 명령어를 실행하는 부품은 코어라는 용어로 사용되고 있습니다.

예를 들어서 8코어라고 하면, 명령어를 실행하는 부품을 8개 포함하고 있다고 생각하면 됩니다.

여기서 명령어를 실행하는 부품은 CPU안에 있는 ALU, 제어장치, 레지스터가 포함됩니다.

Multi-Core

이렇게 코어를 여러개 가지고 있으면 이 CPU를 멀티코어 또는 멀티코어 프로세서라고 부릅니다.

이 뜻은, 명령어를 처리하는 일꾼이 여러 명 있는것과 같습니다.

예를 들어서 2.2GHz인 단일코어 CPU, 1.3GHz인 멀티코어 CPU를 비교하면 당연히 코어를 여러개 가지고있는 멀티코어의 성능이 더 좋습니다.

하지만 무작정 코어가 많다고 좋은게 아닙니다.
이보다 중요한 것은 코어마다 처리할 명령어들을 얼마나 적절히 분배하느냐에 따라 연산속도가 달라지기 떄문에 이를 더 중요하게 생각해야 합니다.

Thread

스레드에는 CPU에서 사용되는 하드웨어적 스레드, 프로그램에서 사용되는 소프트웨어적 스레드가 존재합니다.

하드웨어적 스레드

하드웨어적 스레드는 하나의 코어가 동시에 처리하는 명령어 단위를 의미합니다.

만약에, 하나의 코어에서 여러 개의 명령어를 처리할 수 있으면 이는 멀티스레드 프로세서 또는 멀티스레드 CPU라고 합니다.

소프트웨어적 스레드

소프트웨어적 스레드는 하나의 프로그램에서 독립적으로 실행되는 단위를 의미합니다.

하나의 프로그램은 실행되는 과정에서 한 부분만 실행될 수도 있지만, 프로그램의 여러부분이 동시에 실행될 수 있습니다.

즉, 1코어1스레드 CPU로도, 프로그램의 여러 부분을 동시에 실행할 수 있습니다.

멀티스레드 프로세서

[ 사진 ] 멀티스레드 프로세서는 하나의 코어로 여러 명령어를 동시에 처리할 수 있다고 했습니다.

이게 가능한 가장 큰 핵심은 레지스터입니다.
코어 안에는 프로그램 카운터, 스택 포인터, 메모리 버퍼 레지스터, 메모리 주소 레지스터가 있다고 앞서 다뤘습니다.

멀티스레드 프로세서가 가능하게 하려면 이 레지스터들을 여러개 배치하면 됩니다.

즉, 1개의 코안에 ALU,제어장치가 각각 1개, 레지스터 세트가 2개있다고 가정하면, 1코어 2스레드 CPU가 됩니다.

만약에, 이 코어가 2개 있다고 가정하면 2코어 4스레드 CPU가 됩니다.

하지만 메모리 입장에서는 그저 한번에 하나의 명령어를 처리하는 CPU로 봅니다.

그래서 하드웨어 스레드를 논리 프로세서라고도 부르기도 합니다.

결론

코어는 명령어를 실행할 수 있는 하드웨어 부품이고,

스레드는 명령어를 실행하는 단위입니다.

멀티코어 프로세서는 명령어를 실행할 수 있는 하드웨어 부품(ALU,제어장치,레지스터)이 CPU안에 여러개 있는 CPU를 의미합니다.

멀티스레드 프로세서는 하나의 코어로 여러개의 명령어를 동시에 실행할 수 있는 CPU를 의미합니다.

참고 자료 :: 혼공자 [ 혼자 공부하는 컴퓨터 구조 + 운영체제 ]

This post is licensed under CC BY 4.0 by the author.