[CS] CPU란? | CPU의 구조

YUZAMONG·2024년 9월 9일

CS

목록 보기
1/6

중앙처리장치(Central Processing Unit, CPU)

컴퓨터의 가장 핵심적인 장치이다.
🔗 CPU 명령어 사이클에 따라 메모리(RAM)에서 명령어를 읽어 들이고, 이를 해석하여 수행하는 작업을 한다.
한 컴퓨터에 2개 이상의 CPU를 장착할 수 있으며, 이를 멀티 프로세서라고 한다.

Clock과 Hz

Clock
CPU 내부에서 시간의 흐름을 측정하고, CPU가 일정한 속도로 동작하기 위해 일정한 간격으로 공급되는 전기적 펄스이다.
Clock 한 번에 한 개의 명령이 처리된다.

Hz
주파수를 측정하는 단위로, 초당 사이클의 수를 나타낸다.
100Hz = 1초에 100회

전기적 신호가 초당 CPU에 공급되는 횟수라는 개념에서 Hz라는 단위로 CPU의 속도를 표현한다.
Hz가 높을수록 CPU는 더 많은 연산을 더 빠르게 수행할 수 있다.


CPU의 구성 요소

1. Core

CPU 역할을 수행하는 블록의 물리적인 단위로, 한 개의 CPU 칩 안에 하나 이상의 코어가 들어간다.
ex) 싱글코어, 듀얼코어, 쿼드코어, 헥사코어 ...

2. Cache Memory

RAM 보다 훨씬 빠른 메모리이다.
자주 사용되는 데이터와 명령어를 저장하고, CPU가 메모리에 접근할 때 캐시에서 데이터를 먼저 검색해 성능을 향상시킨다.

종류

  • L1 Cache: 각 코어가 독립적으로 가지며, 가장 빠름
  • L2 Cache: L1 Cache 간 공유됨
  • L3 Cache: L2 Cache 간 공유됨

용어

  • Cache Hit: 캐시 메모리에 찾는 데이터가 존재함
  • Cache Miss: 캐시 메모리에 찾는 데이터가 존재하지 않음
  • 시간적 지역성: 최근 사용된 데이터가 다시 사용될 가능성이 높음
  • 공간적 지역성: 최근 사용된 데이터 근처에 있는 데이터가 사용될 가능성이 높음

용량이 매우 작고 많은 비용이 들기 때문에 CPU가 자주 사용할 만한 데이터를 잘 예측해서 저장해야 한다. -> Cache miss를 줄이고 Hit rate를 늘려야 한다.
시간적, 공간적 지역성을 가진 데이터를 저장하면 캐시의 적중률을 높일 수 있음.

3. Bus Interface

메모리나 다른 하드웨어와의 데이터 전송을 담당하는 경로.

4. Clock Generator

Clock 신호를 생성한다.


코어의 주요 구성 요소

1. ALU(Arithmetic Logic Unit)

다양한 산술 및 논리 연산을 처리한다.

  • 산술: 덧셈, 뺄셈, 곱셈, 나눗셈 등
  • 논리: AND, OR, NOT 등의 비트 수준 연산
  1. GR을 통해 피연산자를 입력 받음
  2. CU으로부터 명령을 전달 받음
  3. 연산을 수행한 결과를 다시 GR과 Flag register에 저장함

2. 제어 장치(Control Unit, CU)

전기적 제어 신호를 발생시켜서 명령어의 순서 및 수행, 하드웨어 구성 요소들의 동작을 제어한다.

  • PC와 MAR에 저장된 주소를 바탕으로 메모리에서 명령어를 가져옴(Fetch)
  • 가져온 명령어는 IR에 저장되고, 그 명령어를 해석함(Decode)
  • 해석한 명령어에 따라 각 구성 요소에 적절한 제어 신호를 보내어 서로 어떻게 상호작용해야 하는지 지시함
  • Clock 신호를 바탕으로 각 구성요소의 타이밍을 맞추고 동기화를 유지함

