꼬물꼬물

CPU 작동 원리 본문

코딩/CS

CPU 작동 원리

멩주 2022. 9. 20. 04:27

최상위 레벨에서 본 컴퓨터 구성 요소

  • 중앙처리장치: 프로그램 실행하며 컴퓨터의 모든 동작 제어
  • 주기억장치: 프로그램과 데이터 저장
  • 입출력장치: 외부세계와 데이터 전송 담당
  • 시스템 버스: 구성요소 연결

CPU란? Central Processing Unit(중앙 처리 장치)

  • 프로그램을 실행하기 위해 메인 메모리에서 명령어를 인출하여 해독하고 실행한다.
  • 연산: 덧셈, 뺄셈, 곱셈 등의 산술 연산과 논리곱, 논리합, 부정 등의 논리 연산 수행
  • 제어: 명렁어를 순서대로 실행할 수 있도록 제어
  • 저장: 연산에 필요한 데이터, 결과, 명령어 주소 등을 임시로 저장

 

CPU 구조

 

레지스터(Register) / 제어장치(Control Unit) / 연산장치(Arithmetic Logit Unit)

  • 레지스터
    • CPU 내의 메모리로 명령어 주소, 코드, 데이터 등을 임시로 저장한다.
    • 중앙처리장치 내부의 저장장치
  • 제어장치
    • 중앙처리장치 안에서 명령어 해독하고 제어신호 생성
  • 연산장치(산술논리연산장치) 
    • 산술 및 논리 연산 수행

 

레지스터(Register)

레지스터 종류

프로그램 카운터(PC): 다음에 수행할 명령어의 주소 저장

명령어 레지스터(IR): 현재 실행 명령어 저장

메모리 주소 레지스터(MAR): 연산 수행에 필요한 데이터(주기억장치)의 주소 저장

메모리 버퍼 레지스터(MBR): 메모리에서 읽어온 데이터나 저장할 데이터를 보관하는 버퍼 레지스터 Mem[MAR] <- MBR

 

프로그램의 실행

명령어 사이클

컴퓨터는 인출 단계(fetch stage)와 실행단계(execute stage)를 반복한다

  • 인출 단계: 주기억장치에서 명령어를 중앙처리장치로 가져온다
  • 실행 단계: 중앙처리장치에서 명령어를 해독하고 실행한다.

 

1. CPU(중앙처리장치)

  • 실행
    • 인출단계: 중앙처리장치는 주기억장치에서 명령어 하나를 가져온다.
      • 필요한 구성 요소: PC, IR
      • 동작: IR ← Mem[PC], PC ← PC + [명령어의 길이]
    • 실행 단계: PC와 IR에 저장되어 있는 명령어를 해독해 실행
      • 필요한 구성 요소: 제어장치(CU), 레지스터, 연산기(ALU)
      • 동작: 명령어마다 수행 동작이 다르다
  • 명령어 유형
    • 데이터 전달: 레지스터, 주기억장치, 입출력장치
    • 데이터 처리: 산술논리연산 수행
    • 프로그램 제어: 명령어의 실행 순서 변경(pc값 변경)

1-1. 제어장치

  • 기능
    • 순서 제어: 명령어 사이클로 프로그램 진행
    • 동작 제어: 명령어가 의도하는 동작이 실행되도록 제어신호 생성해 컴퓨터의 구성 요소 제어

1-2. 연산장치(연산기)

  • 데이터 처리 명령어 담당
  • 명령어를 해독하여 연산기가 수행할 연산을 선택하는 제어신호 생성

1-3. 레지스터

  • 중앙처리장치의 내부 기억장치
  • 프로세서 종류마다 레지스터의 수와 기능이 다르다.
  • 종류
    • 제어용 레지스터: cpu가 순서제어 용도로 사용 (pc, ic, 상태레지스터, mar, mbr)
    • 명령어 실행용 레지스터: 어셈블리어 프로그래머가 직접 사용(data/address/범용 레지스터)

 

 

 

2. 주기억장치(Main Memory)

프로그램과 데이터를 저장하는 거대 1차원 배열

  • 중앙처리장치가 기억장치 엑세스하는 방법
    • 적재(load/읽기): REG <- Mem[주소]
    • 저장(store/쓰기): Mem[주소] <- REG 
  • 단어(word)
    • 중앙처리장치가 한번에 엑세스하는 데이터 크기
    • 일반적으로 8의 배수

 

3. 입출력 장치(I/O device)

프로그램과 데이터를 공급하고 처리한 데이터를 외부로 출력

 

CPU 동작 과정

  1. 주기억장치가 입력장치에서 받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어옴 (인출)
  2. CPU는 프로그램을 실행을 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 주기억장치에 저장(실행)
  3. 주기억장치는 결과를 보조기억장치에 저장하거나 출력장치로 전송
  4. 제어장치는 위의 과정에서 명령어가 순서대로 실행되도록 각 장치 제어

 

명령어의 구성요소와 종류

  • 명령어: 컴퓨터가 수행할 일을 어셈블리어 혹은 이진수 기계 코드로 표현한것
    • 동작코드(operation code) + 오퍼랜드(operand/ 피연산자)

명령어 형식

 

  • 오퍼랜드 유형
    • 즉치 데이터: 명령어에 유효 데이터 포함
    • 레지스터 명: 레지스터의 값이 유효 데이터
    • 기억장치 주소: 기억장치 해당 주소의 값이 유효 데이터
    • 입풀력 포트: 입출력 포트의 값이 유효 데이터

명령어 예

  • 명령어 집합

 

'코딩 > CS' 카테고리의 다른 글

필터(Filter)와 인터셉터(Interceptor)  (0) 2022.11.01
페이지 교체 알고리즘  (0) 2022.11.01
JDBC, SQL Mapper, ORM  (0) 2022.09.05
Day2 질문  (0) 2022.04.25
HTTP/HTTPS  (0) 2022.04.25