현재 포스트는 이후에 습득한 지식으로 인해 내용이 추가, 수정, 삭제될 수 있음

CPU는 Central Processing Unit의 약자로 컴퓨터의 두뇌와 같다.
크게 연산을 수행하는 장치인 ALU와 CPU 내부의 동작을 관리하는 CU, 그리고 빠르게 데이터에 접근할 수 있는 레지스터와 캐시로 이루어져있다.
위 그림에서 끝이 뾰족한 도형은 레지스터임을 의미한다.
레지스터는 CPU 동작 중간마다 필요한 데이터를 빠르게 저장, 참조하기 위한 아주 빠르고 작은 저장공간이다.

ALU는 Arithmetic Logic Unit의 약자로 산술논리 연산장치라고 부른다.
이름에 걸맞게 산술 연산과 논리 연산을 지원한다.
산술 연산
덧셈, 뺄셈, 곱셈, 나눗셈 등의 작업을 수행할 수 있다.
덧셈과 뺄셈은 ALU의 가장 기본적인 연산이며, 고급 프로세서에서는 곱셈과 나눗셈도 하드웨어 수준에서 직접 지원된다.
논리 연산
AND, OR, NOT, XOR 같은 논리 게이트 연산을 수행한다.
시프트 연산
데이터 비트를 왼쪽이나 오른쪽으로 이동시키는 시프트 연산을 수행할 수 있다.
비교 연산
두 데이터 값을 비교하고, 그 결과에 따라 특정 조건을 충족하는지 여부를 판단할 수 있다.
이 섹션의 제목에서 알 수 있듯 ALU는 계산에 대한 판단은 하지 않고 오로지 주어진 명령에 의한 계산만 할 수 있다.
계산에 대한 명령은 이후 기술할 CU가 담당한다.
AC는 Accumulator라는 뜻으로 누산기라고 부른다.
ALU에서 계산된 결과를 다음 계산에 사용하기 위해 임시적으로 저장하는 레지스터이다.
누산기는 ALU 뿐만 아니라 CPU 내부의 다른 레지스터로의 데이터 이동 또는 메모리와의 데이터 교환에 있어서 중간 저장소로 기능할 수 있다.

MAR은 Memory Address Register의 약자로써 CPU가 메모리에 접근할 때 사용하는 주소를 저장하는 레지스터이다.
CPU가 읽을 데이터의 메모리상 주소, 쓸 데이터의 메모리상 주소를 저장하는 경우와 PC에서 수행할 명령어의 주소를 저장하는 경우에 일반적으로 사용된다.
쉽게 말해 CPU와 메모리 사이의 인터페이스 역할을 한다고 생각하면 된다.
데이터를 저장하고 불러오는 주소를 저장하는게 마치 택배(데이터)를 배달(전송)하고 수거(불러오기)할 때 집 주소를 저장하는 과정과 비슷해 보여서 배송지 주소를 저장하는 곳이라고 생각하면 쉽게 외워진다.
PC는 Program Counter의 약자로 현재 실행중인 명령어의 메모리 주소를 가리키는 레지스터이다.
명령어가 실행될 때 마다 PC는 CU에 의해 한 칸씩 이동, 점프하며 프로그램의 명령어들을 순차적으로 실행할 수 있게 도와준다.

MBR은 Memory Buffer Register의 약자로 메모리로부터 쓸, 읽을 데이터를 저장하는 레지스터이다.
명령어 역시 데이터이므로 PC, MAR을 통해 호출된 주소의 명령어 데이터를 받아와 저장할 수도 있다.
받아온 명령어는 IR, ID, CU를 통해 수행된다.
데이터를 읽고 쓰기 전에 저장하는 모습이 택배를 배달하거나 수거하기 전에 잠시 모아놓는 물류창고와 비슷해서 물류창고라고 외우면 쉽게 외워진다.
IR은 Instruction Register의 약자로 MBR로부터 받아온 기계어로된 명령어를 임시로 저장하는 레지스터이다.
ID는 Instruction Decoder의 약자로 IR에 저장된 기계어(명령어)를 해석하여 CPU가 어떤 연산을 수행해야 할지를 결정한다.
IR로부터 명령어를 받아 그 명령어의 연산 코드(opcode)와 피연산자(operands)를 분석하고 이를 바탕으로 어떤 종류의 연산이 필요한지, 어떤 레지스터가 연산에 관여해야 하는지 등의 정보를 만들고 CU에 전달한다.

CU는 Control Unit의 약자로 CPU의 핵심 구성 요소 중 하나이다.
CPU 내의 모든 연산과 데이터 전송을 조율하고 제어하는 역할을 수행한다.