|
컴퓨터 CPU(Central Processing Unit)
컴퓨터에서 구성 단위 중 기억, 연산, 제어의 3대 기능을 종합하는 장치인 Central Processing Unit(중앙 처리 장치)의 줄임말. 컴퓨터의 대뇌라고 할 정도로 가장 중요한 부분중 하나다. 프로그램의 명령어를 해석하여 데이터를 연산/처리를 하는 부분, 혹은 그 기능을 내장한 칩을 의미한다. 컴퓨터가 동작하는 데 필요한 모든 계산을 처리하며 컴퓨터를 뇌에 비유하자면 단기기억 담당은 RAM, 장기기억은 하드디스크, CPU는 사고를 담당하는 대뇌피질 정도로 볼 수 있겠다. 대뇌피질 없이 인간의 사고가 성립하지 않듯이 컴퓨터도 CPU 없이는 아무런 기능도 하지 못하는 고철일 뿐이다. 시스템 창에서 컴퓨터에 관한 기본정보를 볼때 프로세서라고 적혀있는 곳 옆에 있다. 제품명이 써져있으며 오른쪽에는 GHz단위의 숫자가 적혀있는데 이것은 한번의 정보 처리량을 의미하며 당연히 숫자가 높으면 높을수록 좋다. 사실상 컴퓨터의 속도와 성능을 좌우하는 세 가지중 하나로 컴퓨터가 좋아 보이는데도 이상하게 가격이 싸면 꼭 확인해봐야하는 사항이다. 다만 과거에는 클럭 그 자체가 매우 중요했으나, 현 시점에서는 클럭만이 CPU 성능을 좌우하는 것은 아니며 예를 들어 제품 세대 및 아키텍쳐에 따른 IPC(클럭당 성능)도 중요한데 과거 펜티엄D 3.4Ghz가 1세대 코어2듀오 1.8Ghz에 성능이 밀린 것만 봐도 알 수 있다. 또한 클럭만 높이거나 IPC만 높이는 것도 한계가 있어서 현재는 멀티 코어의 방향으로 선회한 지 오래되었기 때문에 실질적으로 코어 수도 중요하며, 코어 수에 따라 상위 하위 제품이 갈리는 경우가 많다
즉, 클럭 속도, IPC, 코어 수에 따라 CPU 성능이 결정된다. 부차적으로 SMT와 같은 다양한 기술 및 미세공정에 따른 저발열, 전력소모 등도 고려할 수 있다.
CPU 중에서도 각종 전자 부품과 반도체 칩을 하나의 작은 칩에 내장한 형태를 마이크로프로세서라고 한다. 마이크로프로세서는 '전기 밥통'이나 '냉장고'에 쓰이는 낮은 성능의 제품부터 슈퍼컴퓨터에 쓰이는 높은 성능의 제품까지 매우 다양하다. 마이크로프로세서들 가운데 가장 복잡하고 성능이 높은 제품은 컴퓨터의 연산 장치로 쓰인다.
조립컴퓨터 견적에서 돈을 많이 먹는 부품 중 하나. 각 부품의 업그레이드가 특정 성능을 올려준다면 CPU는 일단 컴퓨터 전체적인 성능의 베이스, 알파이자 오메가 격이다. 물론 게임할때는 CPU가 안 좋아도 그래픽카드가 좋으면 CPU가 좋고 그래픽카드가 안 좋은 것보다는 좋은 퍼포먼스를 낸다고 알려져 있지만, CPU가 연산을 지시하기 때문에 그래픽 카드가 아무리 좋더라도 CPU가 좋지 않다면 CPU 속도에 맞춰지기 때문에 제 성능을 발휘하지 못한다. 즉, 못해도 둘 다 동급으로 맞춰 줘야 한다는 이야기. 다만 요즘 나오는 대다수의 CPU는 충분히 좋기 때문에 이 말이 통하는 게 어쩌면 당연할 수밖에 없다. 그러므로 괜히 CPU 비싼 거 끌려서 사지 말고 자신의 용도에 맞게 적당한 제품을 구매하도록 하자. 단, 장기적으로 사용할 경우 조금 오버해서라도 상위제품을 구매하는 게 좋을 수 있다.
성능에 완전 목을 매는 오버클럭커가 아닌 이상, 구매하려는 그래픽카드에 적정한 수준의 CPU와 램을 구비하면 게임 돌리는데는 문제가 없다. 문제는 성능 스펙, 수치 자체에 집착하는 경우 초고하이스펙으로 맞춰봐야 몇 년 지나면 또 그걸 뛰어넘는 신제품이 나오며, 돈지랄이 될 가능성이 매우 높다(...) 결국 눈물을 머금고 부품 사고팔고 하다가 회의를 느껴 정리하는 컴덕들이 적지않다. 다른 취미와는 다르게, 컴퓨터 부품은 감가상각이 확실하다보니 신품과 중고의 갭이 크기도 하고.
게이밍컴퓨터는 세대가 높고 클럭이 높은 것을 구매해야한다. 고성능 게이밍을 즐기려면 적어도 3.2에서 3.4GHz이상의 CPU가 필요하다. RAM과 SSD는 컴퓨터의 성능에 어느 부분에서는 관여하지만, 대중적인 사용자들이 FPS등의 지표로 이야기하는 '게이밍 성능'에는 큰 연관이 없는 편이다. 권장사양 이상의 램과 SSD는 각각 다양한 작업을 동시에 수행할 수 있도록 하고 저장된 파일을 원할하게 불러올 수 있도록 하지만, CPU의 성능이 따라주지 않으면 절대적인 처리속도는 그대로일 수 밖에 없다. 실제로 실행해보면, 램과 SSD를 교체해도 CPU가 성능을 붙잡으면 게임의 FPS등은 크게 달라지지않는다. 일정 수준 이상의 RAM 과 SSD만 갖추어도 일반적인 사용례에서는 충분하다.
그냥 컴퓨터(ComPutingUnit)의 약자로 쓰는 경우가 있다. 아주 흔히 쓰는 말은 아니지만 PC와 조금 다르게 쓰거나 그걸 포함한 포괄적인 의미를 표현해야 할 경우에만 쓰기 때문에 생각보다는 다양한 곳에서 보거나 들을 수 있다. 다소 관용적인 용어로, 쓰이는 문맥 상으로 보통 뚜렷하게 구별이 되기 때문에 혼동의 여지는 거의 없다.
사실 파워만 충족된다면 하나만 달랑 바꾸는게 가능한 그래픽카드와는 달리, cpu는 구형에서 신형으로 바꾼다면 필연적으로 메인보드의 교체 또한 강요되며, 메인보드가 바뀌면 램의 교체까지 강요된다는 삼중고를 거쳐야하기에 바꾸는게 쉬운일은 아니다. 그렇기에 그래픽카드를 사서 교체하는식의 업글은 자주하지만 cpu를 교체한다면 사실상 컴퓨터 하나를 사는꼴이 되므로 차라리 새로 견적을 맞추는게 대부분이다.
또한 게임은 나날이 발전하여 그래픽카드는 지속적으로 교체해줄 필요성이 대두되는 반면, cpu는 구형중에서도 잘 돌아가는 현역이 많다. 가성비와 노인학대의 상징인 샌디할배(i5-2500)이 그 예시. 한번에 큰 차이의 상급기종으로 기변할게 아니라면 안바꾸는게 나을정도로 지금도 팔팔한 현역이다. 무려 2011년에 만들어진 물건인데, 당시 최신 현역 그래픽카드가 gtx 580임을 생각해본다면 9년째 현역으로 뛰고있다는것은 정말 대단한 부분.
종류
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 a Chip).
다음은 각 분류 방식에 따른 CPU의 종류이다.
데이터 크기에 따른 분류
여기서 말하는 비트 크기는 해당 아키텍처를 사용하는 컴퓨터에서의 워드 크기를 의미한다. 워드 크기란 CPU에서 1사이클에 처리할 수 있는, 다시 말해 한 번에 처리할 수 있는 비트의 수를 말한다. 또는 접근할 수 있는 메모리의 범위를 의미하기도 했으나 32비트 아키텍처에 들어오면서 메모리 범위가 워드폭과 다르게 되면서 폐기되었다.
32비트 초반까지는 해당 비트수가 워드 폭(보통 C언어의 int)과 메모리 어드레스 범위(C언어의 포인터변수), 그리고 명령어의 길이(어셈블리언어에서 명령 한 줄)를 모두 지칭하였다. 32비트 아키텍처 후반부로 가면서 워드 폭만을 의미하는 것으로 축소되었으나 32비트 메모리 주소 범위가 고갈되면서 메모리 관련 의미가 다시 수면 위로 떠올랐다.
명령어의 길이가 아키텍처가 올라가면서 두 배씩 늘어나기 때문에 실행 바이너리의 크기가 세대가 올라갈수록 점점 커지며 CPU가 소비하는 전력 사용량도 덩달아 올라간다. 다만 전력 사용량은 이외에도 변수가 많아서 절대적인 기준은 될 수 없다. 실행 바이너리 크기와 전력 사용량에 민감한 모바일 업계에서 16비트 Thumb명령셋을 지원하는 ARM계열 CPU를 선호하는 이유.
• 4비트
최초의 상용 단일칩 CPU, 즉 '마이크로프로세서'로 인정받는 인텔의 4004와 그 후속작 4040이 4비트 CPU이다. 현재도 아주 적은 양의 연산만을 필요로 하는 곳에 가끔 4비트 CPU가 들어가는 경우가 있다. 4004 이전에도 물론 '컴퓨터'는 존재했으니만큼 개념적인 의미에서의 '중앙처리장치'는 있어왔지만 연산, 제어, 기억 등의 주요 기능을 담당하는 회로가 단일칩에 들어가지 않고 별개로 나뉘어 있었다.
• 8비트
PC시대의 서막을 연 세대. 최초의 개인용 컴퓨터인 MITS 알테어 8800에 채용된 인텔 8080과 그 호환칩이자 8비트 시대를 주름잡은 자일로그 Z80, 모토로라 6800, MOS 테크놀로지 6502 등이 유명하며, 마이크로컨트롤러용으로 많이 사용되는 8051, AVR, PIC 등도 여기에 포함된다. 대단히 의외지만 아직도 CPU시장에서 숫적으로는 주력의 자리를 차지한다. 2012년 기준 출하량 60억 개로 PC용 프로세서의 예상출하량 2억 개의 30배에 달하는 수량이다. 장난감이나 가전제품(그것도 최하급), 시계 등에나 각종 센서장비의 보조 프로세서 등 컴퓨터라는 느낌이 전혀 들지 않는 제품에 주로 들어간다. 매우 저전력으로 동작해서 건전지 한 개 분량의 전력으로 몇 년을 구동도 가능하고 몇 백 원 이하의 가격대도 있을 정도로 저렴한 게 장점. 프로세서의 속도도 작은 LED전광판 구동할 정도는 된다. 연산 성능이 별로 필요하지 않고 저가격/저전력(=적은 유지비)을 요구하는 분야에서는 여전히 현역.
• 16비트
오늘날의 PC산업을 있게 한 IBM PC에 들어가는 인텔 8088과 매킨토시의 CPU이자 오락실 기판을 제패한 68000이 대표적이다. 80286, 80196, C166 등이 있다. 현재는 32비트 아키텍처에 밀려 잘 쓰지 않는다. 32비트도 전력 소비량을 많이 개선했고 가격도 충분히 저렴해졌으며 무엇보다 프로그램 호환성 측면에서 16비트보다 압도적으로 편리하기 때문. 성능이 필요하면 32비트, 성능이 별로 필요없고 무조건 싸야되면 8비트를 사용하면 되기 때문에 입지가 좁다.
• 32비트
속칭 386으로 불리우는 80386과 그 후속모델인 80486, 펜티엄...(이하 생략) 등이 대표적이다. 32비트 CPU가 시장을 지배한 시간은 상당히 길어서 인텔의 IA-32 아키텍처만 보아도 80386(1986년)부터 펜티엄 4 프레스캇(2004년)까지 거의 20년 가까운 기간이며, 80386 이전에 등장한 타사의 32비트 아키텍쳐들과 그 이후에 나온 타사의 32비트 아키텍쳐들 까지 다 포함하면 30년을 훌쩍 넘긴다. 덕분에 PC시장 발전기의 레전드급 아키텍처의 이름들이 대거 포진한다. 모토로라 68020/68030, MIPS, ARM, PA-RISC, PowerPC 등. 또한 마이크로컨트롤러로 8비트계에서 성공을 거둔 PIC이나 AVR등이 PIC32, AVR32등으로 확장된 경우도 있다. 좀 무리해서 갖다붙이자면 80386계열도 8051의 확장이라고도 볼 수 있는데 이는 8051이 8080의 분가에 해당하는 위치이기 때문. 흔히 최초의 32비트 CPU 하면 80386을 떠올리지만 사실 최초의 32비트 CPU는 1979년에 나온 내셔널 세미컨덕터의 NS32016으로 외부 버스는 16비트 어드레스 버스는 24비트지만 CPU 내부적으로는 32비트를 도입하였으나 8086과 MC68000에 밀려서 그리 흥하지는 못했다. 흔히 16비트 CPU로 여겨지는 모토로라 MC68000도 실은 NS32016 처럼 내부적으로는 32비트 구조를 일부 갖추고 있었다.
• 64비트
아이태니엄(IA-64), x86-64, ppc64, Alpha, MIPS64, ARMv8, Power등이 대표적인 64비트 아키텍처. 인텔의 아이태니엄처럼 처음부터 64비트로 설계되는 경우도 있지만 보통은 x86-64나 ppc64처럼 32비트 아키텍처를 64비트로 확장한 설계로 만든 경우가 많다. 이런 경우 32비트 호환모드에서는 64비트임에도 워드 폭이 32비트이고 대신 1사이클에 2워드를 처리하는 등의 변칙적인 방법을 쓴다. 32비트 아키텍처에서 만들어진 프로그램들의 호환성을 유지하기 위해서 이렇게 결정된 것으로 64비트 아키텍처 전용명령을 사용하면 워드폭 64비트로 작동해서 64비트의 데이터를 직접 다룰 수 있게 된다.
• 128비트
RISC-V
연산 장치의 개수에 따른 분류
• 싱글코어
연산 장치가 하나인 CPU. 과거에는 매우 많이 사용되었으나, 2000년대 중엽부터 멀티코어 프로세서가 대중화되면서, 이제는 저가형 인터넷 공유기 등 특수 목적용으로만 쓰인다.
• 멀티코어
연산 장치가 복수인 CPU. 자세한 내용은 문서 참조.
• SMT
일명 하이퍼스레딩으로 일컫는, 단일코어를 멀티코어로 간주하고 처리하는 방식. 자세한 내용은 문서 참조.
용도에 따른 분류
• 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시리즈가 유명하다. 특정 데이터 포맷 처리에 특화되어서 그 외의 데이터 포맷이나 메모리핸들링, 프로그램 제어 기능은 부실할 때가 많다.
◦ GPU(Graphics Processing Unit)
DSP 중에서도 비디오 출력 데이터 처리에만 극단적으로 특화된 제품. 초기 GPU는 그냥 상용 DSP를 활용하는 경우도 많았다. 제어구조가 없거나 매우 부실하지만 (연산해야 하는 데이터의 특성으로 인해)병렬성이 극히 높아서 연산 쓰루풋이 대단히 높은 특징을 가지고 있다. 다만 대부분 제어구조가 부실하므로 일반적인 프로그래밍을 GPU에서 돌리기는 무리. 물론 굳이 하려면 할 수는 있다.
• FPU(Floating-Point Unit)
실수 연산에 특화된 CPU로 인텔의 i80X87계열이 대표적이다. 프로그래밍에 필요한 제어 구조가 없어서 DSP와는 달리 단독으로 프로그램을 구동시키지는 못한다. 범용 CPU와 묶여 Co-Processor 형태로 사용되는 형태가 대부분이었으며 2000년대 이후로는 독립된 제품보다는 주로 범용 CPU내의 연산유닛으로 포함되는 형태가 대세.
명령어 세트 방식에 따른 분류
CPU의 마이크로 아키텍처 명령어에 의한 분류는 다음 세 가지가 있다.
• CISC(Complex Instruction Set Computer) 방식 CPU
초기에 CPU가 원칩 형태로 등장하기 이전부터 발전해 왔던 명령어셋을 사용한 CPU. x86계열이나 M6800/M68k 등이 대표적이다 최근에는 RISC가 대세가 됨에 따라 잘 만들어지지 않고 있다..
• RISC(Reduced Instruction Set Computer) 방식 CPU
80년대부터 문제로 지적된 명령어셋의 복잡화와 그로 인한 CPU설계의 복잡화를 해결하기 위해 등장한, 간략화된 명령어셋을 도입한 CPU. x86[22]이나 8051 계열을 제외한 대부분의 현용 CPU 아키텍처가 RISC 방식 명령어를 채택하고 있다.
• VLIW(Very Long Instruction Word) 방식 CPU
명령어 레벨의 병렬 실행이 가능한 명령어셋을 가지고 있는 CPU. 대표적으로 크루소와 TI의 TMS6400시리즈, 그리고 아이태니엄이 있다. CISC나 RISC를 대체할 새로운 구조로 등장했지만 컴파일러 설계가 난해한 점이나, 이론적으로는 빠른 구조지만 실제로는 기존 설계보다 그리 빠르지 않았다는 점 때문에 자연스럽게 사장되었다. IA-64때문에 90년대에 처음 나온 것으로 아는 사람이 많지만 80년대 초에 예일대학교에서 나온 구조이다. 80년대에도 이미 Cydrome 이라는 회사에서 VLIW 칩을 생산했지만, 4년 만에 망했다. 그래도 Cydrome의 연구내용을 이어받아 90년대에 인텔이 IA-64, 아이태니엄으로 이 구조를 밀었지만 그 또한 처참하게 실패하고 AMD64로 갈아탔다. 그러나 구조적인 우수성 덕분에 수많은 실패에도 불구하고 지속적으로 명맥을 이어가는데 현재는 군사 & 우주용 CPU로 사용되는 옐브루스 프로세서 시리즈에서 사용중이다.
• SIMD(Single Instruction, Multiple Data)
명령어 레벨의 병렬성이 아닌 데이터 병렬성을 구현한 CPU이다. 현재는 별도의 제품이 아닌 기존 CPU에 확장 명령어셋과 실행유닛을 추가한 형태로 구현되어 있다. MMX, 3D-Now!, SSE가 대표적. 사실 SIMD를 제대로 구현하고 있는 아키텍쳐는 다름 아닌 GPU(...)다.