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

Dayon·2023년 1월 14일
1

CS공부

목록 보기
8/16
post-thumbnail

📡 CPU 구조

CPU 구성요소

  • ALU : 산술, 논리 연산 담당
  • 레지스터 : CPU 내부의 빠른 기억장치, 특수한 용도로도 사용
  • 제어 유니트 : 명령어를 실행하면서 모든 논리회로를 차례에 맞게 구동
  • CPU 내부 버스 : CPU 내부 연결용 버스

1.  ALU

  • 제어 유니트의 지시를 받아 각종 산술연산과 논리 연산을 수행하는 산술 논리 연산 장치
  • 연산의 결과를 지정된 레지스터에 저장하고, 연산 결과의 상태를 상태 레지스터로 전달함

2.  레지스터

  • 명령어, 데이터, 연산 결과 등을 일시적으로 저장하는 가장 빠른 메모리
  • 용도에 따라 범용 레지스터특수 목적 레지스터로 구분된다.

특수 목적 레지스터 : 특별한 용도로 사용하는 레지스터

1) 명령어/데이터 처리 레지스터 : PC, MAR, MBR, IR, AC
2) 주소 지정 레지스터
3) 상태 레지스터

  • PC (Program Counter) : 다음에 실행될 명령어의 주소를 저장

  • MAR (Memory Address Register) : 접근하고자하는 메모리 주소 값 저장

  • MBR (Memory Buffer Register) : 주 기억장치에서 읽은 데이터 또는 사용할 데이터를 저장, MDR이라고도 함

  • IR (Instruction Register) : 현재 수행하고 있는 명령어를 저장

  • AC (Accumulator) : 누산기, 연산 결과 임시 저장


3.  제어 유니트

  • CPU 내에서 명령어의 처리를 총괄 제어 하는 부분

  • 주기억장치에서 명령어를 인출 → 명령어 해독 → 그 결과에 따라 명령어 실행에 필요한 제어신호를 기억장치, 연산장치, 입출력장치로 보냄 → 이들 장치가 보낸 신호를 받아, 다음에 수행할 동작을 결정

제어유니트 구성 방식

  1.  고정 배선(Hard-wired) 제어방식

    • 기계어 → 제어용 논리회로 구동

    • 일반적으로 RISC에서 사용하여 빠르다

    • 입력된 명령어를 바로 제어신호의 출력 정보로 사용

  2.  마이크로 프로그램 제어방식

    • 기계어 → 마이크로 프로그램 변환 → 마이크로 명령어 읽기 → 제어용 논리회로 구동

    • 일반적으로 CISC에서 사용하여 속도는 늦지만 많은 명령어 표현 가능

    • CPU 내에는 마이크로 프로그램들이 저장되어 있는 제어용 ROM이 별도로 존재


RISC 와 CISC
1. RISC 프로세서

  • CISC 문제점을 보안을 위해 등장한 새로운 프로세서 구조
  • 간략화된 소수의 명령어들만 지원, 주로 고정 배선 제어유니트 활용
  • 빠른 실행 속도 지원하지만 명령어가 제한적이어서 컴파일러가 매우 중요
  1. CISC 프로세서
  • 복합적인 연산들을 처리하는 다양한 종류의 명령어들을 가진 기존의 프로세서
  • 문제점 : 복수개의 마이크로 명령어를 처리하기 때문에 실행시간 증가. 다양한 종류, 길이의 명령어 해독을 위해 제어유니트의 내부 회로 복잡도 증가. 명령어 해독 시간 증가
    ⇒   순수한 RISC/CISC CPU는 거의 없으며 서로의 장단점을 섞어 사용

4.  CPU 내부버스

  • CPU 내부에서만 사용

  • 주소 버스, 제어 버스, 데이터 버스로 구성

  • 외부 부품 연결용 시스템 버스와 직접 연결되지 않음, 반드시 버퍼 레지스터 또는 시스템 버스 인터페이스를 통해 접속 ⇒ MAR, MBR



🕰️ CPU 작동원리

CPU 동작 과정

  1. 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램 읽어옴

  2. CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어온다

  3. 명령어를 처리하고 결과를 다시 주기억장치에 저장

  4. 주기억장치는 처리 결과를 보조기억장치에 저장하거나 출력장치로 보냄

  5. 제어장치는 1~3 과정에서 명령어가 순서대로 실행되도록 각 장치를 제어


명령어 세트

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

  • 연산코드 (Operation Code) + 피연산자(Operand)로 이뤄진다

    연산코드 : 실행할 연산, 피연산자 : 필요한 데이터 또는 저장위치

  • CPU는 프로그램 실행을 위해 주기억장치에서 명령어를 순차적으로 인출하여 해독하고 실행하는 과정을 반복한다.


명령어 사이클

  • CPU가 한개의 명령어를 실행하는데 필요한 전체 과정

  • CPU가 프로그램 실행을 시작한 순간부터 전원을 끄거나 오류가 발생해 중단 될때까지 반복

  • 인출, 실행, 간접, 인터럽트 사이클로 나누어진다


인출 사이클 : CPU가 기억장치로부터 명령어를 읽어오는 단계
실행 사이클 : 명령어를 실행하는 단계

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

  • 인출

    • PC에 저장된 주소를 MAR로 전달
    • 저장된 내용을 토대로 주기억 장치의 해당주소에서 명령어 인출
    • 인출한 명령어 MBR에 저장
    • 다음 명령어 인출을 위해 PC 값 증가시킴
    • MBR에 저장된 내용을 명령어 레지스터에 전달
  • 실행

    • CPU는 실행 사이클동안 명령어 코드 해독하고, 그 결과에 따라 필요한 연산들을 수행한다.


  • 인터럽트

    • 프로그램 실행중에 CPU의 현재 처리 순서를 중단시키고, 다른 동작을 수행하도록 요구하는 시스템 동작

    • 외부로부터 인터럽트 요구가 들어오면, CPU는 원래 실행중인 프로그램 수행을 중단하고, 요구된 인터럽트를 위한 인터럽트 서비스 프로그램을 먼저 수행한다.




🔗 참조한 사이트

중앙처리장치 작동 원리.html

CPU는 어떻게 작동할까?

profile
success is within reach, allow yourself time

0개의 댓글