나는 무엇을 공부(연구) 하는가? -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의 세계에 대한 이야기를 올려보도록 하겠습니다.

보험문제를 겪으며……

두달여간 끌어오던 아이의 보험문제가 해결되기 시작하였습니다.  3월에 텍사스에서 같은 병명으로 같은 보험회사에서 reject되었던 뉴스를 접한 이후로 항상 불안한 마음이 있었는데, 실제로 보험에서 문제가 생겨서 한동안 해결을 위해서 많이 신경써야 했습니다. 알고 보았더니 문제는 retroactive adjustment에서의 너무나도 더딘 진행이었습니다. 병원에서는 collecting agency에 넘기겠다고 나오고, 보험회사에서는 기다리라고만 하는 중간에서 마음 고생을 한 경우였습니다. 해결의 실마리가 보이기 시작하니 싱거운 면도 없지 않지만, 참 마음이 무거웠던 시간이었습니다.

이런 문제를 겪는 과정에서 제 자신이 얼마나 약한지를 절감할 수 있었습니다. 청구된 의료비는 제가 감당할 수 없는 금액이고, 보험회사의 결정에 따라 보험처리가 되던지, collecting agency와 대면을 하던지 해야 하는 상황에서요. 말로는 세상을 거스르자고 하지만, 세상의 시스템 안에서 자유롭기는 쉽지 않네요.

얼마전 학교에서 친구와 식사 후에 모 고등학교와 모 대학교를 졸업하고 미국에서 유학을 하고 있는, 소위 엘리트 학생, 분들의 직업 선택 경향에 대해서 비판적으로 이야기한 적이 있었습니다. 제 의견은 고연봉을 받을 수 있는 진로/직업을 선택하는 경향이 두드러지고 있고, 집업을 선택하는 기준이 연봉이라는 점이 문제가 있다는 것이었습니다. (사실은 그 직업에 대한 감정적 비판도 많이 섞였었죠… ) 그 친구는 제게, 어느 직장으로 가던지 직업에서의 성취감 등의 만족도가 크게 다르지 않다면 당연히 연봉이 많은 쪽으로 가는 것이 당연하지 않냐고 하였습니다. 저는 자신이 가진 능력을 제한된 리소스를 얻는데 최적화 하는데 사용하기만 한다면 사회가 어떻게 되겠냐고 반문하였지만, 그다지 그 친구와 이야기를 하는데 있어서 중요한 이슈가 되지 못했습니다.  사실 상당히 무신론적인 그 친구에게 제 의견의 바닥에 깔려있는 소명이나 직업관, 더 나아가 세계관을 이야기해야 했었겠지만, 별로 진도를 못 나간 셈입니다.

이번 일을 겪으며 돌아보면서, 그 친구도 사실은, 다른 여러 일들로 생긴 사회에 대한 여러 불안을 극복하기 위한 수단으로, 자신을 그렇게 무장하고 있구나라는 생각이 들었습니다. 어떻게 보면 제가 너무 이상적으로만 생각한 것일 수도 있겠습니다.

오바마의 의료개혁이 실제적으로 실패하고 있는 가운데, 시스템을 어떻게 하면 개선할 수 있다고 말하기 힘든 상황입니다. 의료보험이 개선되어야 한다고 생각하지만, 사회보장의 강화가 가져오는 실패도 뻔하니까요. 저는 개개인이 변화해야 한다고 말하고 싶습니다. 사회 구성원이 하나 하나 변하기 시작하면  세상이 변하지 않겠냐구요. 그런데 제 자신이 이런 작은 일에도 너무 나약하고, 시스템은 너무 커보입니다. 세상의 시스템 안에서 최적화를 하고 있는 친구들에게 설득력도 없는데, 어디서 고민을 함께 시작할 수 있을지 이 고민이 많이 되네요……

범블이의 카리스마

범블이의 카리스마, 일단 보시라니까요…

간지 포스 작렬!

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

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

상대성

어제 밤에 제가 시끄럽게 했던 탓인지, 새벽 내내 다혜가 많이 울고 힘들어 했습니다.

해가 떠서 아이도 잠잠해지고, 학교로 나오면서 아내에게 잘 다녀 오겠다고 인사를 하는데……

“헉, 서연, 얼굴이 왜 이렇게 커??”

한참을 아이를 보다 보니 아내의 얼굴이 한 눈에 들어오지 않는 상대적 충격에 그만 또 몹쓸짓을 하고 맙니다.

