컴퓨터 하드웨어는 CPU, Memory, IO Device로 되어 있고, 각각이 Bus로 연결되어 있다.

CPU는 연산(Computation)과 제어 흐름(Flow-Of-Control), IO Instructions, Memory Read/Write를 담당하는 컴퓨터의 핵심 구성요소이다. 연산은 덧셈, 뺄셈, 곱셈, 나눗셈의 산술 연산, AND, OR, NOT과 같은 논리 연산, 크다작다와 같은 비교연산을 의미하고, 제어 흐름은 프로그램이 실행될 때 실행 흐름을 제어할 수 있는 것을 의미한다. IO Instruction, Memory Read/Write는 CPU가 작업을 수행하는 데 필요한 데이터를 메모리에 읽고 쓰는 것을 의미한다.
CPU는 ALU, CU, Register로 구성되어 있다. ALU(Arithmetic Logic Unit) 산술 논리 연산장치는 CPU의 핵심 구성 요소로, 산술 연산, 논리 연산을 수행한다. 프로그램에서 주어진 명령어에 따라 데이터를 처리해서 결과를 Register에 전달한다. CU(Control Unit) 제어 장치는 CPU에게 작업을 지시하는 장치이다. CU는 Memory에서 명령어를 읽어와 필요한 동작을 한다. Register는 CPU 안에 있는 저장 공간이다. CPU가 연산을 할 때 연산에 필요한 데이터나 결과값들을 저장해야하는데, CPU의 속도에 비해 Memory는 훨씬 느려서 저장을 할 수 없다. 따라서 CPU내에 빨리 읽고 쓸 수 있는 저장공간을 만들었는데 이것이 Register이다. CPU는 Register를 사용해서 데이터를 효율적으로 처리할 수 있다. Register는 크게 2가지로 나뉘는데 사용자가 프로그램에 의해 변경할 수 있는 user-visible-register이고, 불가능한 user-invisible-register이다. user-visible-register에는 CPU가 명령어를 처리하는데 필요한 데이터를 임시로 저장하는 DR(Data Register), 데이터 또는 명령어가 저장된 메모리 주소를 저장하는 AR(Address Register)이 있다. user-invisible-register에는 CPU가 실행할 다음 명령어의 주소에 관한 데이터를 저장하는 PC(Program Counter), 현재 실행하고 있는 명령어를 저장하는 IR(Instruction Register), 메모리 관리에 필요한 주소를 저장하는 MAR(Memory Address Register), 관리해야할 메모리에서 가져온 정보를 저장하는 MBR(Memory Buffer Register), 연산 결과를 저장하는 PSR(Program Status Register)가 있다.
CPU는 ALU, CU, Register들을 통해 프로그램 명령어를 실행하고 필요한 데이터를 처리할 수 있다. 간단히 정리하면 CPU는 ALU를 통해 연산을 하고, CU를 통해 명령어 흐름을 제어할 수 있고, Register를 통해 필요한 데이터를 저장했다가 꺼내쓸 수 있다.
Memory는 크게 RAM(Random Access Memory)와 ROM(Read Only Memory)가 있다. RAM은 데이터를 읽고 쓸 수 있지만 컴퓨터가 꺼지면 저장된 데이터가 삭제되는 휘발성 메모리이고, ROM은 읽기만 가능하지만 컴퓨터가 꺼져도 저장된 데이터가 삭제되지 않는 비휘발성 메모리이다. 이러한 특성으로 인해 BIOS(Basic Input Output System)같은 컴퓨터에게 변하지 않는 명령을 사용하는 것들이 ROM에 저장된다.
IO Device(Input Output Device)는 컴퓨터와 사용자 사이에서 데이터 상호작용을 위한 장치를 의미한다. IO Device를 통해 데이터를 입력하고 출력할 수 있다. 일반적으로, 모니터, 키보드, 마우스, 마이크, 스피커 등이 있다.

Bus는 CPU, Memory, IO Device를 연결하는 통로이다. Bus는 데이터, 주소, 제어 신호 등을 전송하여 컴퓨터 각각의 구성요소가 데이터를 주고받는 등의 상호작용을 할 수 있도록 도와준다. Bus에는 Data Bus, Address Bus, Control Bus가 있다. Data Bus는 MBR과 연결된 Bus로 데이터의 이동이 양방향으로 이루어진다. Address Bus는 MAR과 연결된 Bus로 데이터를 읽거나 쓸 때 메모리 주변장치에 주소를 보내기 위해 사용하고 단방향으로 이루어진다. Control Bus는 CU와 연결된 Bus로, CPU가 메모리와 주변장치에 제어 신호를 보내기 위해 사용한다. 메모리와 주변장치에서도 작업이 완료되거나 오류가 발생하면 제어 신호를 보내기 때문에 양방향으로 이루어진다.