CPU

(중앙처리장치에서 넘어옴)

Intel-s-HEDT-CPU-Roadmap-Exposed-Broadwell-E-in-2015-and-Skylake-E-in-2016-446242-2.jpg
인텔Core i7.

1 개요

중앙정보처리장치. 컴퓨터에서 구성 단위 중 기억, 연산, 제어의 3대 기능을 종합하는 장치인 Central Processing Unit(중앙 처리 장치)의 줄임말. 컴퓨터의 대라고 할 정도로 가장 중요한 부분으로, 프로그램의 명령어를 해석하여 데이터를 연산/처리를 하는 부분, 혹은 그 기능을 내장한 칩을 말한다. 컴퓨터가 동작하는데 필요한 모든 계산을 처리한다. 컴퓨터를 뇌에 비유하자면 단기기억 담당은 RAM, 장기기억은 하드디스크, CPU는 사고를 담당하는 대뇌피질 정도로 볼 수 있겠다. 대뇌피질 없이 인간의 사고가 성립하지 않듯이 컴퓨터도 CPU 없이는 그냥 먹는 하마일 뿐이다. 쉽게 말해서 컴퓨터의 뇌와 같다. GPU는 단순한 일을 경이로운 속도로 처리하는 뉴런 집합 근데 뇌는 FPGA아닌가?

CPU 중에서도 각종 전자 부품과 반도체 칩을 하나의 작은 칩에 내장한 형태를 마이크로프로세서라고 한다. 마이크로프로세서는 '전기 밥통'이나 '냉장고'에 쓰이는 낮은 성능의 제품부터 슈퍼컴퓨터에 쓰이는 높은 성능의 제품까지 매우 다양하다. 마이크로프로세서들 가운데 가장 복잡하고 성능이 높은 제품은 컴퓨터의 연산 장치로 쓰인다.

조립컴퓨터 견적에서 돈을 많이 먹는 부품 중 하나. 게임할때는 이게 구려도 그래픽카드가 좋으면 CPU가 좋고 그래픽카드가 구린 것 보다는 좋은 퍼포먼스를 낸다고 알려져 있지만, CPU가 연산을 지시하기 때문에 그래픽 카드가 아무리 좋더라도 CPU가 좋지 않다면 CPU속도에 맞춰지기 때문에 제 성능을 발휘하지 못한다.[1] 즉 못해도 둘 다 동급으로 맞춰 줘야 한다는 이야기.[2] 다만 요즘 CPU는 좋기 때문에 이게 통하는 게 어쩌면 당연할 수밖에 없다. 그러므로 괜히 CPU 비싼거 끌려서 사지 말고 자신의 용도에 맞게 적당한 제품을 구매하도록 하자. 단, 장기적으로 사용할경우 조금 오버해서라도 상위제품을 구매하는게 좋을 수 있다.

2 구조와 원리

CPU/구조와 원리 문서 참조. CPU의 아키텍쳐를 서술한다.

3 종류

1970년대 초 단일 칩이라는 형태로 CPU가 발명된 이후 CPU의 기술은 아래와 같은 궤적을 따라 여러 방면으로 방산-발전하여 오늘날 다종다양한 산업 생태계를 구성하게 되었으며 PC용 프로세서의 경우 2012년 기준 한해 2억unit, MCU(Micro Controller Unit)의 경우 190억unit을 생산하는 규모까지 성장하였다.

  • 연산 능력의 향상:PC/워크스테이션/서버용 프로세서의 발전 방향
    • 향상된 클럭.
    • 향상된 클럭당 명령어 실행 숫자(IPC - Instructions Per Clock).
    • 병렬실행(멀티코어, SIMD - Single Instruction, Multiple Data)
  • 연산 기능의 특화:GPU(Graphics Processing Unit)및 DSP(Digital Signal Processor)의 발전 방향.
    • 고도의 병렬화(GPU)
    • 특화된 연산기능(DSP)
  • 입출력 기능의 다양화와 원가절감:MCU의 발전 방향.
    • 다종다양한 I/O (Input/Output) 기능의 통합.
    • SoC (System on Chip).

다음은 각 분류 방식에 따른 CPU의 종류이다.

3.1 데이터 크기에 따른 분류

