본문 바로가기
~ 2024.03/컴퓨터 구조 + 운영체제

[컴퓨터 구조] CPU의 작동 원리

by Monett 2024. 1. 3.
반응형

혼자 공부하는 컴퓨터 구조 + 운영체제(강민철 저, 한빛미디어)를 공부하며 내용을 정리한 글 입니다.
현재 블럭의 내용은 작성자의 의견 혹은 생각이며, 틀린 내용이 있을 수 있습니다. 지적 감사드립니다.

 

ALU

ALU는 피연산자를 받아들이고, 제어 신호를 받아들여 산술 연산, 논리 연산 등 다양한 연산 수행

결과는 숫자나 문자, 주소가 될 수 있으며 레지스터에 저장한다.

 

ALU는 결과뿐만 아니라 음, 양의 플래그나 오버플로우 정보도 내보낸다.

 

내보내는 플래그의 종류

  • 부호 플래그 : 1일 경우 음수, 0일 경우 양수
  • 제로 플래그 : 1일 경우 0, 0일 경우 0이 아님
  • 캐리 플래그 : 1일 경우 올림이나 빌림
  • 오버플로우 플래그 : 1일 경우 오버플로우 발생
  • 인터럽트 플래그 : 1일 경우 인터럽트 가능
  • 슈퍼바이저 플래그 : 1일 경우 커널 모드, 0일 경우 사용자 모드

제어장치

제어 신호를 내보내고, 명령어를 해석

  • 클럭 신호 받기
  • 해석해야할 명령어 받기
  • 플래그 받기
  • 제어 버스로 전달된 신호 받기

클럭이란 컴퓨터 부품의 시간 단위로, 주기에 맞춰 동작을 수행한다. 하나의 명령어는 여러 클럭에 걸쳐 실행 가능하다.


레지스터

레지스터의 종류는 매우 다양하지만, 공통으로 포함된 8개의 레지스터는 아래와 같다.

  • 프로그램 카운터 : 명령어의 주소 저장 (명령어 포인터라고도 부름)
  • 명령어 레지스터 : 명령어를 저장
  • 메모리 주소 레지스터 : 메모리의 주소 저장
  • 메모리 버퍼 레지스터 : 값 저장
  • 플래그 레지스터 : 플래그 저장
  • 범용 레지스터 : 다양하게 사용됨
  • 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터
  • 베이스 레지스터

특정 레지스터를 이용한 주소 지정 방식

  • 스택주소지정방식 : 스택 포인터 사용
  • 변위주소지정방식 : 오퍼랜드 필드의 값과 특정 레지스터 값을 더하여 유효주소를 얻어내는 방식
    • 상대주소지정방식 : 오퍼랜드와 프로그램 카운터의 값을 더한다. 주로 분기할때 사용된다
    • 베이스 레지스터 주소 지정 방식 : 오퍼랜드와 베이스 레지스터의 값을 더한다.

명령어 사이클

하나의 명령어를 처리하는 정형화된 흐름

  • 인출 사이클 : 메모리에 있는 명령어를 CPU로 가지고 오는 단계
  • 실행 사이클 : 명령어 레지스터에 담긴 값을 해석하고 제어 신호 발생
  • 간접 사이클 : 모든 명령어가 인출, 실행 사이클 만으로 실행되지 않으며, 메모리 접근이 더 필요한 경우 간접 사이클 실행

인터럽트

명령어 사이클이 끊어지는 상황

  • 동기 인터럽트 : CPU에 의해 발생 (exception 등)
  • 비동기 인터럽트 : 입출력장치에 의해 발생. 하드웨어 인터럽트라고도 불린다.

하드웨어 인터럽트는 CPU가 주기적으로 완료를 확인하는 것이 아닌 장치의 알림을 받음으로 효율성이 좋다.

하드웨어 인터럽트의 처리 순서

  1. 입출력장치가 CPU에 인터럽트 요청 신호를 보냄
  2. 실행 사이클이 끝나고 인출 전 인터럽트 여부 확인
  3. 인터럽트 플래그를 통해 받을 수 있는지 확인
  4. 가능하다면 현재 작업을 백업
  5. CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴 실행
  6. 백업한 작업 다시 실행

인터럽트 서비스 루틴 : 인터럽트를 처리하기 위한 프로그램

인터럽트 벡터 : 인터럽트 서비스 루틴을 식별하기 위한 정보

작업들은 스택에 백업된다.

 

반응형