[혼공컴운] 4-1, 4-3 CPU의 작동원리

Evie·2023년 3월 21일
0

시스템

목록 보기
1/22

- CPU의 구성요소 ALU와 제어장치의 역할
-명령어 사이클과 그 흐름을 방해하는 인터럽트

※책 '혼자공부하는컴퓨터구조+운영체제'의 내용을 바탕으로 정리한 공부내용입니다.※

⚙️4-1 ALU와 제어장치

🔍 ALU

  • CPU = ALU + 제어장치 + 레지스터
  • ALU
    • 레지스터에서 피연산자 + 제어장치에서 제어신호 (수행할 연산) -> 연산 수행
    • 결괏값 레지스터에 우선 일시 저장 (메모리 접근시 실행 속도 감소)
    • 연산 결과에 대한 추가적 상태 정보인 플래그 -> 플래그 레지스터에 저장

🔍 제어장치

: 제어 신호를 내보내고, 명령어를 해석하는 부품

제어장치가 받아들이는 값들

  • 클럭 신호
    : 컴퓨터의 부품을 움직이는 시간단위
  • 해석해야 할 명령어
    : 명령어 레지스터의 명령어를 해석 -> 제어신호 발생
  • 플래그
    : 플래그 값을 참고, 제어신호 발생
  • 시스템 버스 中 제어 버스의 제어 신호
    : 외부로부터 전달 된 제어 신호를 받아들임

내보내는 정보

  • 외부에 전달하는 제어 신호 (제어버스로)
    • 메모리에 전달
    • 입출력 장치(보조기억장치 포함)에 전달
  • 내부에 전달하는 제어 신호
    • ALU에 전달
    • 레지스터에 전달

🚵‍♂️ 4-3 명령어 사이클과 인터럽트

🔍 명령어 사이클

: 프로그램 속 하나의 명령어가 처리되는 주기

  • 인출사이클
    : 메모리의 명령어를 CPU로 가지고 오는 단계
  • 실행사이클
    : CPU로 가져온 명령어를 실행하는 단계
  • 간접사이클
    : 메모리 접근이 더 필요한 경우 거치는 단계 (EX. 간접 주소 지칭)

🔍 인터럽트

: CPU의 작업을 방해하는 신호
(통일된 구분 기준은 없음. 이하 내용은 인텔의 공식문서 기준)

  • 동기 인터럽트 (Synchronous interrupt)
    • CPU에의해 발생
    • 예외(exception)라고 부름
  • 비동기 인터럽트 (Asynchronous interrupts)
    • 입출력장치에 의해 발생 (입출력 장치의 작업 완료/요청 알림)
    • 하드웨어 인터럽트라고 부름
      • 막을 수 있는 인터럽트
      • 막을 수 없는 인터럽트 (우선1순위 ex. 정전, 하드웨어 고장 등)

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

  1. 입출력 장치 -인터럽트 요청 신호-> CPU
  2. CPU - 실행 사이클이 끝나고 명령어를 인출하기 전, 인터럽트 여부 확인
  3. 인터럽트 요청 확인 -> 인터럽트 플래그를 통해 인터럽트 수용 가능 여부 확인 (중요 작업일 시 플래그=불가능 / 그러나 막을 수 없는 인터럽트도 존재)
  4. 수용 가능 하다면 지금까지의 작업 백업 (스택영역)
  5. 인터럽트 벡터를 참조 -> 인터럽트 서비스 루틴실행

    인터럽트 서비스 루틴 (ISR) : 인터럽트를 처리하기 위한 프로그램, 여러개 존재
    (=인터럽트 핸들러 interrupt handler)
    인터럽트 벡터 (interrupt vector) : 인터럽트 서비스 루틴을 식별하기 위한 정보 (인터럽트 서비스 루틴의 시작 주소)
    -> 인터럽트 요청 대상으로부터 데이터 버스를 통해 전달받음

  6. 4에서 백업해 둔 작업 복구, 실행 재개

🔍 예외의 종류

  • 폴트 (fault)
    : 예외를 처리한 직후 예외가 발생한 명령어부터 실행 재개
    (ex. 보조기억장치로부터 메모리 가져올 경우)
  • 트랩 (trap)
    : 예외를 처리한 직후 예외가 발생하 명령어의 다음 명령어부터 실행 재개
    (ex. 디버깅)
  • 중단 (abort)
    : CPU가 실행 중인 프로그램을 강제 중단 시킬 수 밖에 없는 심각한 오류를 발견했을 때 발생
  • 소프트웨어 인터럽트
    : 시스템 호출이 발생했을 때

🤓💭
레지스터 스택만 계속 보다가 CPU에 대한 전체적인 역할을 알아가는 느낌
그래도 아직 레지스터랑 스택 공부를 작동원리 위주로 더 해봐야겠다.

profile
공부합시다

0개의 댓글