CPU의 성능에 영향을 끼치는 것들

2023. 9. 19. 11:08컴퓨터구조와 운영체제

728x90

 

CPU는 컴퓨터 부품중 제일 중요한 부품입니다.

 

따라서, CPU의 성능을 아는 것이 중요합니다! 이번 포스팅에서는 CPU의 성능에 대해서 알아보겠습니다.

 

CPU의 성능에 영향을 미치는 것에는 크게 3가지가 있습니다.

 

1. 클럭

2. 코어

3. 스레드

 

클럭수를 빠르게!

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

컴퓨터에선 클럭 신호(Clock Signal)를 통해서 시간을 구분할 수 있는데, 컴퓨터 부품들은 이 클럭 신호에 맞춰 움직인다.

따라서, 클럭 신호를 빠르게 만들어 버리면 연산 속도가 빨라지게된다.

하지만, 연산 장치가 너무나도 빨라져버리면 컴퓨터에서 수행하는 작업들은 꼬이게 되고, 발열 문제도 발생할 수 있다.

즉, 적당히 빠른 클럭 신호면 CPU가 빨라진다.

클럭 속도

클럭 속도 : 헤르츠(Hz) 단위로 측정 헤르츠(Hz) : 1초에 클럭이 반복되는 횟수
예를 들어, 클럭이 1초에 100번 반복되면 100Hz

 

코어 수를 늘리면?

 

현대적인 관점에서 코어란 CPU라는 용어를 재해석한 것이다.
전통적으로는 CPU라는 용어의 뜻은 명령어를 실행하는 부품으로 하나만 존재하였는 데, 오늘날에는 CPU가 여러 개 존재하고 명령어를 실행하는 부품을 코어라고 부른다.

 

위의 오늘날의 CPU는 코어를 여러개 가지고 있는 데 이를 멀티 코어라고 부른다.


그렇다면, 코어 수를 속도가 빨라지는 가??

꼭 그런 것은 아니지만 어느정도 그런 것 같다. 

 

코어마다 처리할 연산이 적절하게 분배가 된다면, 코어 수가 많아지면 속도가 빨라진다.

 

 

스레드가 많아진다면?

 

스레드란 실행 흐름의 단위로 설명할 수 있는데, 크게 하드웨어 스레드와 소프트웨어 스레드로 나눌 수 있습니다.
(하드웨어 스레드만 다룸)

 

 

하드웨어 스레드란 하나의 코어가 동시에 처리하는 명령어의 단위로, 아래 그림에서는 1개의 코어가 1개의 스레드를 가지고 있습니다.

즉, 한 개의 코어가 동시에 1개의 명령어를 처리할 수 있다는 말입니다.

 

 

예를 들어서, 아래 그림은 하나의 코어가 2개의 스레드를 가지고 있는데 이는 하나의 코어가 1번에 2개의 명령어를 실행시킬 수 있다는 것이다.

 

즉, 코어당 스레드의 개수가 많으면 동시에 코어당 처리할 수 있는 명령어의 수가 많아져 빨라진다.

 

 

지금까지 CPU의 성능에 대해서 알아봤습니다. 종합적으로 한 번에 많은 수의 명령어를 처리할 수록 성능이 빨라집니다.

 

그런데, 어떻게 한번에 2개이상의 명령어를 처리할 수 있을까요?

답은 명령어 파이프라인을 이용하는 것입니다.

 

 


 

명령어 파이프라이닝

 

명령어 파이프라이닝은 동시에 여러 개의 명령어를 겹쳐 실행하는 기법이다.

 

어떻게 이게 가능할까??

 

먼저, 명령어가 처리되는 과정을 살펴보자

 

  1. 명령어 인출 (Instruction Fetch)
  2. 명령어 해석 (Instruction Decode)
  3. 명령어 실행 (Execute Instruction)
  4. 결과 저장 (Write Back)

 

명령어는 여러 단계에 걸쳐서 처리되는 데 같은 단계가 겹치치만 않는다면 CPU는 각 단계를 동시에 실행할 수 있다.

 

 

파이프라이닝이 좋은 것은 알겠는 데 언제나 파이프라이닝이 성공하는 거야??

언제나 성공하면 좋겠으나 그렇지 못 하다.

 

 

파이프 라인 위험

 

명령어 파이프라인이 성능 향상에 실패할경우

 

데이터 위험

 

명령어 간의 의존성에 의해 야기되는 위험, 즉 의존성이 있는 명령어는 동시에 처리할 수 있다.

 

위 그림을 보면, 명령어 1이 명령어 2에 영향을 주고 있다.  따라서, 명령어 1이 완료되지 않으면 명령어 2는 실행될 수 없다.

 

제어 위험

 

PC(Program Counter)의 갑작스러운 변화

 

 

일반적으로 순차적으로 실행하나, 갑작스럽게 분기할 경우 이전에 처리하던 명령어들이 무용지물이 되버린다. 즉, 성능 향상이 실패한다.

 

구조 위험

 

서로 다른 명령어가 같은 CPU 부품(ALU, 레지스터)을 쓰려고 할 때 발생한다!

 

파이프라인의 중단을 방지하기 위한 방법은 어떤 것이 있을까??

비순차적 명령어 처리

 

비순차적 명령어 처리

 

비순차적 명령어 처리를 쉽게 설명하면, 합법적인 새치기입니다.

즉, 순서를 바꿔서 더 효울적으로 명령어를 처리하고 파이프라인의 중단을 막겠다는 것입니다.

 

 

예를 들어, 아래와 같은 명령어 파이프라인이 있다면

 

 

아래와 같이 의존성이 없는 명령어들의 순서를 바꿔서 더 효율적인 파이프라인을 만들 수 있다.

 

지금까지 CPU의 성능에 영향을 미치는 것들과 동시에 명령어를 처리할 수 있는 방법에 대해서 공부해봤습니다.

 

이상입니다.

 

728x90