컴퓨터 구조 Chapter 04

김연준·2025년 7월 17일
post-thumbnail

CPU와 작동 원리

ALU (산술 논리 연산 장치)

받아들이는 정보

  • 피연산자와 제어 신호
    • 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들임
    • 받아들인 피연산자와 제어 신호로 산술 연산, 논리 연산 등 다양한 연산을 수행

내보내는 정보

  • 결과값과 플래그
    • 결과값은 일시적으로 레지스터에 저장된 후 메모리에 저장 (프로그램의 실행 속도를 위해서)
    • 플래그는 연산 결과에 대한 추가적인 상태 정보를 뜻하며, 플래그 레지스터에 저장됨

플래그 종류 및 의미

플래그 종류의미
부호 플래그연산한 결과의 부호를 나타냄
제로 플래그연산 결과가 0인지 여부를 나타냄
캐리 플래그연산 결과 올림수나 빌림수가 발생했는지를 나타냄
오버플로우 플래그오버플로우가 발생했는지를 나타냄
인터럽트 플래그인터럽트가 가능한지를 나타냄
슈퍼바이저 플래그실행 중인 모드가 커널 모드인지 사용자 모드인지 나타냄

제어장치 (Control Unit)

받아들이는 정보

  • 클럭 신호
    • 컴퓨터의 모든 부품을 일사분란하게 움직일 수 있게 하는 시간 단위
    • (모든 부품이 클럭 박자에 맞춰서 작동하지만, 한 박자마다 작동하는 건 아님)
  • 명령어
    • 명령어 레지스터로부터 해석할 명령어를 받아들이고, 해석한 뒤 제어신호를 발생시켜 수행할 내용을 알려줌
  • 플래그
    • 플래그 값을 참고하여 제어신호를 발생시켜 올바른 정보 전달 및 동작 수행 유도
  • 제어 신호
    • 제어 버스를 통해 외부로부터 전달된 제어 신호를 받아들이기도 함

내보내는 정보

  • 외부에 전달하는 제어 신호:
    메모리와 입출력장치에 전달하는 신호
  • 내부에 전달하는 제어 신호:
    ALU와 레지스터에 전달하는 신호

레지스터 (Register)

  • 프로그램의 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장됨
  • 레지스터 속 값을 관찰하면 CPU 내에서 무슨 일이 벌어지고 있는지, 어떤 명령어가 어떻게 수행되는지 알 수 있음

주요 레지스터 종류

레지스터 명설명
프로그램 카운터메모리에서 읽어들일 명령어의 주소를 저장 (명령어 포인터)
명령어 레지스터방금 메모리에서 읽어 들인 명령어를 저장하는 레지스터
메모리 주소 레지스터메모리 주소를 저장하는 레지스터
메모리 버퍼 레지스터메모리와 주고받을 값을 저장하는 레지스터
범용 레지스터데이터와 주소를 모두 저장할 수 있는 범용 레지스터
플래그 레지스터ALU 연산 결과에 따른 플래그를 저장
스택 포인터스택의 꼭대기를 가리키는 레지스터
베이스 레지스터유효 주소를 얻기 위한 베이스 값을 가지고 있는 레지스터

명령어 사이클 (Instruction Cycle)

  • 명령어들은 일정한 주기가 반복되며 실행됨 (이 주기를 명령어 사이클이라고 함)
    • 인출 사이클: 메모리에 있는 명령어를 CPU로 가지고 오는 단계
    • 실행 사이클: 제어장치가 명령어 레지스터에 담긴 값을 해석하고, 제어 신호를 발생시키는 단계
    • 간접 사이클: 실행을 위해 다시 메모리에 접근하는 단계

인터럽트 (Interrupt)

종류

  • 동기 인터럽트:
    CPU가 명령어를 수행하다가 오류 등 예외 상황에서 발생
    (예외라고도 함)
  • 비동기 인터럽트:
    입출력장치에 의해 발생.
    CPU가 지시한 작업을 완료하거나 입력을 받아들였을 때 CPU에 보내는 알림 (하드웨어 인터럽트라고도 함)

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

  1. 입출력장치가 CPU에 인터럽트 요청 신호를 보냄
  2. CPU는 실행 사이클이 끝나고 명령어를 인출하기 전, 항상 인터럽트 여부를 확인함
  3. 인터럽트 플래그를 통해 현재 인터럽트를 받아들일 수 있는지 확인
  4. 인터럽트를 받아들일 수 있다면 CPU는 지금까지의 작업을 백업
  5. CPU는 인터럽트 벡터를 참조하여 인터럽트 서비스 루틴(ISR)을 실행
  6. ISR 실행이 끝나면 백업해둔 작업을 복구하여 실행 재개
  • CPU가 인터럽트 요청을 수행하려면 플래그 레지스터의 인터럽트 플래그가 활성화되어 있어야 함
  • 정전이나 고장 등 치명적인 인터럽트는 무시할 수 없음

용어 정리

  • 인터럽트 서비스 루틴(ISR): 인터럽트를 처리하는 프로그램 (인터럽트 핸들러)
  • 인터럽트 벡터: ISR의 시작 주소 등 인터럽트 처리용 정보

예외의 종류

  • 폴트 (fault):
    예외를 처리한 직후, 예외가 발생한 명령어부터 실행 재개
  • 트랩 (trap):
    예외를 처리한 직후, 다음 명령어부터 실행 재개
  • 중단 (abort):
    심각한 오류로 프로그램 강제 중단
  • 소프트웨어 인터럽트:
    시스템 호출이 발생했을 때 나타남
profile
Live a life you will remember

0개의 댓글