Embedded Basic

[테크월드=정환용 기자] 데스크톱 컴퓨터의 전원을 켠다. 모니터에 5개의 점이 서너 바퀴 돌다가 곧 로그인 화면이 나타난다. 키보드로 4자리의 핀번호를 입력하고 엔터키를 누르면 익숙한 배경화면과 아이콘들이 자리를 잡고, 작업표시줄의 계산기를 실행시킨다. 1, +, 1, = 키를 연달아 누르면, 계산기는 지체 없이 2라는 답을 보여준다. 역시 컴퓨터는 감성은 부족하지만 산술적인 연산은 절대 틀리지 않는다.

숫자에 약해서가 아니라 평소 사용하는 컴퓨터가 ‘연산’(Processing)하는 과정을 예시로 들었다. 우리는 별 생각 없이 자연스레 컴퓨터를 이용해 일도 하고 게임도 하지만, 중앙처리장치(Central Processing Unit, CPU)가 사용자의 명령을 어떻게 처리하는지 그 과정에 대해선 큰 관심이 없다. 물론 결과적으로 CPU가 어느 정도의 성능을 내는지가 가장 중요하지만, 마우스를 클릭하고 alt+tab 키로 화면을 전환하는 등 끊임없이 명령어를 수행하는 CPU가 어떻게 일하는지 아는 것도 컴퓨터의 동작을 이해할 수 있는 과정 중 하나다.

 

데스크톱 양대 산맥 격돌

지난 10월 17일 인텔코리아는 새로운 데스크톱 프로세서 ‘인텔 코어 i7-9900K 프로세서’를 공개했다. 코드명은 커피레이크 리프레시로, 14nm++ 제조공정을 적용했고, 8코어 16스레드 구성으로 속도는 기본 4.0GHz, 터보부스트 최대 5.0GHz까지 낼 수 있다. ‘라이젠’ 시리즈로 추격을 시작한 AMD는 지난 4월 일반 사용자용과 고성능 전문가용 라이젠 2 시리즈를 내놓으며 부동의 1위인 인텔의 CPU 점유율을 뒤쫓고 있다.

CPU의 성능 척도는 역시 속도다. 가장 최근에 공개된 인텔 i7-9900K는 8코어 16스레드 구성으로, 기본 속도 3.6GHz, 터보부스트 5.0GHz다. 동작 속도를 나타내는 Hz(헤르츠)는 컴퓨터 언어인 0(Off)과 1(On)로 작동하는데, 이 전기 신호 한 번을 1Hz로 표기한다. 계산해 보면 5기가헤르츠로 구동하는 i7-9900K는 1초에 50억 번의 작업을 처리할 수 있다는 뜻이다.

진공관을 사용한 최초의 컴퓨터는 에니악(ENIAC)이지만, 2진법을 사용한 최초의 컴퓨터는 독일의 전자공학자 콘라트 추제(Konrad Zuse)가 1941년 개발한 튜링 계산기 ‘Z3’다. Z3는 5~10Hz의 동작 속도를 낼 수 있고, 코드와 데이터는 천공 필름에 저장했다. 이후 1976년 스티브 워즈니악과 스티브 잡스가 설립한 애플 컴퓨터에서 1976년 출시된 ‘애플 I’(Apple I)은 처음으로 동작 속도 1MHz를 돌파한 MOS 6502 프로세서를 탑재했다. 이후 2000년 AMD가 공개한 ‘애슬론 1GHz’가 최초로 1GHz를 돌파한 CPU다.

▲최초의 1MHz 프로세서 ‘MOS 6502’.
▲최초의 1GHz 프로세서 ‘Athlon A1000AMT3B’.

 

마이크로아키텍처의 구조
더욱 쾌적한 게임 환경을 만들어 주는 중요 요소 중 하나인 CPU는 1초에 몇 번이나 연산할 수 있는지에 따라 직관적인 성능이 결정된다. 프로세서를 구성하는 트랜지스터의 크기에 따른 집적도가 한계에 다다랐을 때, 같은 성능을 내는 코어를 2개 배치하는 2(듀얼)코어 방식으로 한계를 이겨냈고, 현재는 8(옥타)코어와 16(헥사데카)코어는 물론 32(도트리아콘타)코어 구성까지 지원하고 있다.

CPU는 프로세서를 포함한 완성형 유닛을 지칭한다. ‘컴퓨터’라 부르는 모든 전자장비에 탑재되는 CPU는 컴퓨터의 전체 성능의 수준을 결정한다. 일반 컴퓨터용, 서버나 워크스테이션 등 전문가용, 모바일 기기용 등 사용 용도와 목적에 따라 다양한 크기와 성능으로 제품군이 구분된다. 여기 소개하는 데스크톱 프로세서는 인텔과 AMD 두 기업이 대표적이다.