여기서 말하는 비트 크기는 해당 아키텍처를 사용하는 컴퓨터에서의 워드 크기를 의미한다. 워드 크기란 CPU에서 1사이클에 처리할 수 있는, 다시 말해 한 번에 처리할 수 있는 비트의 수를 말한다. 또는 접근할 수 있는 메모리의 범위를 의미하기도 했으나 32비트 아키텍처에 들어오면서 메모리 범위가 워드폭과 다르게 되면서 폐기되었다.

32비트 초반까지는 해당 비트수가 워드 폭(보통 C언어의 int)과 메모리 어드레스 범위(C언어의 포인터변수), 그리고 명령어의 길이(어셈블리언어에서 명령 한 줄)를 모두 지칭하였다. 32비트 아키텍처 후반부로 가면서 워드 폭만을 의미하는 것으로 축소되었으나 32비트 메모리 주소 범위가 고갈되면서 메모리 관련 의미가 다시 수면 위로 떠올랐다.

명령어의 길이가 아키텍처가 올라가면서 두 배씩 늘어나기 때문에 실행 바이너리의 크기가 세대가 올라갈수록 점점 커지며 CPU가 소비하는 전력 사용량도 덩달아 올라간다. 다만 전력 사용량은 이외에도 변수가 많아서 절대적인 기준은 될 수 없다. 실행 바이너리 크기와 전력 사용량에 민감한 모바일 업계에서 16비트 Thumb명령셋을 지원하는 ARM계열 CPU를 선호하는 이유.

  • 4비트
최초의 상용 단일칩 CPU, 즉 '마이크로프로세서'로 인정받는 인텔의 4004와 그 후속작 4040이 4비트 CPU이다.[3] 현재도 아주 적은 양의 연산만을 필요로 하는 곳에 가끔 4비트 CPU가 들어가는 경우가 있다. 4004 이전에도 물론 '컴퓨터'는 존재했으니만큼 개념적인 의미에서의 '중앙처리장치'는 있어왔지만 연산, 제어, 기억 등의 주요 기능을 담당하는 회로가 단일칩에 들어가지 않고 별개로 나뉘어 있었다.
  • 8비트
PC시대의 서막을 연 세대. 최초의 개인용 컴퓨터인 MITS 알테어 8800에 채용된 인텔 8080과 그 호환칩이자 8비트 시대를 주름잡은 자일로그 Z80[4] , 모토로라 6800[5], MOS 테크놀로지 6502[6] 등이 유명하며, 마이크로컨트롤러용으로 많이 사용되는 8051, AVR, PIC등도 여기에 포함된다. 대단히 의외지만 아직도 CPU시장에서 숫적으로는 주력의 자리를 차지한다. 2012년 기준 출하량 60억 개로 PC용 프로세서의 예상출하량 2억 개의 30배에 달하는 수량이다. 장난감이나 가전제품(그것도 최하급), 시계 등에나 각종 센서장비의 보조 프로세서 등 컴퓨터라는 느낌이 전혀 들지 않는 제품에 주로 들어간다. 매우 저전력으로 동작해서 건전지 한 개 분량의 전력으로 몇 년을 구동도 가능하고 몇 백원 이하의 가격대도 있을 정도로 저렴한 게 장점. 프로세서의 속도도 작은 LED전광판 구동할 정도는 된다. 한때는 이걸로 게임도 하고 업무처리도 하고 할거 다했다! 심지어 나사가 우주인을 달에 보낼때 사용했던 슈퍼컴퓨터의 프로세서도 이것만도 못했다. 연산 성능이 별로 필요하지 않고 저가격/저전력(=적은 유지비)을 요구하는 분야에서는 여전히 현역.
  • 16비트
오늘날의 PC산업을 있게 한 IBM PC에 들어가는 인텔 8088매킨토시의 CPU이자 오락실 기판을 제패한 68000[7]이 대표적이다. 80286, 80196, C166 등이 있다. 현재는 32비트 아키텍처에 밀려 잘 쓰지 않는다. 32비트도 전력 소비량을 많이 개선했고 가격도 충분히 저렴해졌으며 무엇보다 프로그램 호환성 측면에서 16비트보다 압도적으로 편리하기 때문. 성능이 필요하면 32비트, 성능이 별로 필요없고 무조건 싸야되면 8비트를 사용하면 되기 때문에 입지가 좁다.
  • 32비트
