2코어 4쓰레드? 4 CORE 8 THREAD 이런말 혹시 들어보셨나요?
CPU를 알아봐야 할때 반드시 알게되는 개념인데요,
core를 사람으로 비교하면 우리의 입으로 보시면 되겠습니다. 그러면 thread는? 우리의 양 손이 되겠습니다.
일단 위의 비유에서 전달하고 싶은 메세지는 1:2의 비율입니다. 그러면 CPU는 무엇이냐? 위 예시를 이어가는 비유를 들자면, 음식을 먹는 행위로 이해하면 되겠습니다. 실제로 CPU안에 위치한 코어는 기계어 연산을 처리하는 역할을 수행하는 부분입니다. 과거에는 CPU안에 하나의 코어만 존재했습니다. 하지만 기술이 발달함에 따라 오늘날 쿼드코어와 같은 멀티 코어 CPU가 등장한거죠. 즉, 입이 4개 손이 8개인겁니다 고로 더 빨리 음식을 먹을 수 있죠.
그러면 도대체 어디서 1:2의 비율이 등장하는거냐? 이것은 하이퍼스레딩 기술 때문입니다. 기저에 있는 기술 무엇이냐? 쉽게 설명하면 물리적인 것(CORE)을 논리적으로 나눈 실행 단위 (THREAD) 라고 생각하시면 되겠습니다. 마법 같지만 그러면 실제로 코어를 2개 쓰는 것과 똑같냐고 물을 수 있습니다, 하지만 그건 아닙니다. 어디까지나 유사하게 성능을 끌어올리는 개념인거죠. 예를 들어볼까요? 1개이지만 2개와 같은 성능을 보인다. 그러면 만약 사용하는 점유율이 50%에 다다른다면 그건 50%일까? 아닙니다, 100%가 되는것이죠. 물리적으로 2개가 되는 것은 아니니까요, 그리고 실제로 50%까지 사용할 수 있게 되는 것은 아닙니다. 왜냐하면 어디까지나 잉여 자원을 사용하는 것이니까요.
비유를 조금 더 들어보겠습니다. 손이라는 예시는 마치 무엇이든 2개를 수행할 수 있는 것처럼 해석되는데요, 실상은 그렇지 않습니다. 앞서 설명드린바와 같이 물리적인 코어는 1개 이니까요. 책상 위에 가위와 풀(2 스레드)이 있고 하나의 의자(코어)가 있다고 생각하면 됩니다. 즉, 가위를 쓰는 동안에는 가위를 중복해서 동시에 사용할 수는 없습니다. 대신 풀은 사용할 수 있겠죠.
조금 더 자세히 이야기를 해볼까요? 먼저 clock(클럭)이라는 단위에 대해서 들어보셨나요? 클럭이란 CPU의 속도를 나타내는 단위입니다. 단위라면 무언가를 측정하는 기준이죠, 클럭은 1초에 파장/주파수가 한번 움직이는 시간을 의미합니다. 즉 1초에 한번의 왕복 운동이 된다라는 의미입니다. 이 시간 동안에 처리되는 데이터의 양이 결국 CPU의 속도가 되는 것입니다. 추가적으로 사이클이라는 개념이 필요합니다. 사이클은 CPU안 내부 발진기에 의해서 동기화되는 펄스를 의미합니다. 쉽게 설명하면, 하나의 사이클 마다 프로세서 안에 수십억 단위의 트랜지스터가 열고 닫히고 하는거죠. 트랜지스터가 무엇인지까지 설명드리면 쉽게 말해 전기가 연결됐다 안됐다 하게 하는 장치로, 스위칭 기능을 통해 0과 1을 발생시키는 것으로 이해하면 되겠습니다.
그러면 다시 정의해보면, 하나의 사이클은 프로세서라는 처리장치 안에서 일어나는 수십억의 0과 1이 됩니다. 그렇지만 일반적으로 CPU 성능을 보면 GHz라는 단위로 표현되는걸 알 수 있습니다. 사이클? 기가헤르츠? 이 둘 사이에 계산식이 있습니다. 기가 헤르츠는 초 단위의 주기 수를 측정하는 주파수의 단위입니다.
다시 말하면, 헤르츠는 주기적인 1초 간격에서의 사이클 수를 나타냅니다. 고로, 기가헤르츠는 1,000,000,000 헤르츠(10억 헤르츠) 가 되고, 그러면 1초에 10억 사이클(10억번의 반복 운동)이 되는 겁니다. 나노초는 10억분의 1초라는 단위명입니다. 1 클럭 주기는 1 나노초가 되는 것이죠. 오늘날 나오는 최신 CPU는 1 나노초 미만의 클럭주기를 갖습니다.
여기까지 이해하셨으면 이제 3.2GHz를 이해할 수 있습니다. 즉, CPU는 초당 32억번의 사이클을 실행한다. 그러면 클럭이 무조건 높은게 좋냐? 과거에는 해당 방향으로 연구를 진행하였습니다. 하지만 발열이라는 문제와 전력 소비로 인해 클럭의 속도보다는 멀티 코어, 멀티 스레드 방향으로 연구가 이어졌습니다. 하지만 계속 발열과 전력 소비를 통제하려는 노력이 이어졌고 이러한 노력이 언론에서 언젠가 보셨을 CPU 회로 굵기를 65나노미터, 45나노미터로 줄였다는 기사들입니다. CPU안에 전자들이 이동을 하면서 작동하게 되는데요, 회로의 굵기가 얇아지게 되면 전자가 이동하는 거리도 짧아집니다. 이동 거리가 짧아지면 필요한 전압이 줄어들게 되고, 전압이 줄면 전력 소모와 발열도 줄게되는 것이죠.
CPU 안에는 코어만 있는 것은 아닙니다. 코어 이외에도 캐시메모리, 컨트롤러, 프로세서 등 다양하게 구성되어 있고 일반적으로 정의되는 컴퓨터의 구성 단위 중 기억과 연산 그리고 제어를 모두 종합한다고 볼 수 있죠. 몇가지만 더 언급하고 마무리하겠습니다.
CPU 내부에는 산술과 논리 연산을 담당하는 ALU(Arithmatic Logic Unit)이 있습니다. ALU는 가산기, 보수기, 기억 레지스터, 데이터 레지스트리 등으로 구성되어 있습니다. 쉽게 보면 ALU라는 논리와 연산을 담당하는게 있고 그 안은 여러가지 구성요소로 이루어져 있구나 하시면 됩니다.
다음으로는 CPU 내부의 메모리인 레지스터(register)가 있습니다. 말이 조금 어려워지는데요, CPU 내부의 메모리입니다. 캐시 혹은 저장장치에서 읽어오는 데이터를 CPU가 처리하기 위해 저장해 놓는 CPU 전용 저장소인거죠.
마지막 제어장치가 있는데요, 제어장치는 말 그대로 시그널을 발생시켜서 통제를 하는 겁니다. 마찬가지로 제어장치는 다시 여러 구성요소를 지닙니다. program counter, instruction register, instruction decoder 등으로 명령어를 해독, 명령어를 임시 저장, 명령어의 순서를 제어하는 역할들을 수행하죠.
'Programming' 카테고리의 다른 글
초보도 이해하기 쉬운 REST API란, RESTful이란, API란 (0) | 2023.02.25 |
---|---|
객체지향 언어의 특징 4가지 (0) | 2021.03.22 |
병렬과 분산컴퓨팅 소개(1) (0) | 2021.03.01 |
댓글