육식하는야채의 개발일지
article thumbnail
Published 2024. 3. 26. 00:24
빠른 CPU를 위한 설계 기법 CS

더 빠른 CPU를 만들기 위해서는 어떻게 해야할까? 빠른 CPU를 설계하기 위해서는 다음과 같은 것들을 고려한다.

 

1. 클럭

클럭이 왜 CPU 성능에 연관이 있을까?

1. 컴퓨터 부품들은 '클럭 신호'에 맞춰 움직인다.

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

 

때문에 클럭 신호가 빠르게 반복되면 CPU를 비롯한 컴퓨터 부품들이 빠르게 움직이고 명령어 사이클도 빨라져서 명령어들이 더욱 빠르게 실행되어 컴퓨터의 속도가 빨라지게 된다.

 

오버클러킹

CPU의 클럭은 속도가 일정하지 않다! 그렇기 때문에 고성능을 요하는 순간에는 속도를 올리고 그렇지 않을 때는 낮추기도 한다.

최대 클럭 속도에서 강제로 클럭을 더 끌어올릴 수도 있는데, 이것을 오버클러킹이라고 한다.

📌 하지만 오버클러킹으로 무리해서 성능을 올리면 발열문제가 발생하기 때문에 위험할 수 있다.

보통 우리가 작업관리자에서 속도에 표시된 GHz가 클럭이다.

 

2. 코어와 멀티코어

CPU의 코어와 스레드의 수를 늘리는 것도 CPU의 성능을 올릴 수 있는 방법이다. 

코어는 명령어를 실행하는 부품이라고 생각하면 된다.

이러한 코어의 수를 늘리면 성능이 올라가게 된다. 이런 것을 멀티코어라고 부른다.

📌코어가 2배라고 4배라고 일을 4배 잘하는 것은 아니다.

코어가 처리할 명령어들을 얼마나 적절하게 분배하느냐도 매우 중요하다.

위의 사진에서 코어는 4개인 쿼드코어 CPU이다.

4명이 일한다고 효율이 4배가 되는 것이 아닌거라고 생각하면 된다.

 

3. 스레드와 멀티스레드

스레드는 CPU에서 사용되는 하드웨어적 스레드

프로그램에서 사용되는 소프트웨어적 스레드가 있다.

 

하드웨어적 스레드

하드웨어에서 스레드는 하나의 코어가 동시에 처리하는 명령어 단위를 의미한다.

예를들어 2코어 4스레드 CPU는 한번에 2개의 명령어를 처리하는 2스레드를 가진 코어가 2개 있는 CPU를 말한다.

 

이런 CPU를 멀티스레드프로세서라고도 하며 인텔에서는 하이퍼스레딩이라고 부른다.

 

소프트웨어적 스레드

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

예를들어 워드 프로세서 프로그램을 개발할 때 여러 기능들의 코드를 각각의 스레드로 만들면 동시에 실행할 수 있다.

 

멀티스레드 프로세서

멀티스레드 프로세서는 하나의 코어로 여러 명령어를 동시에 처리할 수 있다.

📌 어떻게 가능한걸까?

 

여러 복잡한 설계로 작동되는 멀티스레드 프로세서지만 핵심은 레지스터다.

명령어 사이클을 처리할 수 있는 레지스터들을 2개씩 가지고 있으면 명령어를 2개씩 처리할 수 있을 것이고

레지스터를 4개씩 가지고 있으면 4개씩 명령어를 처리할 수 있을 것이다.

 

코어 하나에 명령어를 처리하는 레지스터 세트가 2개씩 들어있다면 2코어인 CPU는 명령어를 4개를 처리한다.

마치 코어가 4개인 것처럼!

그래서 하드웨어 스레드를 논리 프로세서라고 부르기도 한다.

'CS' 카테고리의 다른 글

명령어 병렬 처리 기법  (0) 2024.03.26
CPU의 작동 원리  (0) 2024.03.12
명령어  (0) 2023.12.18
profile

육식하는야채의 개발일지

@육식하는야채

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!