속칭 386으로 불리우는 80386과 그 후속모델인 80486, 펜티엄...(이하 생략) 등이 대표적이다. 32비트 CPU가 시장을 지배한 시간은 상당히 길어서 인텔의 IA-32 아키텍처만 보아도 80386(1986년)부터 펜티엄 4 프레스캇(2004년)[8]까지 거의 20년 가까운 기간이며, 80386 이전에 등장한 타사의 32비트 아키텍쳐들과 그 이후에 나온 타사의 32비트 아키텍쳐들 까지 다 포함하면 30년을 훌쩍 넘긴다. 덕분에 PC시장 발전기의 레전드급 아키텍처의 이름들이 대거 포진한다. 모토로라 68020/68030, MIPS[9], ARM, PA-RISC, PowerPC 등등. 또한 마이크로컨트롤러로 8비트계에서 성공을 거둔 PIC이나 AVR등이 PIC32, AVR32등으로 확장된 경우도 있다. 좀 무리해서 갖다붙이자면 80386계열도 8051의 확장이라고도 볼 수 있는데 이는 8051이 8080의 분가에 해당하는 위치이기 때문. 하지만 8086이 8080하고 호환성이 없는 것이 함정 흔히 최초의 32비트 CPU 하면 80386을 떠올리지만 사실 최초의 32비트 CPU는 1979년에 나온 내셔널 세미컨덕터의 NS32016으로 외부 버스는 16비트 어드레스 버스는 24비트지만 CPU 내부적으로는 32비트를 도입하였으나 8086과 MC68000에 밀려서 그리 흥하지는 못했다. 흔히 16비트 CPU로 여겨지는 모토로라 MC68000도 실은 NS32016 처럼 내부적으로는 32비트 구조를 일부 갖추고 있었다. [10]
  • 64비트
아이태니엄(IA-64), x86-64, ppc64, Alpha, MIPS64, ARMv8, Power등이 대표적인 64비트 아키텍처. 인텔의 아이태니엄처럼 처음부터 64비트로 설계되는 경우도 있지만 보통은 x86-64ppc64처럼 32비트 아키텍처를 64비트로 확장한 설계로 만든 경우가 많다. 이런 경우 32비트 호환모드에서는 64비트임에도 워드 폭이 32비트이고 대신 1사이클에 2워드를 처리하는 등의 변칙적인 방법을 쓴다. 32비트 아키텍처에서 만들어진 프로그램들의 호환성을 유지하기 위해서 이렇게 결정된 것으로 64비트 아키텍처 전용명령을 사용하면 워드폭 64비트로 작동해서 64비트의 데이터를 직접 다룰 수 있게 된다.

3.2 용도에 따른 분류

  • MPU(Micro Processor Unit)
일반적인 PC/워크스테이션 등에 사용되는 일반적인 CPU를 MPU로 지칭한다. 다만 이러한 용어들은 그 개념이 명확하지 않은 때가 많은데 이는 대부분 업계에서 자사 제품을 지칭하는 용어가 관례적으로 굳어졌기 때문이다. 가령 예를 들어 CPU는 처음에는 인텔이 자사의 원칩 솔루션을 지칭하던 용어이고 MPU는 그에 대응하여 모토롤라가 쓰던 용어이다. 마이크로프로세서는 MPU를 한글로 풀어놓은 용어. 그리고 CPU가 원보드 솔루션에서 원칩솔루션으로 전환한 현재 시점에서는 CPU와 MPU, 마이크로프로세서라는 단어는 서로 혼용해도 별 문제가 없다. 다만 MPU는 MCU에 상대적인 느낌으로 인해 MCU가 아닌 마이크로프로세서도 포괄하는 의미로 MPU라는 단어를 사용하는 경우도 있다. 즉 그냥 MCU의 개념만 잘 구분할 수 있으면 문제되지 않는 부분.
  • MCU(Micro Controller Unit)
마이크로컨트롤러로도 불리우며 오늘날 지구상에 존재하는 CPU 숫자의 대다수를 차지한다. 2013년 한 해 동안 추정되는 생산량은 190억 개로 PC용 프로세서 2억개의 100배 규모. PC용 CPU가 사용자가 작성하거나 소유한 다종다양한 프로그램을 구동시키는데 비해 MCU는 주로 제조사에서 작성한 고정된 특정 프로그램을 미리 집어넣은 상태(펌웨어 Firmware)에서 완제품에 탑재하여 출시하는 경우가 대부분이다. 일반적으로 잘 알려진 아두이노에 탑재된 AVR ATmega칩이 바로 전형적인 MCU이다.
  • DSP(Digital Signal Processor)