‘De-lidding’, 뚜껑을 딴다고 해서 소위 ‘뚜따’로 불리는 이 과정은, 프로세서 다이(Die)를 덮고 있는 히트 스프레더를 프로세서로부터 분리시키는 작업이다. 이는 다이와 히트 스프레더 사이에 열전도를 위한 서멀 컴파운드가 도포되는데, 이 컴파운드를 더 좋은 제품으로 교체해 프로세서의 발열을 더 효과적으로 관리하기 위함이다.

다이와 히트 스프레더 사이의 물질은 열전도율이 높아 프로세서에서 발생하는 열을 바깥으로 빠르게 배출해야 한다. 보통은 유체 물질인 서멀 컴파운드를 사용하지만, 더 효과적인 열전달을 위해 납땜(Soldering, 솔더링)을 하는 경우도 있다. 솔더링에 사용하는 인듐(Indium)은 현재까지 니켈 도금된 실리콘 칩과 구리 재질의 히트 스프레더 사이에 접합할 수 있는 유일한 물질로 알려져 있다. 하지만 비용과 별개로 솔더링 자체의 내구성이 떨어지는 단점과 희귀광물인 인듐을 사용했을 때의 제조원가 상승 등 여러 요인으로, 어느 방식이 좋은지에 대해 제조사와 사용자, 전문가들 사이에서도 의견이 분분하다.

손톱 크기의 다이를 확대한 다이 맵(Die Map)이다. 프로세서의 구성에 따라 다이 구성이 제각각인데, 최근에 출시되는 데스크톱 프로세서는 대부분 그래픽 유닛(Graphic Processing Unit)을 포함하고 있다. 위 사진의 경우 중앙과 오른쪽의 황색 부분이 CPU 코어, 왼쪽의 청색 부분이 GPU 코어다. 원래의 칩은 정사각형에 가까운 구조였지만, GPU를 함께 탑재하면서 옆에 자리를 내주고 직사각형 구조가 됐고, 지금은 제품군마다 그 형태가 조금씩 다르다. 인텔의 코어X 시리즈, AMD의 스레드리퍼 등 고성능 라인업 제품은 일반 소비자용 제품보다 2배 이상의 크기와 트랜지스터 집적도를 가지고 있다.

14nm 제조공정으로 만들어진 인텔의 데스크톱 CPU에는 약 17억 개 이상의 트랜지스터가 집적돼 있다. 아래 사진의 왼쪽이 이전 공정인 22nm, 오른쪽이 14nm 공정으로 제작된 트랜지스터다. 이런 트랜지스터가 수억 개 집적돼 프로세서가 되는 것이다. 10(데카)코어 구성의 고성능 i7-6950X 프로세서에는 일반 데스크톱 프로세서보다 2배가량 크고, 트랜지스터도 30억 개 이상이 집적돼 있다. 트랜지스터 안의 전자 이동에 따라 CPU의 속도가 정해지는 특성상, 더 작고 더 많이 집적될수록 성능이 향상되는 단순한 논리다. 프로세서 제조사들이 10nm 이하의 공정을 양산하기 위해 천문학적인 시간과 돈을 투자하는 이유다.

▲프로세서의 다이 맵.

사용자의 명령과 프로세서의 동작
컴퓨터의 전원을 켜고 운영체제 구동이 완료된 시점부터 프로세서의 동작 순서에 대해 알아보자. 기본적인 순서는 명령어 인출(Fetch), 해석(Decode), 실행(Execute), 쓰기(Writeback)의 4단계로 구분할 수 있다. 현재의 CPU는 이보다 훨씬 복잡한 연산 구조를 가지고 있지만, 가장 기본적인 연산을 명령했을 때 프로세서가 어떻게 문제에서 정답까지 도달하는지를 나타내는 가장 기본적인 동작 순서로 보면 된다.

프로세서의 각 트랜지스터는 0과 1로 구분하는 논리회로(Gate)를 구현하고, 이를 조합해 4자리의 2진법의 4자리 숫자를 구현한다. 한 자리 숫자는 4비트(bit)로 표현할 수 있는데, 10진법의 숫자 1은 0001, 숫자 2는 0010 등으로 치환한다. 첫 번째 인출 단계에서 ‘1+1’이란 명령어를 가져온 프로세서는, 두 번째 해석 단계에서 숫자 1과 기호 +, = 이 어떻게 조합돼 있는지 분석해 프로세서 내에 배치된 장치에 명령 실행을 위한 연산을 수행한다. 그렇게 실행된 연산으로 2란 답을 도출하면, 이를 메모리에 기록하고 정답을 출력장치에 표시한다.

