CPU Overclocking

대개 CPU를 사면 ‘본전을 뽑겠다’는 심산으로 일부러 정해진 것보다 클럭속도를 올려서 일을 더 빨리 처리하겠다는 생각으로 오버클럭킹을 한다.

대충 배경 설명

일반적으로 디지털 회로 (CMOS(complementary MOS (transistor))-그러니까 0과 1에 대해서 켜지는 조건이 서로 다른 트렌지스터 두 개가 서로 보상하는 구조를 이룬다는 것에서 쓰는 말)에서는 전력 소모는 전압의 자승과 클럭스피드가 얼마나 빠르냐에 비례하게 된다.

이게 무슨 말이냐면 디지털 회로는 0과 1인 상태를 나타내는 그 자체에 대해서는 전류를 거의 흘리지 않는다. 전류를 흘리지 않는다는 말은 전기 에너지를 거의 소모하지 않는다는 말이되니까 디지털 회로가 0과 1을 바꾸고 있지 않는 정적인 상태에서는 전류를 흘리지 않는다는 말이다. 이게 다 CMOS라는 회로 구조 덕택이다. 즉 하나의 논리 상태를 나타낼 때는 2개 중 하나의 TR이 전류의 흐름을 막고 있게 하기 때문이다.

그런데 이 0과 1의 상태가 바뀌는 순간에는 이 두 개의 TR은 결국 전류를 흘릴 수 밖에 없다. 클럭이란 것은 이 0과 1의 상태를 얼마나 빨리 바꾸게 할 수 있느냐와 연관된다. 클럭이 한번 tick 할 때 디지털 회로는 자신의 상태를 바꾸게 된다. 따라서 클럭이 빠를 수록 단위시간에 더 많은 전류를 흘리게 된다. 이 때 이 TR이 나타내는 임피던스와 전압의 자승의 곱으로 표현되는 전력이 (열로) 소비되게 된다.

따라서, 클럭을 높이면 그만큼 열이 발생하게 되고 전력도 그만큼 더 소비된다. 또 디지털 회로의 논리 상태가 회로 내부에서 전파되려면 전자들이 이동해야 하는데, 그 과정에서 약간의 시간 지연이 발생하게 된다. 시간 상으로 보면 0과 1의 상태가 왔다 갔다 할 때 실제로 다음 단에서 그 상태를 받아들일 때의 모양은 서서히 올라가고 서서히 떨어지는 모양을 나타내게 된다. 클럭이 빨라지더라도 이 시간 지연은 그대로이기 때문에, 클럭이 빨라지게 되면 회로단과 회로단을 통해서 어떠한 논리상태가 전파될 때 0과 1의 상태가 애매모호하게 되는 것이다. 이것을 극복하려면 전압을 더 올려서 0과 1의 차이가 명확하게 해주어야 한다.

그러니까, CPU 오버클럭킹은 클럭 주파수를 올리는 것과 전압을 올려주는 두 가지 과정이 모두 필요하다. 따라서 소비 전력은 주파수 증가에 대한 것, 그리고 전압 증가에 의한 것까지 해서 늘어나게 된다. 열도 그에 비례하게 더 발생하게 된다.

오버클럭킹 꼭 해야되나?

대략 권장 클락대비 10% 정도의 여유를 주고 물건을 출하했다고 하면, 사용자 입장에서는 그 성능을 최대한 뽑아먹기 위해서 클럭을 110% 정도로 올렸다고 치자. 그러면 성능은 1.1배 정도 나오게 될 것이라고 보면 (실제로 주변 장치와 주고 받는 데이터의 속도는 그렇게 늘어나지 않으므로 성능 증가는 10%가 되지 않는다. ), 소비 전력은 전압 증가 10%를 대충 포함하면 30% 정도 늘어나게 된다. 그만큼 더 발생하게 된 열을 덜어주기 위해서 cooler도 더 많은 일을 해야 되고 파워가 받는 부담도 늘게 되고 열도 더 발생하게 된다. 그러나 성능 증가는 10%가 되지 못한다.

사람들이 일반적으로 컴퓨터에게 시키는 일을 보면 single thread로 하는 일보단 multi-thread로 하는 일이 점점 많아지고 있다. 그런 식으로 소프트웨어가 개발되어지고 있고. 최근의 CPU들은 대부분 4 thread 이상을 벌일 수 있게 되어있어서 비교적 고급형의 CPU로 치면 10 thread 이상을 벌일 수가 있고 대개의 작업들은 4개 이내에 머무르고 있다는 걸 생각하면 오버클럭킹이 별 다른 의미를 갖지 못함을 알 수 있다.

즉, 전력소비를 30% 늘려가며 싱글코어 처리 속도를 10% 개선하기보단 multi-thread를 잘 활용하거나 소프트웨어 자체의 효율을 늘린다거나 개개인의 업무 습관을 개선해서 얻는 이득이 훨씬 크다. 실제로는 대부분의 일을 타이핑하는 데 쏟으면서 8개 이상의 코어를 쓸데 없이 켜두고 있거나, 그것도 모잘라서 오버클럭킹을 해서 30%의 전력을 더 사용하고 있다고 생각해보라. CPU의 전력 제어는 만능이 아니라서, 타이핑만 하고 있다고 그 자신의 전력소모를 그에 맞춰서 최소화하진 않는다. 그러려면 제작비용도 더 들고 여러 가지로 불안해지는 요소가 많으니까 그렇게 하지 않는다.

그러면 어떻게 하라고?

오버클럭킹을 본전 뽑기 내지는 효율의 측면에서 접근하려 한다면 차라리 (컴퓨터)투자비용 대비 처리능력이라든가 투자비용 대비 수익의 효율로 봐야하지 않을까 하는 생각이다. CPU에게만 효율을 요구할 게 아니라 컴퓨터를 사용하여 당신이 뽑아낼 수 있는 효과와 수익을 따져봐야 된다는 말이다. 그것의 해답이 오버클럭킹에 있다고 판단되면 그렇게 하시든가.

나는 효율의 계산 방식이 달라서 그런지 모르겠지만, 내가 컴퓨터를 사용해서 얻을 수 있는 수익에 맞추게 된다. 몇 주간 수십대의 컴퓨터를 사용해서 열심히 모의실험을 했는데, 그 모의 실험의 가정에 문제가 있어서 그 모든 실험결과는 의미가 없는 것이 되었다 하면 나의 업적효율은 0이 되는 것이다. 실수를 통해서 배울 수 있는 것 아니냐 할 수 있겠지만, 애초에 1시간 2시간 더 들여서 나의 가설을 충분히 검증했다면 훨씬 높은 효율의 결과를 얻어낼 수 있었을 것이다.

인간 세상에서 이런 효율 0의 일은 수도 없이 많이 하고 있고 벌어지고 있으니까 효율를 따지는 것 그 자체가 무의미하다라고 하면 할 말 없다.