특정 종류의 신호 데이터 형식을 고속연산, 특히 행렬연산을 하는데 최적화된 CPU. 때문에 보통 DSP를 부를 때에는 목표로 하는 데이터 종류에 따라 오디오DSP, 16비트 정수DSP, 32비트 실수DSP 등으로 타겟 데이터 형식을 명시하는 경우가 많다. TI의 TMS시리즈가 유명하다. 특정 데이터 포맷 처리에 특화되어서 그 외의 데이터 포맷이나 메모리핸들링, 프로그램 제어 기능은 부실할 때가 많다.
  • FPU(Floating-Point Unit)
실수 연산에 특화된 CPU로 인텔의 i80X87계열이 대표적이다. 프로그래밍에 필요한 제어 구조가 없어서 DSP와는 달리 단독으로 프로그램을 구동시키지는 못한다. 범용 CPU와 묶여 Co-Processor 형태로 사용되는 형태가 대부분이었으며 2000년대 이후로는 독립된 제품 보다는 주로 범용 CPU내의 연산유닛으로 포함되는 형태가 대세.
  • GPU(Graphics Processing Unit)
DSP 중에서도 비디오 출력 데이터 처리에만 극단적으로 특화된 제품. 초기 GPU는 그냥 상용 DSP를 활용하는 경우도 많았다. 제어구조가 없거나 매우 부실하지만 (연산해야 하는 데이터의 특성으로 인해)병렬성이 극히 높아서 연산 쓰루풋이 대단히 높은 특징을 가지고 있다. 다만 대부분 제어구조가 부실하므로 일반적인 프로그래밍을 GPU에서 돌리기는 무리. 물론 굳이 하려면 할 수는 있다. GPGPU 참조.

3.3 명령어 세트 방식에 따른 분류

CPU의 마이크로 아키텍처 명령어에 의한 분류는 다음 세 가지가 있다.

  • CISC(Complex Instruction Set Computing) 방식 CPU
초기에 CPU가 원칩 형태로 등장하기 이전부터 일단 만들기 시작해서 그냥 막 만들었던 발전해 왔던 명령어셋을 사용한 CPU. x86계열이나 M6800/M68k등이 대표적이다 최근에는 RISC가 대세가 됨에 따라 잘 만들어지지 않고 있다..
  • RISC(Reduced Instruction Set Computer) 방식 CPU
80년대부터 문제로 지적된 명령어셋의 복잡화와 그로 인한 CPU설계의 복잡화를 해결하기 위해 등장한, 간략화된 명령어셋을 도입한 CPU. x86[11]이나 8051 계열을 제외한 대부분의 현용 CPU 아키텍처가 RISC 방식 명령어를 채택하고 있다.
  • VLIW(Very Long Instruction Word) 방식 CPU
90년대부터 등장한 명령어 레벨의 병렬 실행이 가능한 명령어셋을 가지고 있는 CPU. 대표적으로 크루소TI의 TMS6400시리즈, 그리고 이타닉아이태니엄이 있다. CISC나 RISC를 대체할 새로운 구조로 등장했지만 컴파일러 설계가 난해한 점이나, 이론적으로는 빠른 구조지만 실제로는 기존 설계보다 그리 빠르지 않았다는 점 때문에 자연스럽게 사장되었다. 여담으로 인텔이 IA-64, 아이태니엄으로 이 구조를 밀었지만 처참하게 실패하고 AMD64로 갈아탔다...

이 밑은 약간 다른 분류이다.

  • SIMD(Single Instruction, Multiple Data)
명령어 레벨의 병렬성이 아닌 데이터 병렬성을 구현한 CPU이다. [12] 현재는 별도의 제품이 아닌 기존 CPU에 확장 명령어셋과 실행유닛을 추가한 형태로 구현되어 있다. MMX, 3D-Now!, SSE가 대표적. 사실 SIMD를 제대로 구현하고 있는 아키텍쳐는 다름 아닌 GPU(...)다.

4 참고사항

CPU 벤치마크 사이트 - 분류를 보면 알겠지만 각각의 분류에는 동일한 아키텍쳐를 가진 CPU들만 열거되어 있다. 호환이 다른 CPU를 하나의 절대지표에 놓고 평가를 하는 것이 쉽지 않기 때문이다.

[1] 지금까지 출시 된 CPU들을 거의 모두 볼 수 있는 사이트이다.

5 대표적인 x86계열 제조사와 제품

