나는 무엇을 공부(연구) 하는가? -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로 줄여야 하는 것이기 때문에 쉽지 않은 일이지요.

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

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

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

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

컴퓨터의 핵심이라고 하면 아무래도 중앙연산장치, CPU, 라고 볼 수 있습니다. (요즘과 같이 비주얼한 것이 판을 치는 상황에서, ubiquitous computing을 지향하는 상황에서 디스플레이내지는 GPU 라고 말할 수 도 있겠지만, 일단 그것은 제쳐두고….)

CPU를 연구한다는 것은 굉장히 광범위하면서도 추상적인 개념이라서 정확히 무엇을 한다는 것을 전달하기가 어렵습니다. 제 분야는 computer architecture인데요, 컴퓨터 구조, 즉 어떻게 CPU를 설계할 것인가에 관한 영역입니다. 이것도 제대로 전달하기 쉽지 않은 것인데요, 어떤 소자를 사용해서 반도체를 설계할 것인가라기 보다는 추상적으로 논리회로의 구성을 고민하는 것이라고 보면 됩니다. 소위 말하는 Hardware 설계와 밀접한 관련이 있으면서도 어떻게 보면 software 레벨에서 ‘신선놀음’하는 것이라고 볼 수 있습니다. 왜냐하면 CPU를 이렇게, 저렇게 설계해야 한다고 청사진을 그리는 것이니까요.

컴퓨터에 관해서 상당한 지식이 있으신 분들은 CPU는 이미 충분히 좋은데 무엇을 ‘더’ 연구할 것이 있느냐고 반문을 하실지도 모르겠습니다. 그런데 CPU 발전 역사를 돌아 보면 전혀 그렇지 않다는 것을 알 수 있습니다. 지난 30~40년간의 CPU의 발전의 역사의 핵심은 VLSI의 역사와 함께 합니다. Very Large Scale Integration 은 다시 말하면 어마 어마 하게, 울트라 캡숀 짱으로 회로들을 집적시켰다는 것입니다. 조금더 쉽게 말하면 마치 킨코스에서 축소 복사를 하는데, 축소율을 계속 높여서 중간고사에서 다루는 교재를 손바닥 만한 종이에 다 복사해버린 정도를 연상하시면 될 것 같습니다. 반도체를 그만큼 작게 만들어서 손톱만한 칩 안에 수십억개의 게이트 (반도체 설계에서의 논리 단위) 를 때려 넣게 된 것입니다.

이 많은 게이트를 때려 넣으면 (원하는 내용을) 그것이 CPU도 되고, 메모리도 되고, 그리고 ipod의 flash 칩 같은 것도 되게 됩니다.

이야기가 딴데로 빠지기 전에, 아무튼 이러한 반도체의 발전으로 CPU설계는 아주 쉽게 고성능 결과물로 이어졌습니다. 그 이유는 의외로 간단한데요, 반도체 회로들은 전기가 흐르면서 서로 신호를 주고 받게 됩니다. 게이트들을 더욱 작게 만들다 보니, 서로 간의 거리가 짧아지면서 더욱 짧은 시간 안에 서로 신호를 주고 받게 된 것이죠. 이렇게 짧아진 신호주기는 소위 말하는 클럭 프리퀀시를 높여주게 되었습니다. 노트북이나 데스트탑을 살 때에 몇 기가허츠 의 CPU가 탑재되어 있느냐가 바로 이것을 말하는 것입니다.

무어라는 사람이 아주 오래전에 예견하기를 반도체는 2년마다 그 집적도가 2배가 될꺼라고 했습니다. 간단하게 생각하면 그만큼 반도체도 빨라지게 된 것입니다.

그 덕분에 컴퓨터 구조를 연구하는 사람은 엄청 애를 쓰지 않아도 계속해서 더 빠른 CPU를 만들 수 있게 된 것이었죠.

그런데 여기서 문제가 생기기 시작했습니다.

사실은 굉장히 여러가지 문제가 생기기 시작했는데, 엄청 해결하기 힘든 문제가 생겨 버렸습니다. 바로 전력소비량이 많아진 것입니다.  쪼그만 칩이 써봐야 얼마나 많은 전력을 쓰겠어? 라고 생각할 수도 있는데요, 사실은 작아서 더 문제입니다. 소비되는 전력은 결국 열의 형태로 에너지 변환이 일어나는데요. 이 작은 칩에서 많은 열을 내다 보니, 이제는 칩 전체가 녹아버리는 수준에 도달한 것입니다. 생각보다 심각하지요?

예전의 CPU설계는 제한된 게이트 예산 안에서 고성능을 추구하는 것이였다면, 이제는 제한된 전력 예산안에서 고성능을 추구하는 것이라고 볼 수 있는 것입니다. 많은 학교의 교수들과 회사 연구원들이 예측하기로는 한동안 무어의 법칙은 계속될 것이라고 합니다. 그러면 갈수록 전력 예산은 상대적으로 더 중요해지는 문제가 되는 것입니다.

지금까지 제시된 그 해결책에 대해서는 다음에 계속해서 올리도록 하겠습니다.