[CS] CPU (Central Processing Unit)

sarang_daddy·2023년 1월 10일
0

컴퓨터 구매에서 가정 먼저 고려하는게 CPU다.
(게임에 중요하.. 가성비가.. i5 냐 i7 이냐.. 요즘은 AMD지..킹갓 리사 수)
보통은 컴퓨터의 뇌라고만 생각하던 CPU에 대해서 간단히 이해해보자.

컴퓨터 구조

컴퓨터의 핵심 구조로는 CPU, 기억장치, 입출력장치로 구성되어 있다.
위 3가지 핵심구조를 메인보드에 연결하여 시스템 버스라는 내부 통로를 통해서 정보를 주고 받는 형태가 컴퓨터의 구조가 된다.

  • 그림출처 : 코드스쿼드
  • CPU : 입력되는 프로그램 명령을 하나씩 가져와서 실행하고, 결과를 메모리에 기록하거나 출력한다.
  • 기억장치(Memory) : CPU가 처리할 명령어를 포함하는 프로그램 로직과 다양한 데이터 값을 기록한다.
  • 입출력장치(I/O) : 컴퓨터 외부에 연결되어 컴퓨터 내부의 정보와 교환할 수 있도록 도와주는 역할을 한다.

CPU 구조

Central Processing Unit의 약자로 중앙처리장치라고 하며 컴퓨터에서 명령어를 수행하고 데이터를 처리하는 장치로 프로그램이 수행되는 전반적인 과정을 제어하는 역할을 한다.

Register(레지스터)

Register는 중앙처리장치(CPU) 내부에 있는 기억장치이다. 주로 산술 연산 논리장치에 의해 사용되는 범용 레지스터(General-Purpose Register)와 PC 등 특수 목적에 사용되는 전용 레지스터(Dedicated-Purpose Register)로 구분할 수 있다.

- PC

Program Counter로 다음에 인출(Fetch)될 명령어가 있는 주소를 가지고 있는 레지스터다.

- IR

Instruction Register로 가장 최근에 인출된 명령어가 저장되어 있는 레지스터다.

- MAR

Memory Address Register로 PC에 저장된 명령어 주소가 사용되기 전에 일시적으로 저장되는 주소 레지스터를 뜻한다.

- MBR

Memory Buffer Register로 기억장치로 쓰일 데이터 혹은 기억장치로부터 읽힐 데이터를 임시로 저장하는 레지스터를 뜻한다.

ALU(산술논리연산장치)

산술논리연산장치는 산술적인 연산과 논리적인 연산을 담당하는 장치로 캐시나 메모리로부터 읽어 온 데이터를 레지스터(Register)라는 CPU 전용의 기억장소에 저장되며, ALU는 레지스터에 저장된 데이터를 구성된 논리회로를 이용하여 덧셈, 곰셈 등과 같은 산술 연산을 수행한다.

- 논리회로

Controller (제어장치)

중앙처리장치 내부에서 일어나는 모든 동작을 제어하고 관리하는 장치로 기억장치에서 명령을 읽고 해석한 다음 해석된 결과에 따라 명령을 수행하기 위한 제어 신호를 만든다.

CPU 역할

CPU는 명령어를 인출하여 해독하고, 실행하는 3단계로 이루어진다. (실제로는 더욱 복잡한 방식으로 구성되나 기본적인 3단계만 이해해보고자 한다.)

명령 파이프라인

파이프라인은 CPU 클럭마다 Fetch, Decode, Execute를 순차적으로 반복해서 실행하는 것을 의미한다.

  • 인출 단계(Instruction Fetch Stage) : 명령어를 기억장장치로부터 인출하는 과정
  • 해독 단계(Instruction Decode Stage) : 해독기를 이용해 인출된 명령어를 해석하는 과정
  • 실행 단계(Instruction Execution Stage) : 해석된 결과에 따라 지정된 연산을 수행하는 과정

  • 자료출처 : 코드스쿼드

명령어

컴퓨터의 명령어는 CPU가 한번에 처리할 수 있는 비트 수의 크기(Word)로 정의 된며 필드(Field)라고 부르는 몇 개의 비트 그룹으로 나누어진다. 이는 연산 코드(Operation Code)와 오퍼랜드(Operand)필드로 구성된다.

앞에 설명한 Fetch, Decode, Execute는 명령어를 처리하기 위한 처리 단계일 뿐 CPU가 처리하는 명령어가 아니다

  • 연산코드 : 처리해야할 연산의 종류로 명령어를 표현한다.
  • 오퍼랜드 : 연산코드에서 결정된 명령을 수행할 대상이 되는 데이터 혹은 데이터가 저장된 주소를 가리킨다.

전체 bit는 16으로 정해져 있지만, 연산코드 및 오버랜드는 CPU에서 수행될 연산 종류의 수에 따라 비트의 수가 바뀔 수 있다.


참고자료
참고자료
참고자료

profile
한 발자국, 한 걸음 느리더라도 하루하루 발전하는 삶을 살자.

0개의 댓글