5.1 인텔

인텔 CPU 목록 문서 참조.

5.2 AMD

AMD CPU 목록 문서 참조.

5.3 VIA

코드네임은 대부분 성경에 나오는 지명이나 인명에서 따왔다.
CPU칩 단품으로 유통되는 경우는 거의 없고, 대부분 온보드 형식으로 팔린다.

6 비x86 및 RISC계열 CPU

7 관련 문서

  1. 이를 병목현상이라 하며 심하게 일어날 경우 CPU의 속도마저도 못내는 경우가있다.
  2. 사족이지만 그래픽카드의 업그레이드 주기가 아무래도 CPU보다는 짧다보니 같은 CPU, 마더보드, 램을 유지한 상태에서 그래픽카드만 바꿨는데도 게임에서 더 높은 그래픽 설정을 원활하게 돌릴 수 있게되는 상황은 제법 흔한 편이다. 3D 그래픽 관련 연산량이 많은 현대 게임들의 특성상 CPU 성능이 발목을 잡으려면 그래픽카드가 최신이거나 CPU가 많이 구려야된다(...).아니면 둘 다 거나.
  3. 참고로 '상용'이라는 수식어를 붙이는 이유는 미군이 F-14를 위해 개발한 MP944의 개발이 4004보다 1년 가량 앞서기 때문이다. 이게 1998년까지 기밀로 묶여있었던 바람에 일반에 알려지지 않아 i4004가 '최초'의 CPU로 많이 알려져있지만 엄밀히 따지면 최초의 CPU는 MP944, 최초의 상업용 CPU가 4004다. 에니악콜로서스의 관계랑 비슷하다.
  4. 8비트 CPU 하면 그냥 자동으로 연상되는 수준으로 유명한 CPU다. MSX, PC-8801, MZ-80, X1, SPC-1000, 세가 마크 3 등등 Z80을 사용한 8비트 기기는 셀 수 없을 수준으로 많다.
  5. 일명 MC6800. 당대에도 8080의 라이벌로 인식되었다. 후지츠의 FM-7이 6800의 후계 모델인 6809를 사용.
  6. 애플 II에 사용된 CPU로 설명 끝이다. 패밀리 컴퓨터, 코모도어 64에 채용된 CPU도 이것의 파생형. Z80에 비해 상대적으로 저성능이지만 가격이 저렴하고 프로그래밍이 심플한 것으로 유명.
  7. 일명 MC68000. 매킨토시, 리사, 아미가, 아타리 ST, X68000, CPS1, CPS2, 네오지오, 메가드라이브 등등. 사용된 범위만 갖고 보면 8086/8088보다 훨씬 넓다. 지금은 이바닥이 그냥 다 x86판이지만 한때는 x86과 더불어 680x0 패밀리가 CPU 업계의 양대산맥이었다. 흔히 16비트 CPU로 인식되지만 어드레스 버스는 24비트였고 32비트 레지스터를 갖추면서 내부적으로는 32비트 구조를 일부 갖추고 있어서 32비트 CPU로 여겨지기도 하며 애플은 리사와 매킨토시를 가지고 아예 대놓고 32비트 마케팅을 하기도 했다.
  8. 프레스캇의 '일부 모델'에 인텔의 x86-64 명령셋인 EM64T가 들어가기 시작했다. x86-64 자체는 이보다 1년 앞서 AMD 옵테론에 적용되기는 했다.
  9. 워크스테이션에서나 사용되어서 개인용 시장에서는 볼일이 없는 RISC CPU였지만 플레이스테이션, 닌텐도64 등에 들어가면서 일반에도 유명해졌다.
  10. 그 덕택에 MC68000 CPU를 사용한 매킨토시 기종(128k, 512k는 제외)이나 리사2가 느리기는 하지만 32비트 OS인 매킨토시 시스템 7.5.5 까지 쓸 수 있었고, 32비트 소프트웨어를 사용할 수 있었다.
  11. 그러나 x86 역시 내부적으로는 RISC 방식으로 돌아가고 있다. 정확히는 한번 더 인코딩을 함으로써 CISC를 RISC로 바꾸어 실행시키는 것. 이것은 인텔이나 AMD나 똑같다.
  12. 초기 SIMD는 두 개 이상의 CPU를 사용하여 프로그램 메모리 포인터를 공유하고 데이터메모리 포인터를 따로 두는 방식으로 SIMD를 구현했다.