본문 바로가기
컴퓨터구조

[키워드로 풀어본 컴퓨터구조] 01. CPU(Central Processing Unit)

by Lizardee 2023. 7. 9.
컴퓨터의 핵심 CPU(Central Processing Unit)와 폰노이만 구조

▶ 컴퓨터 시스템: 폰노이만 구조

  • CPU
  • 메모리
  • 디스크
  • I/O

- 명령어/데이터 로드/실행/저장을 순차적으로 수행한다.

- 데이터/프로그램 메모리를 하나의 버스로 접근한다.

 

폰노이만 구조는 중앙처리장치라는 것이 있고, 이 중앙처리장치를 통해서 연산을 수행하게 되는 구조이다. 이 CPU(중앙처리장치)는 각종 연산을 수행하고 기억장치에 기억되어 있는 명령어들을 수행하는 컴퓨터 시스템을 이루는 핵심 부품이다.

 

 

CPU의 속도 헤르츠와 Clock

CPU는 수를 계산하는 칩으로 이해하면 되는데, 그 원리는 덧셈의 원리와 같다.

 

대개 컴퓨터의 성능을 CPU의 속도, 메모리 용량으로 표현할 수 있는데, CPU의 속도 단위가 헤르츠(Hz)이다.

Hz라고 하면 통신 분야에서 사용되는 주파수와 같은 의미인데, 주파수라는 것이 1초에 몇 번이나 진동하는가라는 의미이다. 1헤르츠는 1초에 한 번 왕복 운동이 반복된다는 의미이다. 예를 들어 100Hz는 어떠한 현상이 1초에 100번을 반복 혹은 진동됐다는 의미이다.

CPU가 일정한 속도로 동작하기 위해서는 일정한 간격으로 전기적 펄스를 공급하는데, 이 전기적 신호가 초당 CPU에 공급되는 횟수라는 개념에서 Hz라는 단위를 쓴다.

 

이 시스템 내의 CPU에 전기적으로 공급되는 신호를 Clock이라고 하는데, 이것은 주기적으로 일정한 시그널을 보내 주는 칩이다.

Clock에서는 일정 볼트로 주기적으로 신호를 발생한다. 그러면 CPU는 이 신호를 받고 데이터를 주거나 받고 처리하게 된다. 이 신호 한 번에 의해서 CPU에서 한 개의 명령이 처리된다.

이 반복적인 신호가 들어올 때마다 명령어를 수행하기 때문에 빠르게 들어온다는 것은 결국 빠른 속도의 처리 능력을 갖는 시스템을 의미하는 것이다. CPU의 속도를 Hz로 나타내고, 이 Hz가 높으면 속도가 빠른 성능의 CPU가 되는 것이다.

 

 

CPU의 구성도

CPU 내부의 기본 구조

  • 산술/논리연산장치(ALU): 덧셈을 수행하는 것
  • 제어장치: 시그널을 통해서 데이터 흐름을 통제하는 것
  • 레지스터: CPU 내부의 메모리

 

 

CPU의 내부 구성 산술 논리연산장치(ALU)

ALU에서의 산술 연산 실행

▶ 산술논리연산장치(ALU)

산술논리연산장치(ALU: Arithmetic Logic Unit)는 산술적인 연산과 논리적인 연산을 담당하는 장치로 가산기, 보수기, 누산기, 기억 레지스터, 데이터 레지스터 등으로 구성된다.

 

캐시/메모리로부터 읽어 온 데이터는 레지스터(Register)라는 CPU 전용의 기억 장소에 저장되면, ALU는 레지스터에 저장된 데이터를 이용하여 덧셈, 곱셈 등과 같은 산술 연산을 수행한다.

부동소수연산장치(FPU)와 정수연산장치, 논리연산(AND, OR 등)장치 등이 있다.

 

 제어장치

CPU의 내부구성 요소 중 제어장치는 CPU가 자신 및 주변기기들을 컨트롤하는 장치로,

  • PC(Program Counter): 프로그램의 수행 순서 제어
  • IR(Instruction Register): 현재 수행중인 명령어의 내용을 임시 기억
  • Instruction decoder: Instruction register에 수록된 명령을 해독하여 수행될 장치에 제어신호를 보냄

 

** 제어장치 구현 방식

  • Hardwired: 제어 신호가 Hardwired Circuit에 의해서 생성되도록 하드웨어 구성
  • Micro Program: 발생 가능한 제어 신호들의 조합을 미리 구성하여 ROM에 저장하였다가 필요 시 신호를 발생시키는 software 방식

 

 

