⚠️ 공부한 내용을 정리하는 공간입니다. 설명이 부족하거나 옳바르지 못한 부분이 있을 수 있습니다. 옳바르지 못한 내용을 발견하셨다면 댓글로 알려주시길 부탁드립니다. 수정하도록 하겠습니다.
오늘의 사족
길가에 눈이 쌓였습니다. 실내에서 바라보는 눈은 참 낭만적인데 야외에서 눈은 참 한숨나오게 만듭니다.
일단 눈이 녹으면 길이 얼고 길이 얼면 조심조심 걷게되는데 그렇게 걸으면 무릎과 발목에 안 좋다는 글을 어디서 본 기억이 있습니다. 특히 눈이 오고 난 후에는 길이 미끄럽기 때문에 주머니에 손 넣고 걷다가 넘어지면 크게 다칩니다.
아무리 주머니가 포근하고 따뜻하더라도 잘못 넘어져 머리를 다쳐 붕대를 감아 머리를 포근하고 따뜻하게 만들 수는 없습니다.
우리 모두 겨울에 장갑을 하나 장만하여 길에서 걸을 때엔 장갑을 끼고 힘차게 걸읍시다.
우리가 컴퓨터를 살 때 가장 먼저 고려해야 할 것은 내가 컴퓨터를 사용할 용도에 따른 사양을 결정하는 것이다. 새학기가 되면 대학교 커뮤니티 게시판에는 어떤 컴퓨터를 사야하는지에 대한 질문글이 많이 올라온다. 위 사진은 컴퓨터의 성능과 관련하여 컴퓨터의 부품과 CPU의 성능을 아주 쉽게 비유한 것으로 유명하다. 필자는 위 사진에 나오는 내용을 일부를 인용하여 글을 작성하고자 한다.
< 목차 >
1. CPU 성능을 향상시키는 설계 기법
1-1. Clock Speed (Hz;헤르츠)
1-2. Multi-Core
1-3. Multi-Thread
1. CPU 성능을 향상시키는 설계 기법
기술이 발전함에 따라 컴퓨터는 하나의 명령을 수행하는 것을 넘어 더 빠르고 더 많은 명령을 수행할 수 있게 되었다. 이번 글에서는 어떻게 CPU의 성능이 향상될 수 있었는지에 대한 설계 단계에서의 기법을 알아보고자 한다.
1-1. Clock Speed (Hz;헤르츠)
CPU는 Clock(클럭)이라는 시간단위에 맞춰서 명령을 수행한다. 1초동안 클럭이 반복되는 수가 크면 클 수록 CPU가 명령을 수행하는 속도가 빨라진다. 이때 1초동안 클럭이 몇 번 반복되는지에 대한 주기를 Hz(헤르츠)라고 한다.
CPU 성능 관련하여 예시로 쓸 Intel CPU 사양이다. 위 사진에서 CPU의 최대 터보 주파수는 프로세서가 인텔® 터보 부스트 기술과 Intel® Thermal Velocity Boost(존재하는 경우)을 사용하여 작동할 수 있는 최대 단일 코어 주파수로 6GHz라는 건 순간적으로 1초에 클럭이 60억 반복됨을 나타낸다. 즉, 클럭 속도가 빠를 수록 CPU의 성능은 향상된다.
위 사진에서 오버클럭에 대해 '노예가 발까지 써서 옥수수 수확' 이라고 비유하였다. 노예가 평소에는 손을 쓰면서 옥수수를 수확했었는데 주인이 급하게 돈을 충단할 일이 생겨 옥수수 생산량을 늘릴 필요가 생겨버린 것이다. 이때 노예가 어떻게든 명령받은 옥수수 생산량을 충단하기 위해 발까지 써서 옥수수를 수행하는 경우가 오버클럭이다.
CPU는 계속 일정한 속도로 클럭을 유지하기 보다는 고성능이 필요한 순간에는 순간적으로 클럭 속도를 높이고 그렇지 않은 경우에는 클럭속도를 낮추는 등의 유연한 속도 전환이 이루어진다. 이때 최대 클럭 속도를 강제로 더 끌어올리는 기법을 오버클럭이라고 한다.
클럭의 속도가 빠를 수록 CPU의 성능은 향상된다고 했다. 그렇다고 해서 CPU의 성능을 더욱 향상 시키기 위해서 클럭의 속도를 미친듯이 향상시키면 되는 걸까?
그건 아니다.
클럭 속도를 적정 수준을 넘을 정도로 높여버리게 되면 발열 문제가 생긴다. 그렇기 때문에 클럭 속도만으로 CPU의 성능을 향상시키는 것에는 한계가 있다.
1-2. Multi-Core
CPU는 한 번의 하나의 명령을 실행한다. 그런데 현대에 와서 core라는 개념이 새로 생겨나면서 CPU는 더이상 반드시 한 번의 하나의 명령을 실행하는 부품이 아니게 되었다. CPU는 명령을 수행하는 부품(core)을 여러 개 포함하는 부품으로 CPU가 여러 개의 코어를 포함하고 있다면 Multi-core Processor(or CPU)라고 부른다.
코어의 수가 노예의 수라는 건 코어가 명령을 실행하는 부품이기 때문이다. 명령을 수행하는 부품이 여러 개라면 당연히 더 많은 명령을 더 빠르게 수행할 수 있다.
CPU 안에 포함된 코어의 수에 따라 CPU의 종류(single-core, dual-core, triple-core, quad-core, hexa-core, octa-core...)가 달라지는데 코어의 수가 2개 이상인 CPU는 모두 multi-core라 칭한다.
그렇다면 CPU의 성능을 향상시키기 위해서는 무작정 코어의 수를 늘리면 되는 걸까?
그건 아니다.
CPU의 연산 속도는 코어의 수에 비례하여 증가하진 않는다. 그렇기 때문에 CPU의 성능을 더 높이기 위해서는 명령을 코어마다 적절히 분배하는 것이 중요하다.
1-3. Multi-Thread
CPU 성능 향상을 위한 기법인 Multi-Thread(스레드)는 하나의 코어가 동시에 처리할 수 있는 명령어의 단위가 여러 개이다.
위 예시 사진에서 CPU는 24코어 32스레드로서 해당 CPU는 24개의 코어를 가지고 있고 한 번에 32개의 명령을 처리한다고 볼 수 있다.
여기서 헷갈리는 부분이 있다. core도 명령을 처리하는 부품으로 많을 수록 한 번에 명령을 처리할 수 있는 수가 늘어나고 thread도 많을 수록 한 번에 명령을 처리할 수 있는 수가 늘어나는데 '둘이 같은 게 아닌가?' 라는 의문이 든다.
core는 CPU 내부에 있는 명령을 처리하는 부품으로서 제어장치와 연산장치, 레지스터, CPU 내부 버스로 구성된다.
thread는 core 혹은 CPU가 명령을 수행하는 데 있어서 핵심적인 레지스터들로 구성된다.
즉 멀티 스레드는 코어나 CPU가 명령을 수행하는 데 있어서 필요한 레지스터 세트가 여러 개이기 때문에 한 번에 처리할 수 있는 명령어의 수가 늘어난 스레드의 수만큼 늘어난다.
2코어 4스레드 CPU가 프로그램을 실행할 때 프로그램 입장에서 한 번에 4개의 명령을 처리하므로 4개의 CPU가 명령을 수행하는 것처럼 보인다. 그래서 스레드를 논리 프로세서라고 부르기도 한다.