▲제조공정에 따른 트랜지스터 구조 차이.

사칙연산을 포함한 산술적 계산은 숫자가 아무리 많아도 여기에 필요한 트랜지스터 숫자가 충분하기 때문에 시간이 오래 걸리지 않는다. 컴퓨터의 연산 성능을 테스트하는 벤치마크 프로그램 ‘슈퍼파이’(Super Pi)는 원주율을 계산하는 속도를 측정하는 프로그램이다. 컴퓨터가 등장한 1940년대에는 소수점 아래 2037자리까지 계산하는 데 70시간이 소요됐지만, 현재의 고성능 컴퓨터 프로세서는 1백만 자리를 계산하는 데 0.4초 정도밖에 걸리지 않는다(슈퍼파이는 1990년대에 작성된 프로그램으로, 코어를 하나만 사용할 수 있고 부동소수점 연산은 지원하지 않는 등의 단점으로 최근에는 잘 사용되지 않는다).

사칙연산처럼 단순한 계산을 보면, 프로세서에 머리카락의 10만 분의 1 굵기밖에 안 되는 공정으로 트랜지스터를 수억 개 배치해야 하는 것을 납득하기 어려울 수 있다. 하지만 우리가 컴퓨터의 전원 버튼을 켜고 손쉽게 여러 프로그램을 이용할 때, 프로세서는 컴퓨터 소프트웨어의 대전제인 운영체제부터 많게는 수십 가지의 프로그램을 동시에 구동하고 있다. 당장 ctrl+alt+del 키를 눌러 작업관리자→프로세스 창을 보면, 화면에 직접 보이지 않는 프로세스가 수십 가지 구동되는 것을 볼 수 있다. 여기에 사진 편집 프로그램을 구동해 FHD 해상도의 200만 픽셀 컬러를 조정하면, 한 번의 클릭으로 프로세서는 수천만 회의 0/1 변환 명령을 처리해야 한다. 이런 작업을 CPU가 제대로 처리하기 위해서는, 단독 활약보다는 동료와의 협업이 더 중요하다.

더 나은 조합, 100%로 가는 길
컴퓨터의 연산 속도에 있어 가장 중요한 동료 하드웨어는 캐시(Cache)와 RAM(Random Access Memory)이다. 프로세서가 명령어를 처리하는 속도는 무척 빠르지만, 메모리에서 값을 읽는 속도는 이에 미치지 못한다. 실제 연산 속도와 이를 읽어내는 속도의 차이를 줄이기 위해 CPU에 캐시 메모리를 배치한다. 캐시 메모리는 CPU 연산 속도에 맞출 수 있지만, 용량은 매우 작아 최신 프로세서에 약 10~20MB 정도 배치된다.

RAM은 프로세서가 처리하는 명령어와 데이터를 보관하는 역할을 한다. 사칙연산처럼 간단한 명령은 큰 공간이 필요치 않지만, 대용량의 작업을 처리할 때면 메모리를 통해 프로세서에 순차적으로 데이터를 전달한다. 10만큼의 일을 맡겼는데 메모리 용량이 5라면, 나머지 5는 앞서간 일이 처리될 때까지 순서를 기다려야 한다. 그러면 명령의 처리 속도가 늦어지며 병목 현상이 발생한다. 웹브라우저와 사진 편집 프로그램, 워드프로세서 등 여러 가지 프로그램을 동시에 실행할 때 PC 운영속도가 느려진다면, RAM 용량 부족인 경우가 대부분이다.

그래픽 작업에 고사양의 하드웨어가 요구되는 것도 같은 이유다. 건축용 2D, 3D 도면을 그리는 CAD나 사진을 편집하는 포토샵, 3D 그래픽을 실시간 처리하는 게임 등을 FHD 모니터로 실행하면, 프로세서는 60FPS를 기준으로 많게는 1초에 1억 회가 넘는 연산을 처리해야 한다. 이런 작업에는 CPU보다 그래픽과 영상 데이터를 효과적으로 처리할 수 있는 그래픽 처리장치(Graphic Processing Unit, GPU)에 작업을 맡겨 효율을 높인다. 고사양 게임을 즐길 때 고성능의 그래픽카드(Video Graphics Array, VGA)가 필요한 이유다.

회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지