CPU의 내부 구성 레지스터

16bit Machine의 레지스터의 구조

▶ 레지스터(Register)

: 중앙처리장치(CPU) 내부에 있는 기억장치

  • General-Purpose Register: 산술 연산 논리장치에 의해 사용됨
  • Dedicated-Purpose Register: PC 등 특수 목적에 사용됨

 

▶ 레지스터의 종류

  • IR(Instruction Register): 현재 수행 중에 있는 명령어 부호를 저장하고 있는 레지스터
  • PC(Program Counter): 명령이 저장된 메모리의 주소를 가지는 레지스터
  • AC(Accumulator): 산술 및 논리연산의 결과를 임시로 저장하는 레지스터

 

 

명령어 구조

명령어 구조

▶ 명령어

: 시스템이 특정 동작을 수행시키는 작은 단위

** 명령어 = 동작 코드(Op-code) + 오퍼랜드(Operand)

  • 동작 코드(Op-code): 각 명령어의 실행 동작을 구분하여 표현
  • 오퍼랜드(Operand): 명령어의 실행에 필요한 자료나 실제 자료의 저장 위치

 

 

명령어 수행 과정
  1. 읽기(Fetch Instruction): 메모리에서 명령을 가져온다.
  2. 해석(Decode Instruction): 명령을 해석한다.
  3. 실행(Execute Instruction): 명령을 수행한다.
  4. 기록(Write Back): 수행한 결과를 기록한다.

▶ Fetch: 명령어를 수행하기 위하여 메모리에서 명령어를 가져오는 것

▶ Execute: 명령어 수행

  • Program Counter(PC)는 Fetch할 다음의 명령어 주소를 갖고 있다.
  1. 프로세스는 PC가 가리키는 주소위치에서 명령어를 가져오면서 PC를 증가시키고, 명령문은 Instruction Register(IR)에 Load된다.
  2. Load된 명령어는 수행 과정이 진행되는데, 명령어를 수행하는 Execute Cycle Fetch 과정에서 가져온 명령어를 실제 ALU(가산기)에서 처리하게 된다.

명령어 호출 사이클(Fetch), 명령어 수행 사이클(Execute)

 

 

명령어 처리 방식: RISC와 CISC

RISC와 CISC 구조에 따른 명령 처리 방식

▶ RISC(Reduced Instruction Set Computer)

: 컴퓨터 내부적으로 사용하는 명령어 세트를 단순화시켜서 처리하는 구조

--> 한 클록에 한 개의 명령을 수행한다.

 

 CISC(Complex Instruction Set Computer)

: 하나의 기능에 해당하는 하나의 명령이 있음

--> 복합 명령어(Complex Instruction) 수행을 위해서는 내부적으로 여러 사이클의 수행을 하게 된다.

 

 


RISC 한계를 극복하는 EPIC(Explicitly Parallel Instruction Computing)

RISC 기술은 여러 개의 명령어를 여러 개의 실행 유닛으로 동시에 실행하는 것이 핵심이다.

프로그램 코드의 수행은 선형으로 진행되고, 실행 위치가 중간 조건에 따라 바뀌는 분기가 발생하는 문제가 빈번하고, 이전의 실행 결과에 의해 다음 연산이 연계되어 진행되는 경우가 많다. RISC 방식은 한계가 존재하는데, 기존의 병렬 처리 기법이 프로세서에 의해서만 이루어지기 때문이다.

 

소프트웨어에서 미리 병렬 처리에 적합하도록 프로그램을 만들어 준다면 병렬 처리 효율을 극대화할 수 있게 되는 명시적인 병렬 처리 방식인 EPIC가 필요하다.

 

EPIC(Explicitly Parallel Instruction Computing)는 HP와 Intel이 공동으로 정의하고 설계한 64bit 마이크로프로세서용 명령어 셋이다.

32bit CISC 및 RISC 마이크로프로세서 아키텍처의 32bit 레지스터, 분기 예측, 메모리 지연, 암시적 병렬 처리 등의 문제를 해결하기 위한 설계 방식으로, 최대 128개의 일반 및 부동 소수점 단위 레지스터를 제공하고,

계산 작업을 수행하기 위하여 병렬 처리 과정이 소프트웨어를 기계어로 번역하는 과정에서 명확하게 지정된 병렬 처리 명령어를 사용한다. 즉, 컴파일 시에 병렬 실행 가능한 명령어를 모아 실행 파일 생성 후, 프로그램 생성 시 병렬 처리가 가능하다는 의미이다.