본문 바로가기
해피 코딩/CS

[CS 컴퓨터 구조] CPU

by happy-coding 2024. 9. 26.

Computer Science

🔥 컴퓨터에서 가장 중요한 부품 중 하나인 CPU에 대해서 알아보자

[ 레지스터 ]

  • 레지스터: CPU안에 있는 작은 임시 저장장치

  • 프로그램 카운터 (명령어 포인터) : 메모리에서 다음으로 읽어 들일 명령어의 주소를 저장하는 레지스터 입니다.
    • 일반적으로 프로그램 카운터는 1씩 증가합니다.
    • 메모리에 저장된 프로그램이 순차적으로 실행될 수 있는 것은 근본적으로 프로그램 카운터 값이 1씩 증가하며 실행되기 때문입니다.
  • 명령어 레지스터: 메모리에서 방금 읽어 들인 명령어를 저장하는 레지스터 입니다.
  • 범용 레지스터: 다양하고 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터 입니다.
    • 데이터와 명령어, 주소 모두를 저장할 수 있습니다.
    • 일반적으로 CPU 안에는 여러 개의 범용 레지스터들이 있습니다.
  • 플래그 레지스터: 연산의 결과 혹은 CPU 상태에 대한 부가 정보인 플래그 값을 저장하는 레지스터 입니다.
  • 스택 포인터: 메모리 내 스택 영역의 최상단 스택 데이터 위치를 가리키는 특별한 레지스터를 말합니다.
    • 메모리 내에는 스택 영역이 존재한다.
    • 실행 중인 프로그램을 스택 형태로 저장한다.
    • 스택의 최상단 데이터를 "스택 포인터"라고 지칭한다.

[ 인터럽트 ]

  • 인터럽트: CPU가 수행 중인 작업은 방해를 받아 잠시 중단될 수 있는데, 이렇게 CPU의 작업을 방해하는 신호를 인터럽트 라고 합니다.
  • 인터럽트는 방해하다, 중단시키다 라는 의미입니다.

  • 동기 인터럽트 (예외) : CPU에 의해 발생하는 인터럽트, 예외라고도 부릅니다.
  • 비동기 인터럽트: 입출력장치에 의해 발생하는 인터럽트
    • 입출력 작업 도중 CPU가 효율적으로 명령어를 처리하기 위해 사용됩니다.
  • 하드웨어 인터럽트: 비동기 인터럽트의 다른 말로 효율적으로 명령어를 처리하기 위해 사용합니다.
    • 하드웨어 인터럽트를 사용하면 CPU는 작업이 끝나기를 기다릴 필요 없이 프린트가 진행되는 동안 온전히 다른 작업을 처리할 수 있게 됩니다.
    • 하드웨어 인터럽트는 입출력 완료 여부를 확인하기 위해 CPU 사이클 낭비를 최소화하고, CPU가 다른 일을 수행할 수 있는 시간을 벌어 줌으로써 효율적으로 명령어를 처리할 수 있도록 돕습니다.

  • 인터럽트 요청 신호: 인터럽트 가능 여부를 확인하기 위해 CPU에게 보내는 신호
  • 인터럽트 플래그: 하드웨어 인터럽트를 받아들일지, 무시할지를 결정하는 플래그
    • 인터럽트 플래그가 불가능으로 설정되어 있더라도 무시할 수 없는 인터럽트 요청도 있습니다.
    • 무시할 수 없는 하드웨어 인터럽트는 가장 우선순위가 높은! 즉, 가장 먼저 처리해야 하는 인터럽트를 말합니다.
    • ex) 정전이나 하드웨어 고장 등..
  • 인터럽트 서비스 루틴: 인터럽트를 처리하기 위한 프로그램으로, 어떤 인터럽트가 발생했을 때 해당 인터럽트를 어떻게 처리하고 작동해야 할지에 대한 정보로 이루어진 프로그램입니다.

 

[ 수행 도중 인터럽트가 발생한 경우 ]

 

 

 

 

 

1. 정상적으로 작업 진행

2. 인터럽트 발행

3. 인터럽트 서비스 루틴으로 점프

4. 인터럽트 서비스 루틴 실행

5. 기존 작업으로 리턴

6. 기존 작업 수행 재개

 

 

 

 

 

인터럽트 서비스 루틴의 과정이 일반적인 함수의 실행 과정과 다르지 않다는 것을 볼 수 있다.

 

  • 인터럽트 벡터: 인터럽트 서비스 루틴을 식별하기 위한 정보입니다.
    • 인터럽트 벡터가 인터럽트 서비스 루틴의 시작 주소를 포함하고 있기 때문에 CPU는 인터럽트 벡터를 통해서 처음부터 특정 인터럽트 서비스 루틴을 실행할 수 있습니다.
    • 즉, 인터럽트 서비스 루틴의 시작 주소를 인터럽트 벡터를 통해 알 수 있습니다.

[ CPU 성능 향상을 위한 설계 ]

  • 클럭: 컴퓨터의 부품을 일사불란하게 움직일 수 있게 하는 시간의 단위 (Hz)
    • 장점: 클럭 속도가 높은 CPU는 일반적으로 성능이 좋습니다.
    • 단점: 클럭 속도를 필요 이상으로 높이면 컴퓨터의 발열이 심해질 수 있기 떄문에 클럭 속도를 높이는 것만으로 CPU의 성능을 높이는 데에는 한계가 있습니다.

 

  • 멀티코어와 멀티스레드: 코어 수나 스레드 수를 늘리는 방법으로 CPU의 성능을 높일 수 있습니다.
  • 코어: CPU 내에서 명령어를 읽어 들이고, 해석하고, 실행하는 부품을 의미합니다. 
    • 오늘날 기술적 발전을 거듭한 CPU 안에는 명령어를 읽고, 해석하고, 실행하는 부품들이 여러 개가 존재할 수 있게 되었고, 이에 코어라는 이름을 붙였습니다. 
  • 멀티코어 (멀티 프로세서) : 여러 개의 코어를 포함하고 있는 CPU를 의미
  • 스레드: 실행 흐름의 단위를 의미
    • 하드웨어적 스레드와 소프트웨어적 스레드가 있습니다.
  • 하드웨어 스레드: 하나의 코어가 동시에 처리하는 명령어의 단위
    • ex) 1 코어 1 스레드 CPU : 코어 부품 하나가 한 번에 하나의 명령어를 처리
    • ex) 2 코어 4 스레드 CPU : 코어 부품 2개가 한 번에 4개의 명령어를 처리
  • 소프트웨어 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위

  • 동시성: 동시에 작업을 처리하는 것처럼 보이는 성질을 의미합니다.
 CPU가 빠르게 작업을 번갈아 가며 처리할 경우, 사용자의 눈에는 마치 여러 작업이 동시에 처리되는 것처럼 보일 수 있지만, 물리적으로 같은 시점에 여러 작업이 동시에 처리되고 있는 것은 아닙니다.

다음번에는 메모리에 대해 공부해 보도록 하자!

 

읽어주셔서 감사합니다 😊