컴퓨터구조

[컴퓨터구조] CPU 성능 향상 기법

파송송 2022. 11. 22. 17:32
728x90

클럭, 멀티코어, 멀티스레드라는 용어는 컴퓨터 구매, 프로그램 개발 시에 많이 들어본 단어이다

클럭

  • 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위
  • 학습했던 내용
    • 컴퓨터 부품들은 클럭 신호에 맞춰 일사불란하게 움직임
    • CPU는 명령어 사이클이라는 흐름에 맞춰 명령어를 실행함
  • 클럭 신호가 빠르다면 컴퓨터 부품은 그만큼 빠은 박자에 맞춰 움직임
  • 클럭 속도가 높은 CPU가 성능이 좋은 CPU라고 볼 수 있음

클럭 속도

  • 단위로 헤르츠(Hz)를 사용함
  • 1초에 클럭이 한 번 반복되면 1Hz, 100번 반복되면 100Hz이다.
  • intel i9 기준 평균 4.0GHz (1 GHz = 1,000,000,000Hz \(10^{9} \))
    • 평균이라는 단어를 사용한 이유는 클럭속도는 유지되는 것이 아니라 상황에 따라 달라짐
    • 최대 클럭 속도를 강제로 끌어올릴 수 있는데 이런 기법은 오버클럭킹이라고 함
  • 클럭 속도가 높으면 CPU가 빨라질까?
    • CPU를 빠르게 하지만 발열 문제가 심해짐
    • 클럭 속도만으로는 성능을 올리는 것에 한계가 있음

 

클럭 속도 높이는 방법 외에 CPU 성능을 높이는 방법

  1. 코어 수 늘리기
  2. 스레드 수 늘리기

코어와 멀티코어

  • CPU란 명령어를 실행하는 부품이고 이는 전통적인 관점에서 원칙적으로 하나만 존재했었음
  • 하지만 기술이 발전하여 CPU 내부에 명령어를 실행하는 부품을 얼마든지 만들 수 있게 됨
  • 코어 = 명령어를 실행하는 부품

코어를 여러 개 포함하고 있는 CPU를 멀티코어 Multi-core CPU 또는 멀티코어 프로세서 라고 부름

1. 클럭 속도 2.4 GHz 단일 코어 CPU

2. 클럭 속도 1.9GHz 멀티코어 CPU 

1번과 2번을 비교한다고 할 때 일반적으로 2번 성능이 훨씬 좋음

 

그럼 코어를 100개로 늘르면 연산 처리 속도가 100배로 빨라지는 걸까?

그렇지 않다. CPU의 연산 속도가 꼭 코어 수에 비례하여 증가하지 않음 -> 업무가 균등하게 분배되지 않거나 한 두 코어만 열심히 처리하면 코어 수에 비례하여 연산 속도가 증가하지 않음


스레드와 멀티스레드

스레드 Thread

  • 실행 흐름의 단위
  • CPU와 프로그래밍의 스레드는 다르게 구분해야 함
  • CPU 스레드: 하드웨어적 스레드
  • 프로그램 스레드: 소프트웨어적 스레드

하드웨어적 스레드

  • 하나의 코어가 동시에 처리하는 명령어의 단위
  • 위에서의 CPU는 1 코어 1 스레드 CPU였지만 2 코어 4 스레드 CPU도 존재함

2코어 4스레드 CPU

위에 그림처럼 하나의 코어로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서, 멀티스레드 CPU라고 함

하이퍼스레딩: 인텔의 멀티스레드 기술


소프트웨어적 스레드

  • 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위
  • 프로그램의 여러 부분이 동시에 실행될 수 있음(멀티 스레드)
    • 워드
    • 사용자로부터 입력받은 내용을 화면에 보여주는 기능
    • 사용자가 입력한 내용이 맞춤법에 맞는지 검사하는 기능
    • 사용자가 입력한 내용을 수시로 저장하는 기능
    • 들을 작동시키는 코드를 각각의 스레드로 만들면 동시에 실행할 수 있음

 


하드웨어 스레드: 하나의 코어가 동시에 처리하는 명령어 단위 (논리 프로세서라고 부르기도 함)

소프트웨어 스레드: 하나의 프로그램에서 독립적으로 실행되는 단위


멀티스레드 프로세서

  • 하드웨어 스레드가 가능한 이유
    • 멀티스레드 프로세서의 핵심은 레지스터이다
    • 하나의 명령어를 처리하기 위해 꼭 필요한 레지스터를 여러 개 가지고 있으면 됨
    • 프로그램 카운터가 2개 라면 메모리에서 가져올 명령어 주소를 2개 지정할 수 있고 스택 포인터가 2개라면 2개의 스택을 관리할 수 있음

12 코어 24 스레드 CPU 사용 중 


코어: 명령어를 실행할 수 있는 하드웨어 부품

스레드: 명령어를 실행하는 단위

멀티코어 프로세서: 명령어를 실행할 수 있는 하드웨어 부품이 CPU안에 2개 이상 있는 CPU

멀티스레드 프로세서: 하나의 코어로 여러 개의 명령어를 동시에 실행할 수 있는 CPU

728x90