본문 바로가기

CS/컴퓨터구조

[컴퓨터구조] 멀티코어

 현재 글은 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 하며, 이전 글과 어느 정도 내용이 이어진다.


  프로세서의 성능을 높이는 가장 직관적인 방법은 단위면적 당 트랜지스터 수, 즉 집적도를 높이는 것이다. 과거에는 실제로 반도체 feature size을 줄여 트랜지스터의 집적도를 높임으로써 무어의 법칙(대략 1년에 2배씩 성능 증가)을 만족하는 성능 향상을 보일 수 있었다. 그러나 feature size는 원자의 크기인 1nm 이하로 감소할 수는 없으며, 반도체의 집적도가 높아질 수록 누설 전류(leakage current) 증가하여 결과적으로 전체 전력 소모량의 급증 및 발열 심화 현상이 발생하여 단순히 집적도를 줄이는 방식에는 한계가 존재했다.

 따라서 업계는 하나의 코어의 성능을 극한으로 끌어올리는 대신 다소 성능이 떨어지는 코어를 여러개 사용하여 서로 협력하는 방식으로 전체적인 성능 향상을 도모했는데, 이게 멀티코어의 개념이다.

멀티코어

 멀티코어 프로세서는 성능이 다소 떨어지는 다수의 코어를 여러개 사용하여 협력 처리하도록 만든 프로세서로, 하나의 CPU 내에 여러개의 코어 및 계층 형태의 캐시 메모리가 있는 것이 특징이다. 

 멀티코어 프로세서를 사용하는 경우의 장점은 다음과 같다.

  • CPU 내에 더 많은 캐시를 넣을 수 있다.
    : 일반적으로 캐시에는 hit rate ( 메모리에서 찾는 정보가 캐시 내에 있을 확률 ) 라는 개념이 있다. 통상 메모리 사이즈1% 이하 용량을 가지는 캐시의 hit rate 는 95%로, 이는 캐시의 크기를 높인다고 해서 극단적으로 증가하지 않는다. 따라서 단일 코어 기준에서는 캐시를 많이 넣을 명분이 없다.
     반면 멀티 코어 아키텍처를 사용하는 경우 각각의 코어마다 캐시 메모리를 달고, 계층적으로도 달 수 있어서 캐시 메모리를 추가적으로 사용하여 성능 향상을 도모할 수 있다. 일반적으로 캐시 메모리의 전력 소모가 단순 게이트보다 적어서 어느 정도는 전력 효율 향상에 도움이 된다고도 한다.
  •  단일 코어보다 적은 전력으로 단일 코어 이상의 성능을 낼 수 있다.
    : 단일 코어 방식은 집적도를 극한으로 끌어 올리는 방식인 탓에 전력 소모 및 발열이 매우 크다. 반면 멀티 코어 아키텍처는 여러개의 코어를 사용함으로써 전력 소모량을 줄이면서도 병렬 처리를 통해 단일 코어 이상의 성능을 낸다. 단 성능을 끌어내기 위해서는 프로그램 자체가 병렬적 문제 해결 방식에 맞게 작성되어야 하며, 프로그램에는 필연적으로 순서대로 처리해야 하는 경우가 있으므로 코어의 개수 증가가 이에 비례하는 성능 증가로 이어지지는 않는다.

MIC, GPU

  •  MIC( Many Integrated Core ) : 범용 목적의 프로세서 여러개를 하나의 칩에 집약시키는 방식으로, 일반적인 CPU가 이러한 구조에 해당한다. MIC  라는 표현 자체는 인텔이 멀티코어 아키텍처를 고안할 때 사용한 말로 보인다.
  • GPU( Graphic Processing Unit ) : 그래픽 데이터를 빠르게 처리하기 위해 프로세서들이 병렬적으로 디자인 된 유닛. 기본적으로 그래픽은 덧셈, 곱셈 등 간단한 연산을 100만개 단위의 픽셀에 대해 초당 30번 이상 수행한다. 각각의 픽셀을 다루는데는 큰 성능이 필요하지 않지만, 다뤄야 하는 픽셀 자체가 어마어마하게 많은 GPU 특성상 각 픽셀에 대한 프로세서의 성능 자체는 작더라도 극한의 병렬성이 필요하다. 따라서 GPU는 낮은 성능의 프로세서를 몇천개 단위로 가지며, 이를 커버하기 위해 특별한 메모리를 사용한다.
     최근 인공지능이 대두되면서 엄청난 양의 연산이 요구되기 시작했는데, 이를 처리하기 위해 범용 목적의 GPU라는 의미의 GPGPU 라는 개념이 자주 사용된다.