제어 신호의 역할

  • 데이터 흐름 제어: 데이터의 이동 경로 제어
  • 연산 제어: ALU가 어떤 연산을 수행할지 지시
  • 명령어 순서 제어: 프로그램의 흐름 제어
    • Flag register로 분기 명령어의 수행이나 연산의 결과에 따른 플래그를 받아 흐름에 반영함
  • 입출력 장치 제어: 입출력 장치와의 상호작용을 관리

3. Register

CPU 내부에 가장 빠른 저장 장치로, 프로그램 속 명령어와 데이터는 실행 전후로 레지스터에 저장된다.
CPU는 연산을 수행하기 위해 데이터를 자주 읽고 써야 하는데 CPU <-> 메모리의 전송 속도가 CPU <-> 레지스터 보다 느리기 때문에 메모리와 직접 데이터를 주고받지 않고 레지스터를 사용한다.

32Bit / 64Bit 컴퓨터라는 용어에서 비트는 레지스터의 비트 수를 말한다. (저장 가능한 공간의 크기)

📍 CPU마다 레지스터의 종류가 매우 다양하기 때문에, 아래는 많은 CPU가 공통적으로 포함하고 있는 레지스터들을 다룬다.

1. PC(Program Counter)

  • 메모리에서 읽어 들일 명령어의 주소를 저장하는 레지스터
  • CPU가 명령어를 실행할 때마다 PC가 자동적으로 증가하여 다음 명령어의 위치를 가리킴
  • 분기 명령어나 함수 호출 같은 명령어가 수행되면 그에 따라 PC가 변경될 수 있음
  • CPU가 프로그램을 순차적으로 실행하는데 굉장히 중요한 역할을 함

2. 명령어 레지스터(Instruction Register, IR)

  • 현재 CPU가 해석하고있는 명령어를 저장하는 레지스터
  • 명령어가 메모리에서 읽히면 먼저 이 레지스터에 저장되고, CPU는 이곳에서 명령어를 읽어 해석하고 실행함

3. 메모리 주소 레지스터(Memory Address Register, MAR)

  • 메모리의 주소를 저장하는 레지스터
  • 메모리와의 안정적이고 정확한 통신에 사용하기 위한 목적으로 저장함
  1. CPU가 메모리의 특정 위치에서 데이터를 읽으려고 함
  2. 메모리가 저장된 주소는 먼저 MAR에 저장됨
  3. 다시 MAR을 사용하여 해당 위치를 찾음

4. 메모리 버퍼 레지스터(Memory Buffer Register, MBR)

  • 메모리와 주고받을 데이터와 명령어를 저장함
  1. CPU가 메모리에서 데이터를 읽으려고 함
  2. 데이터는 먼저 MBR에 저장됨
  3. CPU는 MBR을 통해 데이터를 가져옴
  • 반대로 CPU가 메모리에 데이터를 쓸 때도 이 과정을 거침

5. 일반 목적 레지스터(General Purpose Register, GR)

  • 데이터 임시 저장과 연산을 위한 레지스터
    • 고전적인 CPU에서 중요한 역할이었던 누산기(Accumulator)의 역할

6. 플래그 레지스터(Flag Register)

  • CPU가 최근에 수행한 연산에 대한 정보와 CPU의 현재 상태를 나타내는 플래그를 저장함
    • CPU가 복잡한 연산을 수행하거나 프로그램 흐름을 제어하는 데 사용됨
    • 연산 결과가 양수 또는 음수인지, 오버플로우가 발생했는지 등
  • CPU의 상태를 나타내는 용도로 Status Register가 따로 있을 수 있음

7. 스택 포인터(Stack Pointer)

  • 스택의 가장 위를 가리키는 레지스터로, 채워져있는 만큼의 가장 상단을 가리킴
  • 스택의 상태를 관리하는 데 필수임

Reference

https://velog.io/@underlier12/컴퓨터구조-09-CPU-내부-구조와-레지스터
https://wikidocs.net/63816
https://hwannny.tistory.com/96

profile
유자맛 찹쌀유과

0개의 댓글