나는 무엇을 공부(연구) 하는가? -3

이번 부터는 본격적으로 제가 공부(연구)하는 분야에 대한 이야기를 하려고 합니다.

십수년 전만 해도 학계에서의 아키텍처 관련 연구가 현장(실제 반도체 회사) 보다 10~20년 앞선다고 이야기했다고 합니다. 그런데 요즘에는 상황이 많이 달라졌습니다. 학계에서 심각하게 생각하지 않았거나 학술적으로 별로 재미없거나 흥미없는 문제들이 아주 큰 골치거리로 등장하기 시작하면서부터 상황이 많이 바뀌게 되었죠. 새로운 CPU 제품을 새로 개발하고 상품화하여서 시장에 나오기까지는 오랜 시일이 걸리고 막대한 연구비가 들어가게 됩니다. 그런데 수년전 인텔에서는 새로운 제품라인을 상품화 직전에 취소하고 말아버리는 사태가 발생하였습니다. 바로 CPU에서의 발열 문제를 해결하지 못한 것 때문이었습니다. 지난 번에 언급한 것 처럼 “열” 문제는 상당히 심각해져서, 이 문제가 현장의 방향을 결정하게 되는 중요한 기준이 되린 것 입니다.

이러한 상황에서 두가지 해결책이 제시 되었습니다. 하나는 Simultaneous multi-threading이고 다른 하나는 Chip multi processor였습니다. 결론부터 적자면 후자가 대세를 이루게 되었습니다. (이 부분은 조금 자세한 설명이 필요하니 다음 번에 언급하도록 하겠습니다. ) Chip multi processor를 쉽게 표현하자면 칩 하나에 두개 이상의 CPU를 넣는 것입니다. “Core Duo”라는 이름의 CPU를 들오보신 분들이 있으실 텐데요, 이게 바로 CPU가 두개 들어가 있는 칩입니다. (요즘은 Quad Core가 대세지요? 네, CPU가 4개 들어있습니다.)

이쯤 오면, 이렇게 CPU를 여러개 넣는 것이 “열” 문제랑 어떤 관련이 있는지, 여러개의 CPU를 많이 넣으면 컴퓨터의 성능은 계속 좋아지는 것일 것 같은데 무슨 연구의 여지가 있는지 궁금해지실 법합니다.  아키텍처에서 많이 비유를 하는 세탁기를 가지고 설명해 보겠습니다. 우리가 가진 현재의 문제는 하나의 덩치가 큰 세탁기가 전기를 너무 많이 먹는다는 것이었습니다. (전력 소비량이 열에 비례한다는 것을 소리소문없이 가정하였습니다…) 그래서 더 큰 세탁기를 만드려다 열 문제를 해결하지 못해서 새로운 제품 계획이 표류중인 상황인 것입니다. 그런데 이 상황에서 재미있는 상상을 해봅니다. 이 큰 세탁기를 만들 수 있는 재료로, 조금 작은, 그래서 전력 소비량이 작은, 세탁기를 두 대를 만드는 것입니다. 이 ‘조금’ 작은 세탁기는 덩치가 큰 세탁기에 비해서 전력은 반 밖에 소비하지 않는데, 세탁물은 70%를 소화할 수 있는 것입니다. 그러면 원래의 큰 세탁기가 사용하는 전력으로 140%의 세탁물을 처리할 수 있게 된 것입니다. 흥미가 땡기시나요? 실제로 수식을 사용하고, 현재 상황에 대입해 보자면요, 반도체 칩 하나에 넣을 수 있는 게이트의 수는 2년에 2배가 된다고 하였습니다. 그리고 소비 전력은 칩에 공급하는 전압의 제곱에 비례하구요. 똑같은 CPU에 원래 공급 전압의 70%를 공급하게 되면 소비전력은 49%, 대략 절반 가량으로 줄어듭니다. CPU에 동작 속도는 공급 전압에 비례한다고 보시면 되기 때문에, 두개의 저전압이 공급된 CPU는 원래의 CPU에 비해서 같은 전력을 소비하면서도 140%의 일을 할 수 있는 것이지요.  그러면 왜 굳이 “작은” 세탁기에 비유했는지 궁금하실텐데요, 이부분도 조금 복잡한 개념이 들어가기 때문에 다음에 설명하도록 하겠습니다.

자, 모든게 행복해 보이는 것 같지만, 제가 아직 언급하지 않고 넘어가서 거짓말처럼 보이는 부분이 사실 있습니다 (세상엔 공짜가 없는 법이죠).  과연 두개의 CPU가 함께 있을 때, 진짜 140%의 일을 처리할 수 있냐는 것입니다. 두개 이상의 CPU를 함께 사용하는 것은 병렬처리, 병렬 연산, parallel computing, 뭐 기타 등등으로 표현할 수 있는 것입니다. 사실 지금까지 장황하게 설명한 것은 이 parallel computing이 필수불가결한 선택이 되어버리 현 상황을 설명하기 위해서 였습니다.

