이번 포스팅에서는 컴퓨터의 핵심 두뇌인 CPU에 대해서 알아보자.
Central Processing Unit의 약자로, Computer system에서 연산과 제어를 수행하는 가장 핵심이 되는 부품이다.
컴퓨터의 모든 작업은 CPU를 통해서 이루어지고, 사용자의 명령을 해석하고 실행하는 역할을 수행한다.
CPU는 산술논리연산장치(ALU), 제어장치(CU), 레지스터(register)로 구성되어 있다.
ALU는 컴퓨터의 대부분의 계산을 도맡아 수행하는 연산만을 위한 장치이다.
Arithmetic and Logical Unit의 약자로 이름 그대로 Arithmetic: 산술(+,-,*,/), Logical: 논리(=,<,>) 연산을 하며 결과를 도출해 낸다.
💡ALU의 기능을 우리 뇌와 연관지어 연습장에 적힌 1+2를 연산하는 과정을 보자.
우리도 연산을 하기 위해서는 지시를 하는 뇌(CU)
에서 어떤 연산을 하라는 지시(control signal)
가 있어야 하고, 연산을 하는 뇌(ALU)
에서는 연습장(resgister)
에 적힌 1과 2(data)
를 연산하고, 끝냈을 때 나오는 결과(result)
를 다시 연습장(resigster)
에 적는다.
조금 다른점은 컴퓨터는 0과1로 만들어진 데이터를 읽기 때문에 음수부호(-)를 표현하지 못한다. 이러한 연산결과에 대한 부가 정보를 깃발(flag)
라는 이름을 가진 데이터 덩어리로 구분짓는다.
플래그 종류 | 의미 | 예시(연산결과) |
---|---|---|
부호 플래그 | 연산한 결과의 부호를 나타냄 | 1일 경우 음수, 0일 경우 양수 |
제로 플래그 | 연산 결과가 0인지 여부를 나타냄 | 1일 경우 0, 0일경우 0이 아님 |
캐리 플래그 | 연산 결과 올림수나 빌림수가 발생했는지 나타냄 | 1일 경우 발생, 0일 경우 미발생 |
오버플로우 플래그 | 오버플로우의 발생 여부를 나타냄 | 1일 경우 발생, 0일경우 미발생 |
인터럽트 플래그 | 인터럽트가 가능한지를 나타냄 | 1일 경우 가능, 0일 경우 불가능 |
슈퍼바이저 플래그 | 어떠한 모드를 사용 중인지 나타냄 | 1일 경우 커널모드, 0일경우 사용자모드 |
ALU의 구성은 설계된 ALU의 아키텍처나 구현 방식에 따라서 내부구성이 달라진다.
일반적으로 대부분 사용되는 ALU의 구성내용 몇가지에 대해서만 알아보자
CU는 레지스터 사이의 데이터 전송을 감시하고 ALU의 동작을 지시하는 장치이다.
전체 컴퓨터 시스템의 작동을 통제 지시하는 장치로, 적정한 순서로 명령을 꺼내고, 각 명령을 해석하여 그 해석에 따라서 ALU나 메모리 등에 필요한 신호를 보낸다.
CU는 우리 생체가 바이오리듬이 있듯이, 컴퓨터의 모든 부품이 일사불란하게 움직일 수 있게 하는 시간의 단위인 클럭주기 신호를 받는다. 이 신호의 주기를 바탕으로 동작한다.
IR(instruction register)에서 명령어를 받아서 해석하여 CPU내부(ALU, register)나 외부(Bus를 통한 memory나 I/O Unit)에 제어신호를 보내게 된다.
레지스터는 한 비트를 저장할 수 있는 플립플롭의 모임으로, CPU 내부에 있는 소규모의 임시 저장 장치이다.
저장공간들 (SSD, HDD, SRAM, DRAM 등등 ) 중 가장 빠른 속도를 가지며 DRAM과 같이 휘발성 저장 장치이다.
CPU 내부에는 여러가지 종류의 레지스터가 존재하고, 각기 다른 역할을 가진다.
여기서 CPU내부는 ALU 와 CU 내부도 포함한다.
Program Counter(PC)
Instruction Register(IR)
Memory Address Register(MAR)
Memory Buffer Register(MBR)
Flag Register(FR)
이 외에도 Data Register, Index Register, Base Register 등 여러가지 레지스터가 존재한다.