CS 지식/○ CA(Computer Architecture)

(3) 중앙처리장치 작동 원리

코르시카 2021. 6. 8. 19:30

1. 중앙처리장치란?

aka) CPU

컴퓨터 연산에서 가장 핵심적인 역할을 수행

 

> 다음의 구성으로 이루어짐

  1. 연산잔치
  2. 제어장치
  3. 레지스터 - 캐시 메모리랑은 다름

설명 링크 : link

 

 

2. 구성의 세부설명

2-1) 연산장치

산술연산과 논리연산 수행 (= 산술 논리연산장치 라고도 불림)

연산에 필요한 데이터를 레지스터에서 가져오고, 연산결과를 다시 레지스터로 보냄

(레지스터 보다 윗단, 실제 연산이 일어나는 곳)

레지스터 : 연산 in/out put의 창구같은 개념

 

2-2) 제어장치

명령어를 순서대로 실행할 수 있도록 하는 제어장치

주기억장치(RAM, ROM)에서 프로그램 명령어를 꺼내오고 해독

    → 결과에 따라 명령어 실행에 필요한 제어 신호를 기억장치, 연산장치, 입출력장치로 보냄

 

2-3) 레지스터

고속 기억장치

명령어 주소, 코드, 연산에 필요한 데이터, 연산 결과 등을 임시로 저장

용도에 따라 범용 / 특수목적 레지스터로 구분, CPU의 종류에 따라 사용가능한 레지스터 개수 및 크기가 다름

(한 중앙처리장치에 레지스터 구성은 각각 다를 수 있음, 범용 / 특수 등)

  • 범용 레지스터 : 연산에 필요한 데이터나 연산 결과를 임시로 저장
  • 특수목적 레지스터 : 특별한 용도로 사용하는 레지스터

 

 

3. 특수 목적 레지스터 특징

  • MAR(메모리 주소 레지스터) : 읽기 쓰기 연산을 수행할 주기억장치 주소 저장
  • PC(프로그램 카운터) : 다음에 수행할 명령어 주소 저장
  • IR(명령어 레지스터) : 현재 실행중인 명령어 저장
  • MBR(메모리 버퍼 레지스터) : 주기억장치에서 읽어온 데이터 OR 저장할 데이터 임시 저장
         → 연산장치에 주기 직전
  • AC(누산기) : 연산 결과 임시 저장

 

 

4. 중앙처리장치 CPU 동작 방식

4-1) 동작 과정

  1. 주기억장치는 입력장치에서 입력받은 데이터 OR 보조기억장치에 저장된 프로그램을 읽어옴
  2. CPU는 캐시 / 레지스터를 거쳐 주기억장치에 저장된 프로그램 명령어 / 입력 / 데이터를 읽어와 처리하고
    다시 주기억장치에 저장(중간 결과물 등은 캐시 / 레지스터 사용)
  3. 주기억장치는 처리결과를 보조기억장치에 저장하거나 출력장치로 보냄
  4. 제어장치 (1)~(3) 과정에서 명령어 순서대로 실행되도록 각 장치를 제어, 주기억장치에서 가져온 명령어 해독

4-2) 명령어 세트

> CPU가 실행할 명령어의 집합

연산코드(Operation Code) + 피연산자(Operand)로 이루어짐
- 연산코드 : 실행할 연산
- 피연산자 : 필요한 데이터 or 저장위치

 

4-3) 명령어 사이클

1) 정의

> 인출 / 실행 / 간접 / 인터럽트 로 구성

[CPU가 주기억 장치에서 하나의 명령어 인출 → 실행] 까지 수행하는 데 필요한 일련의 활동

2) 과정

a) 인출 사이클 / 실행 사이클에 의한 명령어 처리과정

