컴퓨터를 구성하는 모든 부품이 다 중요하지만, CPU만큼 중요한 부품은 없다 해도 과언이 아니다.
실제로 모든 작업을 처리하고, 시스템의 스펙에 가장 큰 영향을 끼치는 하드웨어다.
CPU란 무엇인가?
CPU(Central Processing Unit) 컴퓨터 시스템에 있어 핵심 처리 장치로,
프로그램에서 처리해야 하는 명령을 해석하고 실행하는 역할을 담당한다.
이는 프로세서라고도 불리며, 인간의 두뇌와 같은 역할을 한다.
주요 구성 요소
CPU의 구성요소는 위 이미지와 같이 크게 3개의 부분으로 나눌 수 있다.
1. 산술 논리 장치(ALU, Arithmetic Logic Unit)
실제로 연산을 담당하는 부분이다.
산술 연산(사칙 연산)과 논리 연산(AND, OR, NOT 등)을 수행한다.
프로그램 로직의 실질적인 연산은 ALU에서 이루어지게 된다.
2. 제어 장치(CU, Control Unit)
제어 장치는 명령어를 해석하고 그에 따라 여러 요소들을 제어하는 부분이다.
해석된 명령어를 통해 ALU나 메모리 등에 동작을 지시하는 제어 신호를 보낸다.
대부분의 컴퓨터의 리소스는 CU에서 관리된다.
3. 메모리 장치(Memory Unit)
메모리 장치는 아래의 2가지 부분으로 나뉜다.
A. 레지스터(Register)
CPU 내에서 데이터를 임시로 저장하는 매우 고속이지만 매우 용량이 적은 메모리이다.
레지스터는 몇 개의 부분으로 나눌 수 있다.
- Program Counter(PC)
- 다음에 실행될 명령어의 주소를 저장한다. - Intruction Register(IR)
- 현재 실행 중인 명령어가 저장되어 있다. - Accumulator
- 연산 결과를 임시로 저장한다. - Memor Address Register(MAR)
- CPU가 데이터를 읽거나 쓸 때, 해당 메모리의 주소를 MAR에 저장한다. - General Perpose Register(GPR)
- 연산 시 데이터나 중간 연산 결과를 임시로 저장하는 데 사용되는 레지스터.
B. 캐시(Cache Memory)
자주 사용되는 데이터나 명령어를 저장하여 CPU가 해당 데이터에 접근하는 시간을 줄여준다.
다X와 같은 사이트에서 CPU 스펙을 확인할 때 확인할 수도 있다.
- L1 캐시
- 가장 빠르고 용량이 적다. - L2 캐시
- L1보다 용량이 약간 크고 느리다. - L3 캐시
- 가장 용량이 크지만 가장 느린 캐시
이전엔 L2 캐시 이후론 메인보드에 붙어 나오는 경우도 있었지만,
요즈음의 캐시 메모리는 대부분 CPU 안에 포함되어 있다.
동작 원리
1. 명령 사이클(Intruction Cycle)
CPU는 다음의 사이클을 반복하며 프로그램을 실행한다.
- Fetch
- 메모리에서 명령어를 가져온다. - Decode
- 가져온 명령어를 해석해 어떤 작업을 할지 결정한다. - Execute
- 명령어에 따라 연산 등의 처리를 수행한다. - Write-back
- 연산 결과를 메모리에 저장한다.
2. 파이프라이닝(Piplelining)
파이프라이닝이란 명령어의 단계를 동시에 처리하는 것을 말한다.
만약 파이프라이닝을 사용하지 않는다면 위와 같이 명령어 하나가 완전히 실행될 때까지 대기해야 한다.
하지만 파이프라이닝을 사용하면, 겹쳐 실행해 명령어 처리 시간을 크게 단축할 수 있다.
3. 슈퍼스칼라(Superscalar)
여러 개의 파이프라인을 두어 보다 많은 명령어를 동시에 실행하는 기술이다.
일반적인 멀티 스레딩을 생각하면 좋다.
동시에 복수의 파이프라인을 통해 보다 많은 명령어가 실행되고 있음을 확인할 수 있다.
4. 분기 예측
분기 예측은 다음에 실행될 조건문이 어디로 분기할지 모르는 상태에서,
파이프라인의 일시적 중단을 방지하기 위해 다음 분기를 예측하는 기술이다.
프로세서에선 그동안의 분기 결과 기록 등을 참조하여 어떻게 분기될지 예측한다.
이는 수많은 파이프라인이 있는 현대 프로세서 아키텍처에서 성능을 위한 매우 중요한 기술이다.
만약 아직 계산이 끝나지 않은 연산 결과를 사용해야 한다면 그 결과를 기다려야 할 것이다.
하지만, 그 결과를 기다리면 파이프라인이 중단되며 그 시간만큼 낭비가 되는 것이다.
따라서 그 값을 예측하여 실제로 분기가 일어날지 아닐지 미리 예측하는 기술이 나오게 된 것이다.
분기 예측은 예나 지금이나 프로세서의 IPC 향상을 위해 항상 연구되던 분야다.
라이젠 CPU를 만드는 것으로 유명한 AMD에서도 분기 예측 개선을 통해 큰 성능 향상을 이루기도 했다.
CPU의 성능 팩터
1. 클럭
CPU의 동작 주기를 나타내는 것으로 Hz단위로 표시한다.
클럭이 더 놓을수록 그만큼 일을 더 할 수 있다는 뜻이므로 더 높은 성능을 나타낸다.
하지만 같은 클럭이라도 IPC가 다르므로 절대적인 기준은 아니다.
2. 코어 수
일꾼이 얼마나 많이 있느냐를 나타내는 것이다.
일손이 많을수록 더 많은 일들 동시에 할 수 있을 것이다.
여기서 멀티 스레딩을 얼마나 할 수 있는지 결정된다고 볼 수 있다.
3. 캐시 용량
L3 캐시의 용량을 늘려 반응 속도를 개선했다는 홍보 자료를 본 적도 있을 것이다.
자주 사용되는 명령어나 데이터를 더 빨리 가져와 처리할 수 있다면 당연히 더 효율적일 것이다.
용량이 크지 않기 때문에 눈길이 잘 가지 않을 수도 있지만 성능에 있어서 매우 중요한 요소이다.
명령어 집합 구조(ISA, Instruction Set Architecture)
``A + (B * C) - (D / E) + F``라는 작업이 있다고 하자.
CISC(Complex Instruction Set Computing)
복잡한 명령어를 한 번에 실행해 명령의 숫자를 줄일 수 있다.
CISC는 위 작업을 ``G``라는 명령 하나로 실행하게끔 할 수 있다.
하나의 명령 안에 여러 복잡한 작업이 존재한다는 것이 특징이다.
PC에 사용되는 x86 아키텍처가 CISC 구조이다.
RISC(Reduced Instruction Set Computing)
RISC는 단순하다. 하나의 명령어는 하나의 작업만 수행한다.
위 작업을 처리할 때, 사칙연산 순서에 맞게 곱하기, 더하기, 나누기 등을 하나하나 수행한다.
스마트폰에 사용되는 ARM 프로세서가 RISC 구조이다.
다음의 표를 통해 그 차이를 한눈에 볼 수 있다.
결론
CPU는 컴퓨터 시스템에 있어서 필수불가결한 핵심 역할을 수행하며, 그 중요도는 갈수록 높아지고 있다.
CPU의 구조와 그 동작 과정에 대한 이해를 통해 컴퓨터의 동작에 대한 이해를 높일 수 있으며,
보안의 측면에서도 중요하기 때문에 프로그래머가 꼭 알아야 할 지식이라고 할 수 있다.
Reference
'Camp > Standard' 카테고리의 다른 글
프로세스와 스레드 (0) | 2024.10.31 |
---|---|
컴퓨터에서의 메모리란? (0) | 2024.10.06 |
[OSI 7계층] 응용 계층 (0) | 2024.09.23 |
[OSI 7계층] 전송 계층 (0) | 2024.09.06 |
[OSI 7계층] 네트워크 계층 (0) | 2024.09.06 |