https://prod.danawa.com/info/?pcode=18039374#bookmark_product_information

가지고 싶다 사주세요

코어와 멀티코어

대충 CPU 사양을 검색해 보면 N Cores 라고 나와 있는 사진들을 볼 수 있다. 코어는 명령어를 실행하는 부품을 여러 개 포함하는 부품이라고 한다. (ALU, 제어장치, 레지스터...의 모집)

위의 사진에는 16 Cores라고 나와있는데 이는 코어 부품을 16개(!)를 포함하고 있다고 보면 된다.

코어를 여러개 포함하고 있는 CPU를 멀티코어 CPU 혹은 멀티코어 프로세서라고 한다.

코어 개수를 N개로 늘리면 연산 처리 속도가 무조건 N배만큼 증가하지는 않는다.

마치 우리가 조별과제 한다고 조원 모두가 열심히 하지 않는 것처럼 말이다.

코어가 많아도 모든 코어로 연산이 적절히 분배되지 않으면 코어 수에 비례하여 연산속도가 증가하지 않는다.

또한 처리하는 일의 양에 비해 코어 수가 많아도 성능에는 크게 영향이 없어진다.

중요한 것은 코어마다 처리할 명령어들을 얼마나 잘 분배하느냐이다.

스레드와 멀티 스레드

스레드

실행 흐름의 단위
스레드는 CPU에서 쓰는 하드웨어적 스레드와 프로그램에서 사용하는 소프트웨어적 스레드가 있다.

하드웨어적 스레드

스레드를 하드웨어적으로 정의하면 하나의 코어가 동시에 처리하는 명령어
여러 스레드를 지원하는 CPU는 하나의 코어로 여러개의 명령어를 동시에 처리할 수 있다.

이처럼 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서 또는 멀티스레드 CPU라고 한다.

소프트웨어적 스레드

하나의 프로그램에서 독립적으로 실행되는 단위

하나의 프로그램에 아래와 같은 기능이 동시에 돌아간다고 가정하면
1. 입력받은 내용 화면에 표시
2. 입력한 내용 맞춤법 검사
3. 입력한 내용 수시 검사

위의 기능들을 작동시키는 코드를 각각의 스레드로 만들면 동시에 실행이 가능해진다.

여기서 주의해야 할 점은 하드웨어 스레드와 소프트웨어 스레드를 혼동하면 안된다는 것이다. 1코어 1스레드 CPU도 소프트웨어적 스레드를 수십 개 실행할 수 있다.

멀티스레드 프로세스 가 하나의 코어로 여러 명령어를 동시에 실행하는 방법

하나의 코어에 여러 명령어를 동시에 처리하게 하려면 여러 레지스터를 가지고 있으면 된다. 레지스터 세트가 2개라면 ALU와 제어장치가 두 개의 레지스터 세트에 저장된 명령어를 해석하고 실행하면 하나의 코어에 두 개의 명령어를 동시에 실행 시킬 수 있다.

메모리 입장에서 2코어 4스레드 CPU는 한 번에 4개의 명령어를 처리할 수 있는 것으로 본다.
그래서 하드웨어 스레드를 논리 프로세서라고 부르기도 한다.

profile
어쩌다보니 개발하게 된 구황작물

0개의 댓글