※ PC(프로그램 카운터) 값의 증가가 중요

  1. PC에 저장된 주소를 MAR(메모리 주소 레지스터)로 전달
    ( → 중앙처리장치 - 주기억장치 사이 레지스터 의미하는 듯 )
  2. 저장된 내용을 토대로 주기억장치 주소에서 명령어 인출
  3. 인출 명령어 MBR에 저장
  4. 다음 명령어 인출을 위해 PC 값 증가
  5. MBR에 저장된 내용을 명령어 레지스터(IR)에 전달
    ( 레지스터는 CPU 산술논리장치 입구같은 곳 )
T0 : MAR ← PC
T1 : MBR ← M[MAR], PC ← PC+1
T2 : IR ← MBR

b) 인출 이후 명령어 실행

※ (a) 과정의 5번까지 이루어진 상태 → 고로 PC 증가의 필요가 없음!

T0 : MAR ← IR(Addr)
T1 : MBR ← M[MAR]
T2 : AC ← AC + MBR

 

3) 추가 자료

링크 : link

더보기

- 한 개의 클럭 펄스 동안 실행되는 기본 동작이다. 

- 한 개의 마이크로 연산 수행시간을 마이크로 사이클 타임이라 부르며,

   CPU 속도를 나타내는 척도로 사용된다.

- 하나의 명령어를 수행하기 위해 여러 개의 마이크로 연산이 수행된다.

    ☞ 하나의 명령어는 항상 하나의 마이크로 연산이 동작되어 실행된다. (X)

- Instruction을 수행하기 위해 CPU 내의 레지스터와

  플래그가 의미 있는 상태 변환을 하도록 하는 동작

- 마이크로 연산에는 전송, 산술, 논리, 시프트가 있다.

 

 

ex)

명령어를 주기억장치에서 중앙처리장치의 명령레지스터로 가져와

해독하는 것을 (인출) 단계라 하고,

이 단계는 마이크로 연산 (MAR←PC)로 시작한다.

 


Fetch Cycle

- Fetch (인출) 단계에서 명령어를 주기억장치에서

  중앙처리장치의 명령 레지스터로 가져와 해독한다.

 

MAR ← PC                // 실행할 명령어의 번지를 MAR로 전달한다.

MBR ← M(MAR)       // MAR에 위치한 메모리 내용을 MBR로 전달한다.

PC ← PC + 1            // 다음에 실행할 명령어를 위해서 PC를 1 증가시킨다.

IR ← MBR               // 메모리 내용을 IR로 전달 한다.

F ← 1 or R ← 1       // F=1이면 실행 사이클로, R=1이면 간접 사이클로 진행한다.

 

 

 

 

LDA (Load AC)

- 메모리 내용을 누산기에 적재하는 명령

 

MAR ← MBR[ADDR]                 // 실해주소를 MAR로 전송한다.

MBR ← M[MAR], AC ← 0         // 피 연산자를 읽고, 누산기를 클리어 한다.

AC ← AC + MBR                      // 누산기와 덧셈 연산을 한다.

F ← 0                                     // Fetch 사이클로 넘어간다.

 

 

 

ISZ (Increment and Skip if Zero)

- 메모리의 값을 읽고, 그 값을 1 증가시킨 후

   음수에서 시작한 그 값이 0이면 현재 명령을 건너뛰고

    다음 명령으로 이동한다.

 

MBR ← M[MAR]

MBR ← MBR + 1

M[MAR] ← MBR, if (MBR = 0) then (PC ← PC + 1)

 


참조

https://gyoogle.dev/blog/computer-science/computer-architecture/%EC%A4%91%EC%95%99%EC%B2%98%EB%A6%AC%EC%9E%A5%EC%B9%98%20%EC%9E%91%EB%8F%99%20%EC%9B%90%EB%A6%AC.html

 

중앙처리장치(CPU) 작동 원리 | 👨🏻‍💻 Tech Interview

중앙처리장치(CPU) 작동 원리 CPU는 컴퓨터에서 가장 핵심적인 역할을 수행하는 부분. '인간의 두뇌'에 해당 크게 연산장치, 제어장치, 레지스터 3가지로 구성됨 연산 장치 산술연산과 논리연산 수

gyoogle.dev

 

반응형