|
안녕하세요. 제임스 랜더스(인텔 국장) 입니다. 오늘은 최근 많은 주목을 받고 있는 멀티코어 프로세서들에 대해서 이야기해 보는 시간을 가지도록 하겠습니다.
사람들이 저에게 흔히 던지는 질문이 있는데요. 이 질문을 여러분들께 드려보겠습니다. 멀티코어 프로세서는 그냥 지나가는 일시적인 유행일 뿐인가요, 아니면 오랫동안 지속적인 인기를 구가할 그런 기술인가요? 과연 멀티코어 프로세서는 우리가 관심을 가지고 지켜 볼만한 것인가요? 물론 이 질문들에 대한 답은 모두 “예스” 입니다. 멀티코어 프로세서들은 한 때 지나가는 유행이 아니죠. 그래서 오늘은 왜 멀티코어 프로세서가 뜰 수 밖에 없는지 대해서 알아보는 시간을 가지겠습니다. 우리 프로그래머들은 반드시 알아야 하는 정보들이라고 할 수 있죠.
우선 첫째, 왜 멀티코어 프로세서인가요? 먼저 전력 소모량을 들 수 있습니다. 전력 소모량은 마이크로프로세서가 갈수록 클록속도(clock rate) 증가 속도를 줄일 수 밖에 없는 주요 원인을 제공하고 있습니다. 이 밖에도 두 가지 이유가 더 있는데요. ILP(instruction level parallelism)와 메모리의 한계가 바로 그것입니다. 이 세가지 이유에 대해서 조금 더 자세히 살펴보도록 하겠습니다. 이들이야 말로 사람들로 하여금 멀티코어 프로세서로 전환하게 한 주요 요인들이기 때문입니다.
전력 소모 관련 문제는 다른 나머지 요인들 보다 더 널리 알려진 문제인 것 같습니다. 먼저 나머지 두 개 요인에 대해서 설명하겠습니다.
한가지는 ILP입니다. ILP는 마이크로프로세서가 효율성 향상을 위해 여러 작업을 동시에 수행하는 경우를 말합니다. 프로세서의 클록 속도를 늘리면, 프로세서는 한 번에 더 많은 작업을 수행할 수 있게 됩니다.
문제는 현재 존재하는 프로그램들 중에 병렬 처리 형태로 실행될 수 있는 작업들을 찾는 것 자체가 매우 어렵고, 이 때문에 클록 속도는 갈수록 증가함에도 불구하고 성능이나 효율성 향상 속도는 그에 미치지 못하는 현상이 발생했습니다. 이러한 불균형 적인 변화 양상으로 인해 오히려 클록 속도가 개선되면 개선될수록 상황은 더욱 악화되는 단계까지 간 것이죠. ILP는 우리가 생각해봐야 할 문제들 중 하나입니다.
또 다른 문제는 메모리 입니다. 현재 프로세서의 클록 속도의 증가 속도가 메모리 클록 속도의 증가 속도보다 더 빠른 양상을 보이고 있고, 최근까지도 이러한 경향을 계속되고 있습니다. 이 때문에 마이크로프로세서의 형태에서 클록 속도를 향상시켜봤자, 기대만큼의 성능 향상을 일구어 낼 수 없는 것이죠. 결국 프로세서의 클록 속도를 따라가기 위해 더 큰 규모의 캐쉬 메모리들을 추가할 수 밖에 없는 상황입니다. 멀티코어 프로세서에서는 실제로 이러한 클록 속도의 증가 폭을 일정 부분 제한함으로써, 상황이 점점 악화되는 것을 막을 수 있습니다.
그리고 전력 문제입니다. 아마 세 가지 이유들 중에서 가장 많이 언급되었던 부분이라고 생각합니다. 마이크로프로세서의 전력 소비량의 증가가 감당할 수 없는 수준까지 올라갔던 것이죠.
단적인 예를 들어보죠. 마이크로프로세서가 있습니다. 그리고 일정 수준의 전력 효율성을 보유하고 있겠죠. 가장 기본적인 형태로 시작해 보겠습니다. 어떤 프로세서가 1개 단위의 전력 소모로 1개 단위의 성능을 낼 수 있다고 가정합니다. 1대 1의 비율이죠. 여기서 이 프로세서가 13%의 성능 향상을 일구어 내고자 한다면, 전력 소비량을 얼마나 증가해야 할까요? 보통 13% 정도의 성능 향상 폭을 만들어내려면 전력 소비량은 73% 정도 증가해야 합니다. 똑 같은 마이크로프로세서 임에도 불구하고 점점 효율은 떨어지는 것이죠.
마이크로프로세서는 과거에 비해 괄목할만한 성능 향상을 일구어 내왔습니다. 하지만 일정 수준이 지난 후, 성능 향상 속도가 둔화되면서, 클록 속도를 향상시키고, 전력 소모량을 늘려봤자 예전만큼의 기대 상승 폭을 충족시켜주지 못하는 상황에까지 처하게 된 것입니다. 실제로 13%의 성능 향상을 위해 전력 소비량을 73% 늘리는 것은 그리 좋은 방법이 아닙니다.
흥미로운 것은 클록 속도를 오히려 감소시키는 것이 더 효율적이라는 연구 결과가 나오고 있고, 또 그 근거가 상당히 신빙성 있다는 점입니다. 실제로 기존 프로세서의 성능의 87%를 구현하기 위해 드는 전력 소모량은 얼마 정도 될까요? 전력 소모량은 평상시 대비 51%에 그친다는 사실을 알 수 있습니다. 즉 87%의 성능을 내기 위해 전력은 51%만 써도 된다는 것이죠.
이러한 결과들에서 우리는 왜 사람들이 굳이 2개의 프로세서를 한데 묶어 사용하는 멀티코어 프로세서 방식을 이용하기 시작했는지 이해할 수 있습니다. 거의 비슷한 전력 소모량으로 성능은 73%이상 더 끌어올릴 수 있기 때문이죠.
클록 속도를 감소시키는 대신 두 개의 프로세서를 묶어 사용하는 아이디어는 매우 훌륭한 속임수라고 할 수 있습니다. 클록 속도를 감소시킴으로써 전력 소모량을 기존에 한 개를 사용했을 때와 비슷한 수준으로 유지함과 동시에 성능을 두 배 가까이 향상 시킬 수 있는 것이죠. 이러한 조그마한 발견이 실제로 듀얼 코어 프로세서, 그리고 콰드 코어 프로세서들을 개발하게 만든 주요 동기 부여 요인이 되었습니다. 단순히 클록 속도를 줄이자는 아이디어가 말이죠.
성능 향상을 유발하는 변화는 이것 이외에도 몇 가지 더 있습니다. 우선 프로세서들의 크기가 점점 작아지면서 우리는 같은 공간 안에, 2년 전보다, 두 배 이상의 프로세서를 넣을 수 있게 되었습니다. 물론 성능이 두 배가 되는 것이겠지요. 클록 속도를 줄이는 것 말고도 이와 같이 여러 성능 향상 방법이 존재합니다.
이처럼 성능 향상을 가능케 하는 다른 여러 가지 대체 방안들이 있기 때문에 우리는 영원히 클록 속도를 줄이는 방식으로 성능 향상을 모색하지는 않을 것입니다. 다만 전력 소모량에 변화를 주지 않으면서 주어진 공간을 활용, 최대한의 성능을 뽑아내기 위한 방법을 지속적으로 모색하는 것일 뿐입니다.
앞의 3가지 요인들이 멀티코어 프로세서의 성장을 유발할만한 이유가 있다는 사실은 이제 모두 아셨을 겁니다. 이와 더불어 이번 시간에 멀티코어 프로세서에 대한 또 한가지 아이디어를 여러분과 공유하고 싶은데요. 지금까지 듀얼코어, 콰드코어로 불리는 프로세서들은 모두 최신 사양을 프로세서들을 그냥 단순히 결합한 형태라고 볼 수 있습니다. 거의 오늘날 구현할 수 있는 최고의 성능을 보유한 프로세서들을 묶은 것이죠.
혹자들은 만약 이들보다 더 저 사양, 즉, 한 10년 전에 출시된 작은 규모의 프로세서들을 다량 활용하면 어떨까라고 저에게 질문하고는 합니다. 규모가 작은 프로세서들을 여러 개 활용하는 것이 더욱 효율적이지 않을까라는 생각을 한 것이지요. 하지만 현실적으로 10년 전의 프로세서들은 오늘날의 프로그램들을 실행시킬 수 있는 능력이 없습니다. 그래서 사람들은 결국 최신 프로세서들을 찾는 것이죠. 하지만 만약 이 둘을 적절하게 혼합하면 어떨까요? 몇몇 최신 프로세서들과, 규모가 작은 저 사양 프로세서들을 한데 섞어 활용하는 것입니다. 빠른 시일 내에는 무리이겠지만, 결국 이러한 형태가 차세대 멀티코어 프로세서 시장을 이끌어 나갈 것이라고 예상합니다. 지금 시중에는 콰드코어 프로세서가 나와 있죠. 전 8코어, 16코어의 제품까지 나올 것이라고 생각합니다. 이러한 발전 양상을 확장해서 생각한다면, 수백 개의 소규모 코어를 한 데 묶은 제품을 상상해보는 것도 나쁘진 않은 것 같습니다.
물론 소형 프로세서들만으로 이루어진 제품을 찾아보긴 힘들 것 같습니다. 하지만 둘을 섞어놓은 제품은 충분히 등장할 수 있습니다. 아마 시리즈 후반부에 이러한 형태의 프로세서에서는 어떻게 프로그래밍을 할 것인가에 대해서도 고민해 보아야 할 것 같습니다. 결국 궁극적으로 멀티코어 프로세서 시장은 이와 같은 경향을 따를 것이고, 언젠가는 이러한 형태의 프로세서를 이용해야 할 날이 올 것이기 때문이죠.
|