콤퓨타

[컴퓨터구조] CPU의 구조와 기능 - 1

찹쌀동수육 2021. 11. 1. 01:02

1. CPU의 기본구조

  - CPU의 기능

   = CPU는 명령어 인출과 명령어 해독를 모든 명령어에 대해서 공통적으로 수행한다.

   = CPU는 데이터 인출, 데이터 처리, 데이터 저장을 명령어에 따라 필요한 경우에 수행한다. 

    - 명령어 인출(Instruction Fetch)

     = 기억장치로부터 저장된 명령어를 읽어오는 과정

    - 명령어 해독(Instruction Decode)

     = 수행해야할 동작을 결정하기 위해서 명령어를 해독하는 과정

    - 데이터 인출(Data Fetch)

     = 명령어의 실행을 위해서 데이터가 필요한 경우, 기억장치 또는 입출력장치로부터 데이터를 읽어오는 과정

    - 데이터 처리(Data Process)

     = 데이터에 대한 산술적, 논리적 연산을 수행하는 과정

    - 데이터 저장(Data Store)

     = 데이터 처리 과정을 거치고 얻어진 결과를 저장하는 과정

 

 

  - CPU의 기본 구조

CPU의 기본 구조

= CPU는 산술논리연산장치, 레지스터 세트, 제어 유닛으로 구성되어있다.

    - 산술논리연산장치(Arithmetic and Logical Unit : 이하 ALU)

     = ALU는 산술 연산과 논리 연산들을 수행하는 회로로 이루어진 하드웨어 모듈이다.

     = 여기서 말하는 산술 연산은 사칙연산을 의미한다.

     = 여기서 말하는 논리 연산은 AND, OR, NOT, XOR 등을 의미한다.

    - 레지스터(Register)

     = 엑세스 속도가 가장 빠른 기억장치로 특수목적용 레지스터와 일반목적용 레지스터로 나뉜다.

    - 제어 유닛(Control Unit)

     = 제어 유닛은 명령어를 해석하고 실행하기 위한 제어 신호들을 순차적으로 발생시키는 하드웨어 모듈이다.

    + CPU 내부 버스 (CPU Internal Bus)

     = ALU와 레지스터 간에 데이터 이동을 위한 데이터 선과 제어 유닛으로부터 발생되는 제어신호 선으로 구성된 내부

        버스이다. 외부의 시스템 버스와 직접 연결되지 않으며 버퍼 레지스터, 시스템 버스 인터페이스 회로 등을 통해서

        시스템 버스와 접속한다.

 

2. CPU의 명령어 실행 

  - 명령어 사이클(Instruction Cycle)

   = 명령어 사이클은 CPU가 1개의 명령어를 실행하는 전체 처리 과정을 의미하며, CPU가 프로그램 실행을 시작한 순간

      부터 전원이 종료되거나 회복 불가능한 오류가 발생하여 중단될 때까지 반복하는 것을 의미한다.

   = 명령어 사이클은 2개의 부사이클(SubCycle)로 분리한다.

    - 인출 사이클(Fetch Cycle)과 실행 사이클(Execution Cycle)로 분리한다.

     = 인출 사이클은 CPU가 기억장치에서 명령어를 읽어오는 단계

     = 실행 사이클은 명령어를 실행하는 단계 

   = 명령어 사이클은 일반적으로 프로그램 실행 -> 명령어 인출 -> 명령어 실행 -> 중단 또는 명령어 인출단계로 회귀

      하는 사이클을 가진다.

  - 명령어 실행에 필요한 레지스터

   = 명령어 실행에는 프로그램 카운터, 누산기, 명령어 레지스터, 기억장치 주소 레지스터, 기억장치 버퍼 레지스터가

      존재한다.

    - 프로그램 카운터 (Program Counter : 이하 PC)

     = PC는 다음 인출에 필요한 명령어 주소를 일시적으로 가지고 있는 레지스터이다.

     = 명령어가 인출된 다음에는 자동으로 한 명령어의 크기만큼 증가한다.

     = 분기(Branch) 명령어가 실행되는 경우에는 목적지 주소를 갱신하게 된다.

     => PC는 다음에 인출할 명령어의 주소를 가지고 있는 레지스터.

    - 누산기 (Accumulator : AC, ACC 이하 ACC)

     = 누산기는 데이터를 일시적으로 저장하는 레지스터로 연산 결과를 저장하는 것이 일반적이다.

     = 레지스터의 크기는 CPU가 한번에 처리 가능한 워드(Word)단위와 동일하다.

    - 명령어 레지스터 (Instruction Register : 이하 IR)

     = IR은 가장 최근에 인출된 명령어 코드를 저장하는 레지스터이다.

    - 기억장치 주소 레지스터 (Memory Address Register : 이하 MAR)

     = MAR은 PC에 저장된 명령어 주소가 시스템 주소 버스로 출력되기 전에 일시적으로 저장하는 주소 레지스터이다.

    - 기억장치 버퍼 레지스터 (Memory Buffer Register : 이하 MBR)

     = MBR은 기억장치에 저장할 데이터 또는 기억장치에서 읽어온 데이터를 일시적으로 저장하는 버퍼 레지스터이다.

 

레지스터가 포함된 CPU의 구조

  - 인출 사이클(Fetch Cycle)

   = 인출 사이클의 마이크로연산에 대해서 알아보자.

   = 인출 사이클은 기억장치에 존재하는 명령어를 불러오고, IR에 저장하는 과정을 거친다.

   

인출 사이클의 과정

   = 인출 사이클은 다음과 같이 진행된다. CPU 클럭에 맞춰 1회에 진행되는 과정이다.

 

  - 실행 사이클(Execution Cycle)

   = 실행 사이클은 CPU가 해당 사이클 동안 명령어 코드를 해독하고 필요한 경우 연산을 수행한다.

   = 실행 사이클은 데이터 이동, 데이터 처리, 데이터 저장, 프로그램 제어 등의 연산을 한다.

    - 데이터 이동 : CPU와 기억장치 또는 CPU와 입출력장치 간에 데이터가 이동하는 연산

    - 데이터 처리 : 데이터에 대해서 산술, 논리 연산을 수행하는 연산

    - 데이터 저장 : 연산 결과로 얻은 데이터 또는 입력 장치에서 읽어온 데이터를 기억장치에 저장하는 연산

    - 프로그램 제어 : 프로그램의 실행 순서를 결정하는 연산

 

  - 기본적인 명령어 구성

   = 기본적으로 명령어는 Operation Code와 Operand로 나뉜다.

   = Operation Code는 CPU가 수행할 연산을 지정하는 부분이고, Operand는 명령어 실행에 필요한 데이터가 저장된

      주소로 이루어져 있다.