CPU

최근 편집: 2022년 12월 29일 (목) 20:23
인쇄용 판은 더 이상 지원되지 않으며 렌더링 오류가 있을 수 있습니다. 브라우저 북마크를 업데이트해 주시고 기본 브라우저 인쇄 기능을 대신 사용해 주십시오.

CPU는 중앙처리장치를 의미하며 (영어) Central Processing Unit의 줄임말이다. 컴퓨터 내에서 입력장치로부터 받은 자료나 명령어를 해석하거나 처리하고 비교하여, 그 결과를 출력장치로 보내는 과정을 제어하고 저장하는 역할을 한다.

구성요소

성능 평가 단위

  • Clock : 1초동안 발생하는 클럭펄스 주파수로, 1초동안 얼마나 데이터를 처리할 수 있는가를 나타낸다. 명령어수가 많을 수록, 그리고 주파수가 높을 수록 CPU의 성능이 좋은 것이다. 단위는 헤르츠(Hz).
  • MIPS : 1초동안 처리 가능한 명령 갯수를 100만 단위로 나눈 것이다.
  • FLOPS : 1초동안 처리 가능한 부동소수점 연산 갯수이다.
  • MHz : CPU가 동작하는 클럭 속도 단위이다.

대표적인 제조회사는 인텔, AMD, 엔비디아, 삼성전자, 퀄컴이다.

1. 개요

CPU(Central Processing Unit)는 중앙 처리 장치라고도 하며, 컴퓨터의 주요 구성요소이고, 일반적으로 사람의 뇌에 비유된다. 전체적인 연산을 담당하며 컴퓨터 구성요소들의 제어 또한 담당한다.

2. CPU의 구성

CPU는 연산을 담당하는 ALU(Arithmetic Logic Unit), 연산할 데이터 또는 연산 결과 데이터를 저장하는 레지스터(Register), CPU를 제어하는 CU(Control Unit), 버스(Bus), 캐시 메모리(Cache Memory) 등으로 구성된다. 기본 구성 외에도 SoC 프로세서의 경우에는 무선 통신 칩, 입출력 칩, 그래픽 연산 유닛 등 다양한 칩셋이 들어가는 경우도 있다.

2.1. ALU

ALU는 CPU 성능의 핵심으로, 각종 연산 명령어를 수행하는 유닛이다. CPU는 하나 이상의 ALU를 가지고 있으며 매우 복잡한 구조를 가진다.

2.2. 레지스터

레지스터는 컴퓨터에서 가장 빠른 메모리로, ALU는 연산할 데이터 및 연산 결과를 레지스터로부터 가져오거나 저장한다. 컴퓨터 구성 메모리 중 가장 비싸기 때문에 매우 적은 크기를 가지고 있으며, 다양한 종류로 분류하여 사용한다.

2.3. CU

CU는 CPU를 제어하기 위한 제어 장치로, CPU의 조작을 제어하여 전체적인 명령이 이뤄지도록 수행한다.

2.4. 버스

버스는 데이터가 지나다니는 통로이다. CPU 말고도 다양한 전자 기기 부품들에 들어가있으며, 버스의 크기를 대역폭(Band-width)이라고 부른다.

2.5. 캐시 메모리

레지스터와 RAM 간의 속도 차이를 줄이기 위해서 두는 임시 공간이다. 속도에 따라 다시 캐시 메모리 종류가 나뉘며, L1 캐시 메모리, L2 캐시 메모리 등의 이름을 가진다. 최신 CPU에서는 보통 L3 캐시 메모리까지 두는 편이며, L4 캐시 메모리를 가지는 CPU도 존재한다.

3. 클럭 수

CPU의 연산을 더 빠르게 하기 위해서 파이프라인을 도입하고, 그 과정에서 파이프라인을 얼마나 빠르게 많이 실행하느냐를 클럭으로 나타내어 예전에는 클럭 수를 성능의 기본 단위로 재는 경우가 많았다. 그러나 같은 명령어를 지원하는 CPU라고 하더라도 파이프라인의 길이가 제품마다 달라지고, 또한 파이프라인 예측 실패 시 실패한 명령어부터 파이프라이닝을 처음부터 다시 해야 하는 등 클럭 수만 가지고 성능을 측정하기 어려워지면서 클럭 수를 성능 척도로 삼는 경우는 많이 줄어들었다.


CPU의 명령어는 클럭 수에 맞춰서 실행되며, 예를 들어 1.2GHz 클럭으로 동작하는 CPU는 가장 운이 좋았을 때 초당 12억 개의 명령어를 처리할 수 있다. 가장 운이 좋았을 때라는 이야기는 파이프라인에서 다음 명령어의 실행 예측이 틀렸을 경우 다시 실행하는 경우 등이 전혀 없다는 가정 하에서의 이야기이며, 예측이 틀렸거나 좀 더 오래 걸리는 명령어를 실행했을 때는 덜 실행될 수 있다.