자가정비4- 엔진오일! 혼자 갈아 보아요

엔진오일 교환은 생각보다 쉬운 작업입니다. 그렇지만 사용한 엔진오일의 처리 문제와 많은 경우에 차 밑으로 어떻게든 들어가서 작업해야 하는 문제가 있어서 개인적으로 별로 선호하지 않는 작업입니다. 그런데, 유럽 차중에 간혹 자기가 독일 고급차인양 오일 교환에 100불 이상씩 비용이 드는 경우가 있어서 어쩔 수 없이 직접하게 되었습니다. (참고로 이 모델은 3년간 무료 정비-엔진오일 교환 포함- 를 해주지만 그 주기가 1만 마일이라서 그 중간에 한번 교환을 해주기로 마음 먹었습니다.)

이 차의 경우는 딥스틱 (엔진 오일양을 측정하는 것, 사진의 빨간 작은 손잡이) 바로 아래에 엔진오일 필터가 보입니다. 이런 경우에는 굳이 차 밑으로 들어가서 작업할 필요가 없어서 수월합니다.

사진에서 보이는 것은 “liquid extractor”란 키워드로 찾으시면 쉽게 구입하실 수 있는 오일 빼는 통입니다. 통 안을 진공처럼 만들어서 엔진오일을 뽑아내는 역할을 합니다. (개인적으로 MityVac 을 추천합니다.)

역시 예상대로 엔진 오일 색깔이 많이 탁합니다.

자, 이제 엔진 오일을 다 뽑아내고 나면 오일 필터를 교환해줍니다. (오일 통에 뽑아낸 오일의 양이 차량의 “engine oil capacity”만큼인지 확인합니다. 자동차 구입할 때 같이 따라 오는 사용자 설명서에 명시되어 있습니다.)  필터를 교환하기 위해서는 필터렌치가 필요합니다. 차종별로 사이즈가 틀리므로 주의하셔야 합니다. 동네 자동차 부품점에 가면 one size로 쓸 수 있는 렌치도 있으므로 편하신대로 구입하시면 됩니다. (ebay 에서 차종과 filter wrench라고 검색하시면 저렴하게 구입 가능합니다.)

고급 자동차 정비 매뉴얼을 보면 이렇게 엔진 오일 필터를 교환해주면 필터 아래에 남아있는 엔진오일을 주사기로 뽑아주라고 적혀져 있습니다. 좋은 방법이긴 한데, 키친 타월등을 이용해서 닦아주어도 충분히 효과적이긴 합니다.

자, 이제 반대로 새 오일필터를 설치해주시면 됩니다. 회사마다 필터를 조립할 때, torque를 명시해  놓곤 하는데요, 기본적으로 손으로 적당히 돌려서 조인 정도입니다. (애매하지요? ㅋㅋ 온 힘을 다해서 조이시지 말라는 이야기입니다.)

이제 남은 일은 새 엔진 오일로 채워주는 일입니다. 기본적으로 뽑아낸 양만큼 부워주고 조금 여유를 두면서 조금씩 추가해주는 것입니다. 뽑아낸 만큼 새 오일을 보충해주면, 원래보다 오일 눈금이 내려가게 됩니다. 오일 필터 내에 머금고 있었던 오일도 있고, 오일 교환하면서 조금씩 닦아내거나 한 양이 있으니까요. 처음 엔진 오일을 채운 후 시동을 걸어서 5분 이상 기다린 다음 딥스틱으로 오일양을 확인하면서 조금씩 더 채워가는 것이 정석입니다.

자, 이게 전부입니다.

참 쉽죠~~~~잉?

뉴욕 – 전 시골쥐입니다.

미국에 갓 유학왔을 때만 해도 뉴욕을 가면 서울같은 분위기에 편안했었습니다.

그런데 시골 동네에 오래 있어서 그런지, 이제는 뉴욕에 가면 길에 사람들이 너무 많아서 정신이 하나도 없네요. 그리고 자동차 매연때문인지 목도 아픈 것 같구요. 결국 며칠만 지내면 익숙해지지 않을까 싶지만서도 제가 이제는 시골생활에 익숙해진 모양입니다. 메릴랜드를 완전히 시골이라고 할 수는 없지만, 뉴욕에 비하면 시골 맞는 것 같습니다.

그래도 반가운 분들을 만날 수 있어서 훈훈했던 여행이었습니다.