[CS] CPU의 작동 원리

Judevv·2023년 6월 8일
0
post-thumbnail

CPU의 작동 원리

학습 목표

  • ALU와 제어장치에 대해 학습한다.
  • 레지스터의 종류와 역할에 대해 학습한다.
  • 명령어 사이클을 이해한다.
  • 인터럽트의 개념을 이해한다.

ALU와 제어장치


핵심 키워드 : ALU 플래그 제어장치 제어 신호

CPU 내부에는 계산을 담당하는 ALU, 명령어를 읽어 들이고 해석하는 제어장치, 작은 임시 저장 장치인 레지스터라는 구성요소가 있다.

ALU

ALU는 계산하는 장치로 계산기와 유사하다고 생각하면 된다.

ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들인다.

  • ALU가 내보내는 정보(반환하는 값)

    • 연산한 결괏값

      • ALU가 계산하기 위해서는 피연산자와 수행할 연산(제어 신호)이 필요
      • 연산한 결괏값은 바로 메모리에 저장되지 않고 레지스터에 일시적으로 저장
      • 연산한 결과는 숫자나 문자, 또는 메모리 주소가 될 수 있음
    • 플래그(⭐️⭐️⭐️⭐️⭐️)

      • 연산 결과에 대한 부가 정보(ex.양수 or 음수 정보)
      • 플래그 레지스터라는 레지스터에 저장
      • 플래그의 종류
      플래그 종류의미사용 예시
      부호 플래그연산한 결과의 부호를 나타낸다.부호 플래그가 1일 경우 계산 결과는 음수, 0일 경우 계산 결과는 양수를 의미한다.
      제로 플래그연산 결과가 0인지 여부를 나타낸다.제로 플래그가 1일 경우 연산 결과는 0, 0일 경우 연산 결과는 0이 아님을 의미한다.
      캐리 플래그연산 결과 올림수나 빌림수가 발생했는지를 나타낸다.캐리 플래그가 1일 경우 올림수나 빌림수가 발생했음을 의미하고, 0일 경우 발생하지 않았음을 의미한다.
      오버플로우 플래그오버플로우가 발생했는지를 나타낸다.오버플로우 플래그가 1일 경우 오버플로우가 발생했음을 의미하고, 0일 경우 발생하지 않았음을 의미한다.
      인터럽트 플래그인터럽트가 가능한지를 나타낸다.인터럽트 플래그가 1일 경우 인터럽트가 가능함을 의미하고, 0일 경우 인터럽트가 불가능함을 의미한다.
      슈퍼바이저 플래그커널 모드로 실행 중인지, 사용자 모드로 실행 중인지를 나타낸다.슈퍼바이저 플래그가 1일 경우 커널 모드로 실행 중임을 의미하고, 0일 경우 사용자 모드로 실행 중임을 의미한다.

💡) ALU 결괏값을 레지스터에 일시적으로 저장하는 이유?
CPU가 메모리에 접근하는 속도는 레지스터에 접근하는 속도보다 훨씬 느리다. ALU마다 결과를 메모리에 저장한다면, 당연하게도 CPU는 메모리에 자주 접근하게 되고, 이는 CPU가 프로그램 실행 속도를 늦출 수 있다. 그래서 ALU의 결과값을 메모리가 아닌 레지스터에 우선 저장한다.

💡) 오버플로우(overflow)
연산 결과가 연산 결과를 담을 레지스터보다 큰 상황을 말한다.

제어장치

제어장치는 제어 신호를 내보내고, 명령어를 해석하는 부품이다. 제어신호는 컴퓨터 부품들을 관리하고 작동시키기 위한 일종의 전기 신호다.

  • 제어장치가 받아들이는 정보의 종류
    • 클럭 신호(clock)
      • 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위
      • 클럭의 주기에 맞춰 한 레지스터에서 다른 레지스터로 데이터가 이동되거나, ALU에서 연산이 수행되거나, CPU가 메모리에 저장된 명령어를 읽어들임
    • 해석해야 할 명령어
      • 명령어 레지스터라는 특별한 레지스터에 저장되어 있는 명령어
      • 명령어를 받아들이고 해석한 뒤, 제어신호를 발생시켜 컴퓨터 부붐들에 수행해야 할 내용을 알려줌
    • 플래그 값
      • 플래그 레지스터에 저장되어 있는 플래그 정보
    • 제어 신호
      - 제어 버스로 전달된 제어 신호
      - 외부에서 발생되는 제어 신호
      - 제어 신호는 제어장치에서만 발생되는 것은 아님

  • 제어 장치가 내보내는 정보
    • CPU내부에 전달하는 제어 신호

      • 레지스터 : 레지스터간의 행동 정보에 관한 제어신호 전달
      • ALU : 수행할 연산
    • CPU 외부에 전달하는 제어 신호

      • 메모리 : 메모리를 읽어라/써라 등과 같은 제어신호 전달
      • 입출력장치(보조기억장치 포함) : 입출력장치를 읽어라/써라 등과 같은 제어 신호 전달
      		* 뒷 내용이 너무너무 이해가 안되어서... 내일 강의 다시 듣고 정리 예정 / 레지스터가 하는 일이 너무 많아요...!!!!!
profile
감성있는 개발자를 꿈꿔요

0개의 댓글