클럭 수의 표현은 Hz를 단위로 하며, 보통 저전력 CPU의 경우 2.0GHz를 넘지 않도록 하고 있고, 일반적인 CPU는 3.2GHz 이상을 내도록 하고 있는 편이다. 4.0GHz의 벽이라고 하여 4.0GHz 이상의 성능의 CPU를 출시하는 일보다는 전력소모 최적화 또는 회로 최적화를 통해 성능을 끌어올리려는 노력을 많이 해왔으나 현재는 일반 소비자용 CPU에서도 4.0GHz 이상의 제품을 볼 수 있게 되었다.

4. 멀티 코어

2005년, CPU 성능을 올리는 데 한계에 도달했을 때 AMD에서 최초의 듀얼 코어 CPU를 출시하면서 멀티 코어 CPU의 시대가 도래했다. 이전까지는 여러 개의 CPU를 사용하고 싶을 때는 멀티 프로세서 지원 메인보드를 구입하여 여러 개의 CPU를 장착하여 사용해야 했으나 멀티 코어 CPU를 통해 여러 개의 프로세서를 하나의 프로세서로 통합하여 사용할 수 있게 되었다.


여러 데이터를 한꺼번에 연산하는 SIMD 연산 명령어는 이전부터 존재해왔으며, 이를 병렬 프로그래밍이라고 했으나 현재 병렬 프로그래밍이라는 말은 SIMD 연산 명령어보다는 멀티스레드 연산을 가리키고 있다. 실제로 멀티 코어 프로세서에서 멀티스레드 연산을 구동하면 각 코어에서 연산을 병렬적으로 수행한다.


멀티 코어를 적극적으로 활용하기 위해서는 Windows XP와 같은 구식 운영체제 대신 Windows 8.x, Windows 10 등 멀티 코어를 활용하여 스레드 스케쥴링을 더 잘 수행하는 최신 운영체제를 도입하여 사용하는 것이 좋으며, 멀티 코어를 잘 지원하는 소프트웨어를 새로 구입하여 사용하는 것이 좋다. 게임의 경우 DirectX 11부터 멀티 스레드 렌더링을 지원하여 멀티 코어를 잘 지원하게 되었으므로 DirectX 11 또는 DirectX 12로 구현된 버전이 존재하는 게임은 이 버전을 이용하는 것이 좋다.


진짜로 코어를 여러 개 두어 멀티 코어로 구현한 CPU가 있는 반면 하나의 코어를 여러 개의 코어 처럼 사용하는 논리 코어 프로세서도 존재하는데, 이 방식을 Intel에서는 하이퍼스레딩이라고 표현하고 있다. 데스크톱 프로세서의 i7 이상의 성능을 가지는 제품군 및 모바일용 프로세서 i5 이상의 경우 하이퍼스레딩을 지원하여 듀얼 코어(2코어)는 쿼드 코어(4코어)처럼, 쿼드 코어는 옥타 코어(8코어)처럼 사용할 수 있게 된다. 다만 CPU가 놀지 못하게 더 빡빡하게 일을 시키는 구조이기 때문에 CPU가 너무 많이 일하고 있으면 모든 코어를 100% 사용하지 못하는 경우도 존재한다. AMD의 출시 예정 CPU인 Zen도 이 방식을 지원할 예정이다.

5. 잘 알려진 CPU 명령어 종류

5.1. Intel x86 또는 IA32

Intel의 16비트 및 32비트 명령어 세트이다. 현재도 많이 사용되고 있다. 내부적으로 다시 SSE, SSE2, SSE3 등 SIMD 명령어 세트들이 있다.

5.2. AMD64 또는 x64 또는 x86_64

AMD에서 Intel x86을 확장하여 호환성을 갖도록 하는 64비트 명령어 세트이다. IA64와 경쟁하다가 승리하여 현재 대부분의 PC에서 사용하고 있다. 내부적으로 다시 AVX, AVX2, FMA3, FMA4 등 SIMD 명령어 세트와 TSX 등 메모리 트랜잭션 명령어 세트 등 다양한 명령어 세트들이 있다.

5.3. ARMv7 및 ARMv8

임베디드 기기 등에 들어가는 저전력 CPU인 ARM CPU에서 사용하는 명령어 세트이며, 스마트폰 등에도 많이 들어가 있다. 내부적으로 다시 NEON SIMD 명령어 세트 등이 있다.

5.4. POWER 및 POWERPC

POWER는 IBM의, PowerPC는 Apple, IBM, Motorolla의 명령어 세트이며, 구형 Mac 기기, Xbox 360, PS 3, Wii 등에 들어갔던 CPU 명령어 세트로 현재는 산업용 및 서버 등이 아니면 사용되지 않고 있다.

5.5. IA64

Intel의 64비트 명령어 세트로, 아이태니엄이라고도 부른다. AMD64에 밀려 서버 등에서만 일부 사용되어 오다가 현재는 사용되지 않고 있다. Windows 운영체제도 IA64를 지원하는 버전이 있었으나 지원을 중단했다.