[HW] 코어와 스레드

세동네·2022년 5월 18일
0
post-thumbnail

· CPU와 코어

컴퓨터에서 CPU(Central Processing Unit)는 인간의 뇌 역할을 한다. 일반적으로 하나의 컴퓨터는 하나의 CPU를 가지는데, CPU는 모든 연산을 도맡아 처리하는 코어(Core)라는 부품을 가지고 있다.

코어는 한 번에 하나의 작업을 처리할 수 있으며, 코어가 처리하는 작업의 단위를 프로세스(Process)라 한다. 이러한 프로세스를 처리하는 역할을 한다는 이유로 CPU를 프로세서(Processor)라고 칭하기도 한다.

과거의 CPU는 단 하나의 코어를 가졌으며, 자연스럽게 컴퓨터가 처리하는 프로세스는 단 하나였다. 하지만 그 당시의 컴퓨터도 여러 프로그램을 한 번에 실행할 수 있었는데, 이는 코어가 여러 개의 프로그램을 매우 짧은 단위 시간마다 순회하여 처리했기 때문이다.

이와 같이, 최소 작업 시간 단위인 Time quantum마다 실행 중인 작업을 이동하며 빠르게 처리하기 때문에 사용자가 보기엔 작업들이 동시에 실행되는 것'처럼' 보인다. 하지만 실제로는 여러 작업이 동시에 실행되고 있지 않다.

오늘날 사용자들이 사용하는 프로그램들이 점점 고사양의 HW를 요구하면서 CPU의 처리 속도도 향상되어야 했다. 하지만 하나의 CPU가 향상될 수 있는 속도는 오늘날 큰 변화를 찾지 못하게 되었다. 이론상 프로세스 처리 속도를 더 빠르게 만들 수 있지만 CPU가 그만큼의 발열을 이겨내지 못하고 녹아버리는 것이다.

· 멀티 코어 프로세서

앞서 말한 것처럼 여태까진 하나의 CPU에 하나의 코어를 가지고 있었다. 이 코어를 여러 개 가지게 한다면? 각 코어가 CPU에 전달되는 프로세스를 나눠 처리한다면 발열이 해결되면서 많은 일을 할 수 있을 것이다.

쉽게 말해 혼자 하던 일을 둘이 하면 두 배 빠르게 일을 처리할 수 있는 것과 같다. 하지만 여태까지 싱글 코어 프로세서(코어가 하나인 CPU)만을 사용하던 이유는 여러 코어가 있을 때 각 코어가 어떤 작업을 가져가 처리할지 결정하는 작업에 너무 오랜 시간이 걸렸기 때문이다. 코어가 실제 작업을 처리하는 시간보다 어떤 작업을 처리할지 고르는 시간이 더 오래 걸린다면 이 기술을 사용할 이유가 없었다.

하지만 싱글 코어의 한계를 직면한 이상 이 멀티 코어의 문제점을 해결해 새로운 프로세서의 시대를 열어야 했다. 수많은 전문가들은 이 멀티 코어 프로세서 개발에 힘쓰기 시작했다.

· 멀티 코어의 개발(인 줄 알았다)

그렇게 시간이 흘러 2000년대 초반 인텔에서 여러 개의 코어를 가진 CPU를 발표한다. Windows 작업 관리자에서 코어가 여러 개로 분리된 것을 확인할 수 있었고, 각 코어가 작업을 나누어 효율적으로 처리할 수 있게 되었다.

하지만 사실 이것은 멀티 코어처럼 보이게 만든 기술 혁신, 멀티 스레딩이었다. 이 기술을 인텔에선 하이퍼 스레딩, AMD에선 SMT라고 부른다.

즉, 실제로 코어는 하나인데 내부적으로 여러 개의 코어를 가진 것'처럼' 작업을 분할하여 실행하는 효율적인 시스템을 개발해낸 것이다. 앞서 말했던 싱글 코어 프로세서에서 여러 작업을 동시에 실행하는 것'처럼' 보이게 했던 것보다 더 혁신적인 기술이다.

· 멀티 스레딩

그 이후로 CPU가 처리하는 작업의 최소 단위는 프로세스보단 스레드로 불리곤 한다. 프로세스라는 개념은 유효하지만, 위 기술 혁신 이후로 하나의 프로세스가 여러 개의 스레드에 작업을 분할하여 처리될 수 있기 때문에 프로세스보다 스레드를 더 작은 작업 단위로 취급하였다.

이렇게 하나의 프로세스를 여러 스레드로 분할하여 병렬 처리하는 것을 멀티 스레딩이라고 한다. 하나의 프로세스를 처리하는 여러 스레드는 프로세스의 일부 메모리 자원을 공유한다.

듣기에는 멀티 스레딩이 무조건 좋은 기술이라고 생각할 수 있지만, 주의할 점이 몇 가지 있다.

  • 여러 스레드가 같은 메모리 자원에 접근할 때 충돌이 일어나는 것을 미연에 방지해야 한다.
  • 멀티 스레딩이 가능하도록 프로그래밍된 프로그램은 멀티 스레딩 환경에서 확실히 좋은 효율을 보이지만, 싱글 스레딩에 맞춰 프로그래밍된 프로그램은 오히려 떨어지는 효율을 보일 수도 있다.

0개의 댓글