빠른 CPU를 위한 설계 방법

조재민·2024년 12월 4일

컴퓨터 부품들은 클럭 신호에 맞춰 움직이기에

클럭

첫 번째 방법은 클럭 신호를 빠르게 해주는 방법이 있습니다.
클럭 속도는 헤르츠(Hz) 단위로 측정합니다. Hz는 1초에 클럭이 몇 번 반복되는지 나타냅니다. 1초에 100번 반복되면 100Hz로 표현합니다.

그럼 클럭 속도만 많이 올리면 될까요?
무작정 속도만 올리게 된다면 발열 문제가 생깁니다.
클럭 속도를 올리는 건 빠른 CPU를 만들 순 있겠지만 이것만으로 CPU성능을 올리기엔 한계가 있습니다.

코어와 멀티코어

클럭 속도를 높이는 것 이외의 CPU성능을 올릴 수 있는 방법도 있습니다.
바로 CPU의 코어수와 스레드 수를 늘리는 방법이죠.

많은 전공 서적에서는 "명령어를 실행하는 부품"으로 하나만 존재했습니다.
하지만 오늘날의 CPU는 많은 발전을 거듭했고, 이젠 CPU내부에 "명령어를 실행하는 부품"을 얼마든지 만들 수 있게 되었습니다.

우리가 지금까지 CPU의 정의로 알고 있던 "명령어를 실행하는 부품"은 코어라고 불립니다.
오늘날의 CPU는 단순히 "명령어를 실행하는 부품"에서 "명령어를 실행하는 부품을 여러 개 포함하는 부품"으로 확대되었습니다.
이런 CPU를 멀티코어 CPU 또는 멀티코어 프로세서라고 합니다.

CPU의 종류는 CPU안에 코어가 몇 개가 들어 있는지에 따라 아래와 같이 나뉩니다.
그럼 코어 수를 100개로 늘리면 100배 빨라질까요?
안타깝게도 연산 속도와 코어 수는 비례하여 증가하지 않습니다. 학교에서 4인 1조를 한다고 생각해 볼까요? 모두 똑같이 참여해 한 사람이 생성해 낼 수 있는 생산성의 4배에 가까운 결과를 내는 경우도 있으나, 그렇지 않은 경우가 더 많습니다.

중요한 것은 코어마다 처리할 명령어를 얼마나 적절히 분배하느냐이고 그에 따라 연산 속도는 크게 달라집니다.

스레드

스레드의 사전적 의미는 '실행 흐름의 단위'입니다. 하지만 CPU의 스레드와 프로그래밍에서의 스레드는 용도가 다르기에 더욱 엄밀히 이해해야 합니다.

스레드는 CPU에서 쓰이는 하드웨어적 스레드,
프로그래밍에서 쓰이는 소프트웨어적 스레드가 있습니다.

하드웨어적 스레드

하나의 코어가 동시에 처리하는 명령어 단위를 의미합니다.
지금까지 배운 것은 1코어 1스레드였습니다. 즉 명령어를 실행하는 부품이 하나 있고, 한 번에 하나씩 명령어를 실행하는 CPU였죠.
반면 여러 스레드를 지원하는 CPU는 하나의 코어로도 여러 개의 명령어를 동시에 실행할 수 있습니다.
예를 들어 2코어 4스레드 CPU는 명령어를 실행하는 부품이 두 개고, 한번에 4개의 명령어를 처리할 수 있는 CPU를 의미합니다. 이처럼 코어 하나로 여러 명령어를 동시에 처리하는 CPU를 멀티스레드 프로세서 또는 멀티스레드 CPU라고 합니다.

소프트웨어적 스레드

하나의 프로그램에서 독립적으로 실행되는 단위를 의미합니다.
하나의 프로그램이 실행되는 과정에서 한 부분만 실행될 수 있지만, 프로그램의 여러 부분이 동시에 실행될 수도 있습니다.

만약 워드 프로세서 프로그램을 개발한다고 하고, 아래의 기능을 동시에 수행하고 싶어 한다고 생각해 봅시다.

  • 사용자로부터 입력받은 내용을 화면에 띄워주는 기능
  • 사용자가 입력한 내용의 맞춤법이 맞는지 검사하는 기능
  • 사용자가 입력한 내용을 수시로 저장하는 기능

이 기능들을 작동시키는 코드를 각각의 스레드로 만들면 동시에 실행할 수 있습니다.

profile
Backend Developer

0개의 댓글