자 다음부터 본격적으로 parallel computing의 세계에 대한 이야기를 올려보도록 하겠습니다.

나는 무엇을 공부(연구) 하는가? -2

주어진 전력예산 안에서 어떻게 고성능을 추구해왔는지에 대해서는 전구에 비교해보려 합니다.

요즘 홈디포에 가게 되면 수많은 Energy Saving Light Bulb들을 보게 됩니다. 이제 환경을 위해서 그리고 전기료를 아끼기 위해서 무언가 행동이 필요하다는 공감대가 형성된 것 같습니다. (전구회사에서의 마케팅 전략일 수도 있지만서두요… )

CPU에서 제시된 해결책도 상식선에서 이해할 수 있는 해결책들이 많이 있었습니다. 아버지께서 항상 “안쓰는 불은 꺼두어라” 하셨던 것도 그 중에 하나입니다. CPU를 구성하고 있는 여러 분류의 영역별로 사용하지 않는 경우에 그 부분많을 아예 전기를 꺼버리는 방식입니다. 조금 깊이 들어가자면 전기를 끊어버리는 방식과 CPU에서의 심장박동과도 같은 Clock을 멈춰버리는 방법들이 있었습니다. 집에서 안쓰는 전구를 끄는 것에도 전구 빛을 사용하는 효용성과 절약이라는 두 가지 기준내에서 지혜가 필요하듯, 간단하지는 않지만 CPU 설계에 있어서도 여러가지 이론들이 제시되었었죠.

집에서 사용하고 있는 스탠드 중에 전구의 밝기를 2단계로 조절할 수 있거나, 조금 더 고급의 스탠드 중에 점진적으로 밝기가 조절되는 것이 있습니다. 당연히 조금 어둡게 하면 소비전력을 줄일 수 있겠지요. CPU에서는 조금 전에 언급했던 clock의 빠르기를 조절하여서 비슷한 효과를 얻을 수 있습니다. 실제로 PC 같은 경우에 CPU가 대부분의 시간을 아무 일도 하지 않고 놀고 있다고 보시면 됩니다. 웹서핑을 하는 경우 CPU의 동작비율을 평균 2~3프로 미만이 경우도 많이 있습니다. (물론 개인차가 많겠지만요. ) 이런 경우에 CPU를 조금 사용한다면 그 정도의 일만 처리할 수준으로 CPU를 느리게 해버릴 수 있습니다. 아주 간단하지만 획기적으로 소비전력을 줄일 수 있었던 아이디어였습니다. 노트북을 사용하시는 경우에 Power management option란에 가시면 배터리 최적화 옵션이 있을 것입니다. 이런 경우에 실제로 CPU가 사용양에 따라서 빠르게도 느리게도 작동하게 됩니다.

이런 방법외에도 근본적인 해결책도 많이 제시되고 있습니다. 백열전구 대신에 형광등을 사용하듯이, 반도체 소자 차원에서 전기를 작게 소비하는 연구들이 활발히 진행되고 있습니다. 그렇지만 반도체의 집적도가 2년에 2배가 되는 것을 따라가기에 버거운 상황이지요. 2년마다 2배의 게이트를 담고 있는 칩을 만들고 있는데, 같은 전력을 소비하기 위해서는 게이트당 소비전력이 1/2로 줄여야 하는 것이기 때문에 쉽지 않은 일이지요.

그리고 실상은 훨씬 더 심각한 수준인데요. 반도체를 더욱 작게 만들다 보니 예전에는 없었던 일들이 벌어지기 시작했습니다. 게이트를 작동시킬 때마다 소비하게 되는 전력 뿐만이 아니라 평소에 새고 있는 전력 (네, 진짜로 새고 있답니다.) 이 어마어마하게 늘어나 버린 것입니다. 비유적으로 설명하자면, 수도꼭지를 계속해서 작게 만들다 보니 이제 수도꼭지를  잠궈도 계속 물이 세는 상황이 되어 버린 것입니다.

비유적으로만 설명하다보니 조금 정확하지 않은 부분이 있지만요, 아무튼 근본적인 해결책이 제대로 없는 상황이 되어버렸다는 것이 현 주소인 것입니다. 이런 상황속에서 꽤나 흥미 있는 방법이 주목을 받게 되었습니다.

다음에 계속해서 이 방법에 대해서 올리도록 하겠습니다.