중앙 처리 장치(中央處理裝置) 또는 CPU(영어: central processing unit, central/main processor)는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행 · 처리하는 가장 핵심적인 컴퓨터의 제어 장치, 혹은 그 기능을 내장한 칩이다. 컴퓨터 안의 중앙 처리 장치(CPU)는 외부에서 정보를 입력받고, 기억하고, 컴퓨터 프로그램의 명령어를 해석하여 연산하고, 외부로 출력하는 역할을 한다. 따라서 중앙 처리 장치(CPU)는 컴퓨터 부품과 정보를 교환하면서 컴퓨터 시스템 전체를 제어하는 장치로, 모든 컴퓨터의 작동과정이 중앙 처리 장치(CPU)의 제어를 받기 때문에 컴퓨터의 두뇌에 해당한다고 할 수 있다. 실제의 CPU 칩엔 실행 부분뿐만 아니라 캐시 등의 부가 장치가 통합된 경우가 많다.
CPU에는 MCU(Micro Control Unit)와 주변 장치(외부 확장 장치에 관한 IC)가 다 들어있는 Soc(System On Chip)가 있다. 주변 IC가 따로 달려 있을 경우, 그것은 MCU라고 할 수 있다.
CPU는 기계어로 쓰인 컴퓨터 프로그램의 명령어를 해석하여 실행한다. CPU는 프로그램에 따라 외부에서 정보를 입력받아,이를 기억하고, 연산하며, 결과를 외부로 출력한다. CPU는 컴퓨터 부품과 정보를 교환하면서 컴퓨터 전체의 동작을 제어한다.
기본 구성으로는 CPU에서 처리할 명령어를 저장하는 역할을 하는 프로세서 레지스터, 비교, 판단, 연산을 담당하는 산술논리연산장치(ALU), 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적으로 제어하는 제어부(control unit)와 내부 버스 등이 있다.
각종 전자 부품과 반도체 칩을 하나의 작은 칩에 내장한 전자 부품을 마이크로프로세서라고 한다. 마이크로프로세서는 전기 밥통에 쓰이는 낮은 성능의 제품부터 컴퓨터에 쓰이는 높은 성능의 제품까지 매우 다양하다. 마이크로프로세서들 가운데 가장 복잡하고 성능이 높은 제품은 컴퓨터의 연산 장치로 쓰인다. 이것을 중앙 처리 장치라고 한다.
'고정된-프로그램 컴퓨터'라고 불리는 ENIAC같은 컴퓨터는 다른 종류의 작업을 하기 위해 전선을 재배열 하는 과정이 필요했다. "CPU"라는 용어가 소프트웨어의 실행을 위한 장치로 불리게 된 이래로, CPU라고 불릴 수 있는 장치의 출현은 프로그램 내장 방식 컴퓨터의 출현 덕분이었다.
프로그램 내장 방식 컴퓨터는 J.Presper Eckrt와 John Willian Mauchly's의 ENIAC 설계에도 이미 어느 정도 드러나 있다. 하지만 ENIAC을 빨리 제작하기 위해서 생략되었다. ENIAC이 만들어지기 전인 1945년 6월 30일 수학자 폰 노이만은 'EDVAC 초안에 대한 보고'라는 논문을 발표했다. 이것은 프로그램 내장 방식 컴퓨터의 개요로써 1949년에 완전히 정립되었다. EDVAC은 일정한 수의 다양한 작업을 수행하기 위해 고안되었다. 확실한 것은, EDVAC 프로그램은 물리적 선의 연결이 아니라 빠른 속도의 컴퓨터 메모리에 저장된다는 것이다. 이것은 새로운 작업을 수행하기 위해서는 상당한 시간과 노력이 필요한 ENIAC의 한계를 이겨내는 데 도움을 주었다. 폰 노이만의 디자인은 소프트웨어(프로그램)를 단순히 메모리에 있는 내용을 바꾸는 것만으로 손쉽게 실행할 수 있게 만들어 주었다. 하지만 EDVAC은 최초의 프로그램 내장방식 컴퓨터는 아니었다. 맨체스터 대학교의 SSEM(Small-Scale Experimental Machine)과 마크 1이 프로그램 내장 방식 컴퓨터의 초기 버전이다.
트랜지스터와 집적회로 CPU의 등장
트랜지스터 CPU는 트랜지스터 발명 이후 등장했다. 트랜지스터는 같은 역할을 하던 진공관을 빠르게 대체하여 CPU의 부피를 줄일 수 있게 되었다
마이크로프로세서
페드리코 페긴이 1970년대에 발명한 것은 CPU의 설계와 구현에 대한 전반적인 기초를 완전히 바꾸어 놓았다. 1970년에 등장한 최초의 상업용 마이크로프로세서(Intel 4004)와 1974년의 최초의 범용 마이크로프로세서(Intel 8080) 이후로 생겼다.
연산
모든 CPU에서 메모리에 저장된 명령어들을 순서대로 불러와서 실행한다는 사실은 물리적형태와는 관계없이 동일하다. 그리고 CPU가 이 동작을 수행하기 위해서는 꺼내고, 해독하고, 실행하는 5단계가 필요하다. 마지막 단계에서 명령어를 실행하고난 이후에는 다시 이 다섯 단계의 명령 주기가 반복되며, 프로그램 카운터의 변화된 위치에서 실행될 명령어를 불러오게 된다.
인출
첫 번째 단계인 인출(Fetch)은 프로그램의 메모리에서 명령어를 불러오는 역할을 한다. 프로그램 내부의 명령어의 위치(주소)
해독
두 번째 단계인 해독(Decode)은 인출 단계에서 가져온 명령어를 해독하여 명령어 내의 데이터 정보와 연산 정보를 추출한 뒤, 중앙처리 장치 내의 각 장치에 적절한 제어신호를 보내 연산, 처리에 대한 준비를 하는 단계이다.
실행
실행(Execute)은 명령어에서 추출한 두 데이터와 연산 정보를 이용해 실제로 연산을 하는 단계를 말한다. 연산이 끝난 결과는 곧바로 다음 명령어에서 사용될지, 그렇지 않을지에 따라 메모리 단계로 갈지, 라이트백 단계로 갈지 결정된다.
메모리
네 번째 단계인 메모리(Memory)는 연산결과가 다음 명령어에 바로 사용되지 않는다면, 결과를 메모리에 저장하는 것을 말한다.
라이트백
연산의 마지막 단계인 라이트백(Write-Back)은 이전 명령어의 연산 결과가 다음 명령어의 입력 데이터로 사용될 경우, 계산 결과를 레지스터에 다시 쓰는 것을 말한다.
설계와 구현
기본 구성으로는 CPU에서 처리할 명령어를 저장하는 역할을 하는 프로세서 레지스터, 비교, 판단, 연산을 담당하는 산술논리연산장치(ALU), 명령어의 해석과 올바른 실행을 위하여 CPU를 내부적으로 제어하는 제어부(control unit)와 내부 버스 등이 있다.
CPU의 내장회로는 CPU가 수행할 수 있는 기본적인 연산들의 집합인 '명령어 집합'으로 이루어져있다. 예를 들면 두 개의 숫자에 대한 가감연산 혹은 비교연산 같은 것이 있다. 각각의 기본 연산은 옵코드(opcode)라고 불리는 특정한 비트의 조합으로 나타내진다.
모든 명령어의 실제 수학적인 연산은 CPU 내부의 산술논리장치(ALU, arithmetic logic unit)이라는 조합논리회로에서 담당한다. CPU는 대부분 산술논리장치가 연산을 수행하기 위한 명령어를 메모리로부터 불러오고, 연산의 결과값을 저장하는 일을 한다. 메모리로부터 데이터를 불러오는 연산의 명령어 집합의 종류와 동작은 확연한 차이를 보인다.
성능
중앙 처리 장치의 성능은 크게 클럭(Clock) 속도와 코어 수로 결정된다.
클럭
CPU에서 클럭이라고 하는 수치는 중앙 처리 장치 내부에서 일정한 주파수를 가지는 신호로 이 신호에 동기화되어서 중앙 처리 장치의 모든 명령어가 동작되게 된다. 예를 들어, 클럭 수가 3.0GHz이면 초당 30억 번의 명령어 처리를 할 수 있다는 말이다. 따라서 클럭 주파수가 빠를수록 제한된 시간에 더 많은 명령을 처리할 수 있기에 더 좋은 성능의 중앙 처리 장치라고 할 수 있다.
코어
중앙 처리 장치안의 코어의 수로도 성능의 차이가 난다. 코어는 중앙 처리 장치의 역할을 하는 블록으로 예전에는 한 개의 칩 안에는 한 개의 코어의 구조를 가진 싱글코어가 다수였지만 최근에는 한 개의 칩 안에 여러 개의 코어를 가지는 멀티코어 구조를 채택하고 있다.
싱글 코어
싱글 코어(Single Core)는 하나의 코어로 이루어진 CPU이다. 일반적으로 멀티 코어에 비해 경비가 싸고 프로그래밍도 간단하지만 보수 작업이나 고장의 경우에는 시스템이 완전히 멈추고 수많은 작업을 잘 분산시키지 못해 멀티 코어에 비해 처리 속도가 느리다는 단점이 있다.
한 개의 칩 안에 여러 개의 연산을 처리할 수 있는 장치를 병렬적으로 연결한 멀티 코어 시스템을 통하여 더 좋은 성능의 중앙 처리 장치를 얻을 수 있게 된다. 하지만 프로그램을 작성할 때 멀티코어를 활용할 수 있도록 코딩해야 한다. 그렇지 않으면 멀티코어 CPU라도 멀티코어를 활용 못할 수 있다.
싱글 코어 및 다중 코어를 칭하는 명칭은 다음과 같다.
코어의 개수
명칭
1
싱글 코어
2
듀얼 코어
3
트리플 코어
4
쿼드 코어
6
헥사 코어
8
옥타 코어
10
데카 코어
12
도데카 코어
16
헥사 데시멀 코어
현재는 코어의 속도를 높이기 힘든 한계에 왔기 때문에, 속도보다는 병렬성을 높이는 것에 집중하여 CPU 다이에 64개의 코어를 넣은 AMD EPYC 7742 서버용 CPU도 출시되었다.