- 빅칩의 문제점
앞서 설명한 것처럼 트랜지스터 숫자를 두 배로 늘린다고 해서 성능이 두 배가 되지는 않습니다. 하지만 코어를 더 넣는 것처럼 성능 향상을 위한 가장 손쉽고 확실한 방법은 역시 크고 복잡한 칩을 만드는 것입니다. 하지만 동시에 크고 복잡한 프로세서는 더 제조가 힘들다는 단점이 있습니다. 특히 현대적인 프로세서의 경우 복잡도가 매우 올라가면서 한 번에 실수없이 제조하기가 어려워지고 있습니다.
이 문제를 설명하기 위해서 타자기에 종이로 글자를 타이핑하는 데 만약 한글자만 틀려도 문서 전체를 버려야 하는 상황을 생각해 보겠습니다. 이 경우 대략 1000글자 가운데 50% 정도 확률로 1개 정도 오타가 난다고 가정하면 가능하면 문서 전체의 글자수를 줄이는 것이 좋을 것입니다. 10분 걸려서 1000자 정도 문서를 만들면 버릴 가능성이 50% 이지만, 10분 걸려서 500자 문서 2장을 작성하면 문서 한 장당 버릴 가능성은 25%로 줄어듭니다.
프로세서 제작과정에서도 비슷한 일이 일어납니다. 크기가 커질 수록 한 번에 오류 없이 제작할 가능성이 줄어들어 수율이 급격히 줄어듭니다. 칩의 크기가 두 배가 되면 웨이퍼 당 나오는 제품의 수가 절반 보다 더 감소하게 되는 것입니다. 이런 문제를 극복하기 위해 CPU나 GPU 업계는 문제가 되는 부분만 잘라내고 파는 방법을 사용합니다.
예를 들어 스카이레이크 SP의 경우 앞서 소개했듯이 12/20/30 코어 다이를 이용해서 ~10코어, ~18코어, ~28코어 제품을 내놓는 것입니다. 어차피 문제가 없는 제품을 만들 가능성이 낮으니까 아예 여분의 코어를 더 만든 후 문제 되는 부분을 레이저로 컷팅한 후 판매하는 것이죠. 그러면 수율을 크게 올려 제품의 판매 단가를 낮출 수 있습니다.
물론 종종 전혀 문제가 없는 칩이 나올 수 있는데, 주로 공정이 안정화된 이후 나오게 됩니다. 이 경우에는 완전체를 추가로 판매하면 됩니다. 브로드웰 EP이 경우 22코어로 처음에 등장했다가 나중에 조용히 24코어 제품을 등록한 사례가 있습니다. GPU 역시 동일한 과정을 거칩니다.
하지만 이렇게 해서 수율을 올린다해도 기본적으로 칩 면적이 두 배가 되면 생산량이 절반으로 감소하는 것은 피할 수 없는 결과입니다. 이에 대응할 수 있는 두 번째 방법은 아예 웨이퍼 자체의 크기를 늘리는 것입니다. 예를 들어 200mm 지름 웨이퍼보다 300mm 지름 웨이퍼를 사용하면 면적을 2.25배 늘릴 수 있으므로 그만큼 많은 칩을 생산할 수 있습니다.
물론 웨이퍼의 지름을 늘리면 그에 따라 생산 설비를 통째로 바꿔야 하기 때문에 비용이 꽤 많이 듭니다. 그래도 얻을 수 있는 제품의 숫자가 늘어나면 상쇄가 가능합니다. 쉽게 말해 생산 설비를 늘려 큰 제품을 많이 만든다고 할 수 있습니다. 현재는 주로 200mm, 300mm 웨이퍼가 많이 사용되지만 반도체 업계는 이보다 더 큰 450mm 웨이퍼를 도입해서 제조 단가를 더 낮추고 빅칩을 쉽게 생산할 수 있도록 제조 공정을 업그레이드 하고 있습니다.
그러나 이런 방법을 사용해도 제조할 수 있는 칩의 크기에는 물리적 한계가 분명히 존재합니다. 예를 들어 현재까지는 700-800㎟가 그 한계로 생각되고 있습니다. 세 번째로 생각할 수 있는 방법은 한 번에 큰 칩을 제조할 수 없다면 여러 개로 쪼갠 후 서로 연결시키는 방식입니다. AMD의 에픽이 경우 8코어 라이젠 프로세서 4개를 연결해서 172억개의 트랜지스터를 지닌 거대한 프로세서로 만들었습니다.
사실 하나의 CPU내에 여러 개의 다이를 넣어서 하나로 만드는 MCM 방식은 과거부터 널리 사용되어 왔습니다. 하지만 이 방법은 결국 CPU간, CPU와 메모리간에 데이터 전송량이 증가하는 경우 병목현상이 생기는 문제점이 존재합니다. AMD가 사용한 인피니티 패브릭은 이 문제에 대한 해결책이지만, 완전히 성능저하를 막을 순 없습니다. 이에 맞서기 위해 인텔은 Embedded Multi-Die Interconnect Bridge (EMIB)라는 새로운 방식을 공개했습니다.
(출처: 인텔)
EMIB는 각 다이 간에 빠른 속도로 데이터를 주고 받을 수 있는 다리를 놓는 것에 비유할 수 있습니다. 이 방법으로 여러 개의 서로 다른 형태의 다이를 연결할 수 있으며 심지어는 서로 다른 제조 공정으로 만든 다이끼리도 연결이 가능하다고 합니다. EMIB는 전통적인 MCM 방식보다 더 진보된 형태의 다이간 연결 방식으로 앞으로 이를 이용해 과거에는 불가능했던 초대형 빅칩 제조가 가능할수도 있습니다.
마지막으로 생각할 수 있는 방법은 적층형 메모리에서 볼 수 있듯이 프로세서 역시 적층형으로 생산하는 것입니다. 각 프로세서 층간 연결은 TSV라는 실리콘 간 연결 통로를 따라 이뤄집니다. 이는 기술적으로 충분히 가능하지만, CPU나 GPU 같은 비메모리 분야에서는 잘 활용되지 않고 있습니다. 메모리에 비해 구조가 매우 복잡하고 클럭이 높아서 TSV로 연결하기가 만만치 않은데다 메모리와는 비교할 수 없을 정도로 발열량이 많은 등 여러 가지 문제가 있기 때문입니다.
CPU/GPU처럼 발열량이 많은 물건은 사실 표면적을 크게 하는 것이 올바른 접근일 것입니다. 다만 CPU/메모리/스토리지 처럼 이질적인 부분들을 TSV로 연결해서 매우 작은 면적에 하나의 시스템을 통째로 제조하려는 시도는 진행 중입니다. 아마도 IoT나 모바일 기기 등 매우 작은 크기의 장치에서 유용한 방법이 될 것입니다.
- 핫 스팟, 다크실리콘 등 기타 문제
다른 모든 물질과 마찬가지로 실리콘 역시 열을 받으면 팽창합니다. 그런데 문제는 실리콘 다이 전체가 동일하게 열을 받는 게 아니라 일부에 열이 집중된다는 점입니다. 이 문제는 이전부터 있어왔지만, 더 문제가 되기 시작한 건 프로세서가 멀티코어화 되고 내장 그래픽과 캐쉬처럼 여러 가지 다양한 구조를 지니게 되면서부터 입니다.
당연히 어떤 때는 여러 개의 코어 가운데 하나만 열을 많이 받고 어떤 때는 CPU는 여유가 있는데, 같이 있는 내장 그래픽 쪽이 풀로 가동될 수 있습니다. 따라서 요즘 나오는 프로세서는 정교한 온도 센서와 조절 기능을 가지고 있습니다. 참고로 아래 논문에서 초기 듀얼 코어인 애슬론 x2 프로세서의 열 지도를 확인할 수 있습니다.
핫 스팟 문제는 프로세서 성능을 떨어뜨리는 것은 물론 심한 경우 영구적인 물리적 손상까지 가할 수 있기 때문에 이를 해결하기 위한 여러 가지 방법이 나와있습니다. 그 가운데 가장 합리적인 해결 방법은 프로세서가 너무 열받지 않게 조절하는 것이죠. 쉽게 말해 발열량을 줄이는 것입니다. 두 번째 방법은 작업량을 가능한 균등하게 분배해 일부분만 과열되지 않고 전체적으로 열이 나게 만드는 것입니다.
최근에 나온 멀티 코어 CPU 가운데는 TDP가 큰 것도 있지 않느냐는 반문이 있을 수 있지만, 이 경우에도 싱글 코어 터보 부스트는 제한을 두고 있으며 최대 전력 소모는 모든 코어를 풀로 가동할 때 발생한다고 할 수 있습니다. 물론 쿨링 솔루션을 개선해서 프로세서가 전체적으로 쉽게 열을 식힐 수 있게 하면 이 문제를 더 줄일 수 있을 것입니다. 제조사에서 원가 절감 차원에서 그렇게 하지 않을 수도 있긴 하지만요.
핫 스팟만큼 전문적인 문제로 다크 실리콘 (Dark Silicon) 문제가 있습니다. 그런 만큼 사실 이런 댓글이 달린다는 것이 신기한데 연재 포스트의 초반에 다크 실리콘 문제로 더 이상 프로세서 발전은 어렵다는 댓글이 있었습니다. 다크 실리콘은 프로세서의 주어진 TDP에서 정상적인 동작 전압하에서도 전력이 공급되지 않는 부분(amount of circuitry of an integrated circuit that cannot be powered-on at the nominal operating voltage for a given thermal design power (TDP) constraint)을 이야기 합니다.
기술적으로 복잡하지만, 간단히 이야기하면 과거에는 트랜지스터가 미세화되면서 전압을 낮출 수 있었는데 최근 미세 공정에서는 이게 안되면서 실리콘에 전기가 통하지 않는 면적이 자꾸 늘어난다는 것입니다. 이는 2011년에 발표된 논문에서 잘 설명되었으며 이 논문은 1000회 이상 인용되었습니다. 이는 다크 실리콘이 프로세서 업계에서 매우 중요한 문제라는 점을 보여주는 사례입니다.
H. Esmaeilzadeh et al., "Dark silicon and the end of multicore scaling", in 38th International Symposium on Computer Architecture (ISCA), pages 365–376, 2011.: ftp://ftp.cs.utexas.edu/pub/dburger/papers/ISCA11.pdf
하지만 이것 때문에 더 이상 프로세서의 성능이 증가하지 못한다는 이야기는 우리의 직관과 어긋납니다. ARM/x86 프로세서는 물론이고 GPU까지 이 논문이 나온 2011년 이후에도 성능이 크게 향상되었기 때문입니다. 물론 제조사들이 다양한 방법으로 다크 실리콘 문제를 극복해왔기 때문입니다.
대표적인 방법은 클럭을 낮추는 것입니다. 클럭을 낮춘다는 이야기는 결국 프로세서가 소모하는 전력을 낮춘다는 이야기로 프로세서 전체에 줄 전력이 부족하다면 아예 전체 소비량을 줄여 문제를 해결하는 것으로 이해할 수 있습니다. 다만 모든 프로세서에 클럭을 낮추면 싱글 코어 성능이 너무 떨어지므로 코어 1-2개만 클럭을 높여 성능 저하 문제를 회피하는데 이는 CPU업계에서 흔히 볼 수 있는 접근법입니다. 이 방법은 저전력 CPU를 만들때도 유용하게 사용할 수 있지만 앞서 말한 핫 스팟 문제가 있기 때문에 터보 클럭을 무제한으로 올릴 수는 없습니다.
다른 방법은 프로세서 면적을 크게 늘리되 대신 다양한 유닛을 넣는 것입니다. 동시에 여러 가지 용도의 로직을 넣으면 다크 실리콘이 될 부분을 다양한 용도로 활용할 수 있게 됩니다. 어차피 모든 실리콘을 동시에 사용할 수 없다면 다양한 기능을 지닌 유닛을 포함시켜 일부만 활용하는 것도 방법입니다. 이는 최근 강조되는 헤테로지니어스 혹은 이기종 컴퓨팅 방식이기도 합니다. (CPU+GPU나 저전력 + 고성능 CPU 등)
물론 핫 스팟이나 다크 실리콘 모두 100% 회피할 수 있는 방법은 없으며 사실 더 많은 트랜지스터를 집적한 프로세서일수록 골치 아픈 문제로 작용하게 된다고 합니다. 하지만 그것 때문에 프로세서 성능 발전이 멈춘건 아니라는 점은 우리가 지금 보고 있는 대로입니다. 다양한 방법으로 이를 회피하거나 최소화하면서 더 많은 트랜지스터를 집적한 칩이 계속해서 등장하고 있습니다.
일단 이 이야기는 여기까지 마무리하지만, 사실 우리가 사용하는 모든 고성능 프로세서는 이렇게 다양한 어려움을 극복한 결과물입니다. 그리고 지금도 문제를 극복하기 위한 노력이 이어지고 있어서 당분간은 더 빠른 프로세서가 계속해서 등장할 것으로 생각됩니다.
연재 포스트가 제법 길어지면서 이제는 본래 주제와 벗어난 이야기까지 많이 들어간 것 같습니다. 다음에 본론으로 돌아가 마무리를 해보겠습니다.
댓글
댓글 쓰기