CPU(정의와 구성)

권태형·2023년 8월 22일
0

지식정리

목록 보기
71/72
post-thumbnail

이번 포스팅에서는 컴퓨터의 핵심 두뇌인 CPU에 대해서 알아보자.

CPU란?

Central Processing Unit의 약자로, Computer system에서 연산과 제어를 수행하는 가장 핵심이 되는 부품이다.
컴퓨터의 모든 작업은 CPU를 통해서 이루어지고, 사용자의 명령을 해석하고 실행하는 역할을 수행한다.


CPU구성

CPU는 산술논리연산장치(ALU), 제어장치(CU), 레지스터(register)로 구성되어 있다.


1. 산술논리연산장치(ALU: Arithmetic and Logical Unit)

ALU는 컴퓨터의 대부분의 계산을 도맡아 수행하는 연산만을 위한 장치이다.

Arithmetic and Logical Unit의 약자로 이름 그대로 Arithmetic: 산술(+,-,*,/), Logical: 논리(=,<,>) 연산을 하며 결과를 도출해 낸다.

ALU의 연산에 필요한 정보

💡ALU의 기능을 우리 뇌와 연관지어 연습장에 적힌 1+2를 연산하는 과정을 보자.

우리도 연산을 하기 위해서는 지시를 하는 뇌(CU)에서 어떤 연산을 하라는 지시(control signal)가 있어야 하고, 연산을 하는 뇌(ALU)에서는 연습장(resgister)에 적힌 1과 2(data)를 연산하고, 끝냈을 때 나오는 결과(result)를 다시 연습장(resigster)에 적는다.

조금 다른점은 컴퓨터는 0과1로 만들어진 데이터를 읽기 때문에 음수부호(-)를 표현하지 못한다. 이러한 연산결과에 대한 부가 정보를 깃발(flag)라는 이름을 가진 데이터 덩어리로 구분짓는다.

flag의 종류

플래그 종류의미예시(연산결과)
부호 플래그연산한 결과의 부호를 나타냄1일 경우 음수, 0일 경우 양수
제로 플래그연산 결과가 0인지 여부를 나타냄1일 경우 0, 0일경우 0이 아님
캐리 플래그연산 결과 올림수나 빌림수가 발생했는지 나타냄1일 경우 발생, 0일 경우 미발생
오버플로우 플래그오버플로우의 발생 여부를 나타냄1일 경우 발생, 0일경우 미발생
인터럽트 플래그인터럽트가 가능한지를 나타냄1일 경우 가능, 0일 경우 불가능
슈퍼바이저 플래그어떠한 모드를 사용 중인지 나타냄1일 경우 커널모드, 0일경우 사용자모드
  • 🎈용어 정리
    • 오버플로우 : 계산결과가 레지스터의 용량보다 커질경우
    • 인터럽트 : 프로그램 실행 중 CPU의 현재 처리 순서를 중단하고 다른 동작을 수행하도록 요구하는 동작
    • 커널모드 : 커널 모드는 운영체제의 핵심 기능을 수행할 수 있는 모드. 시스템 자원에 대한 무제한 접근 권한을 가지며, 다양한 프로세스들을 관리하고 하드웨어 리소스를 제어할 수 있음
    • 사용자모드 : 사용자 모드는 일반 응용 프로그램이 동작하는 모드로, 제한된 시스템 자원 접근 권한을 가지는 모드

ALU의 구성

ALU의 구성은 설계된 ALU의 아키텍처나 구현 방식에 따라서 내부구성이 달라진다.
일반적으로 대부분 사용되는 ALU의 구성내용 몇가지에 대해서만 알아보자

  1. 가산기(Adder): 2진수 덧셈연산을 위한 회로
  2. 보수기(Complementer): 2의 보수 연산(음수 값을 표현, 뺄셈연산)을 수행하기 위한 회로.
  3. 누산기(ACCumulator): 중간 결과를 저장하고 다음 연산에 사용하기 위한 회로
  4. PSW(Program Status Word): 명령어 실행 중에 발생하는 CPU의 상태 정보를 저장하기 위한 레지스터
  5. 시프터(Shifter): 비트 시프트 연산을 수행하기 위한 회로
  6. 비교기(Comparator): 두 값의 비교 연산을 수행하기 위한 회로

2. 제어장치 (Control Unit)

CU는 레지스터 사이의 데이터 전송을 감시하고 ALU의 동작을 지시하는 장치이다.
전체 컴퓨터 시스템의 작동을 통제 지시하는 장치로, 적정한 순서로 명령을 꺼내고, 각 명령을 해석하여 그 해석에 따라서 ALU나 메모리 등에 필요한 신호를 보낸다.

CU 동작에 필요한 정보

CU는 우리 생체가 바이오리듬이 있듯이, 컴퓨터의 모든 부품이 일사불란하게 움직일 수 있게 하는 시간의 단위인 클럭주기 신호를 받는다. 이 신호의 주기를 바탕으로 동작한다.

IR(instruction register)에서 명령어를 받아서 해석하여 CPU내부(ALU, register)나 외부(Bus를 통한 memory나 I/O Unit)에 제어신호를 보내게 된다.


3. 레지스터(Register)

레지스터는 한 비트를 저장할 수 있는 플립플롭의 모임으로, CPU 내부에 있는 소규모의 임시 저장 장치이다.

저장공간들 (SSD, HDD, SRAM, DRAM 등등 ) 중 가장 빠른 속도를 가지며 DRAM과 같이 휘발성 저장 장치이다.

레지스터의 종류

CPU 내부에는 여러가지 종류의 레지스터가 존재하고, 각기 다른 역할을 가진다.
여기서 CPU내부는 ALU 와 CU 내부도 포함한다.

  1. Program Counter(PC)

  2. Instruction Register(IR)

  3. Memory Address Register(MAR)

  4. Memory Buffer Register(MBR)

  5. Flag Register(FR)

이 외에도 Data Register, Index Register, Base Register 등 여러가지 레지스터가 존재한다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글