본문 바로가기
cs

[혼공운영체제] 4. 빠른 CPU를 위한 설계 기법

by 이쟝 2023. 4. 16.
인프런의 개발자를 위한 컴퓨터 공학1 : 혼자 공부하는 컴퓨터 구조 + 운영체제 강의를 듣고, 학습 및 요약

CPU의 속도를 빠르게 만들어보기 

1. 컴퓨터 부품들은 '클럭 신호'에 맞춰 일사불란하게 움직인다. => 클럭 속도를 빠르게?

2. CPU는 '명령어 사이클'이라는 정해진 흐름에 맞춰 명령어들을 실행한다. 

클럭 속도

  • 헤르츠(Hz) 단위로 측정
  • 헤르츠(Hz) : 1초에 클럭이 반복되는 횟수
  • 클럭이 '똑-딱-' 하고 1초에 한 번 반복되면 1Hz
  • 클럭이 1초에 100번 반복되면 100Hz
  • 필요 이상으로 클럭을 높이면 발열이 심각해짐

클럭 속도를 늘리는 방법 이외에는?

  1. 코어 수를 늘리는 방법  "듀얼 코어" "멀티 코어"
  2. 스레드 수를 늘리는 방법 "멀티 스레드"

코어(Core)

CPU 내에서 명령어를 실행하는 부품으로 여러 개 있을 수 있다.

 

  • 전통적으로 '명령어를 실행하는 부품'은 원칙적으로 하나만 존재하지만(CPU) 오늘날 CPU에는 '명령어를 실행하는 부품'이 여러 개 존재한다.
  • 이 '명령어를 실행하는 부품'을 코어라는 용어로 사용한다.

오늘날의 코어

멀티 코어 프로세서

여러 개의 코어를 포함하고 있는 CPU

 

  • 멀티 코어 : 듀얼코어(2), 트리플코어(3), 쿼드코어(4), 헥사코어(6), 옥타코어(8), 데카코어(10), 도데카코어(12)
  • 연산속도가 꼭 코어 수에 비례해 증가하지는 않는다.

스레드와 멀티 스레드

큰 범위에서 스레드는 실행 흐름의 단위

1. 하드웨어 스레드

하나의 코어가 동시에 처리하는 명령어 단위, 논리 프로세서라고도 부른다.

 

  • 2코어 4스레드 CPU => 전체적으로는 2개의 코어가 움직이지만 그 안에 4개의 스레드가 실행된다.
  • 하이퍼스레딩 : 인텔의 멀티스레드 기술

2코어 4스레드

  • 멀티스레드 프로세서를 실제로 설계하는 일은 매우 복잡하지만, 가장 큰 핵심은 레지스터!

  • 하나의 명령어를 실행하기 위해 꼭 필요한 레지스터들을 편의상 '레지스터 세트'라고 표기
  • 하나의 명령어를 실행하기 위한 레지스터가 여러 개 있다면 멀티 스레드 프로세서를 설계할 수 있음!

2. 소프트웨어 스레드

하나의 프로그램에서 독립적으로 실행되는 단위

 

  • 멀티스레드 :  여러개의 프로세서가 동시에 실행됨
  • 즉 소프트웨어 스레드를 여러 개 만들면, 하나의 프로그램에서 독립적으로 실행되는 단위가 여러 개 만들어져, 하나의 프로그램을 동시에 여러군데를 실행할 수 있다..!  => 운영체제에서 더 자세히 다룰것임!

 

1코어 1스레드 CPU도 여러 소프트웨어적 스레드를 만들 수 있다! => 즉, 하드웨어 스레드는 하나여도 소프트웨어 스레드는 여러 개 만들 수 있음!

  • 스레드는 큰 범위로 보면 실행 흐름의 단위라고 볼 수 있는데, 구분하면 하드웨어적 스레드와 소프트웨어적 스레드로 나눌 수 있다. 하드웨어적 스레드는 하나의 코어가 동시에 처리하는 명령어 단위이고, 소프트웨어적 스레드는 하나의 프로그램안에서 독립적으로 실행되는 단위이다!!