본문 바로가기

Lecture & Column/cpu_lec_col

오버클럭의 공학적 배경

Author : Daeguen Lee

(Any action violating either copyright laws or CCL policy of the original source is strictly prohibited)


흔히, "오버클럭을 하면 소비전력이 늘어나기 때문에 전압을 더 줘야 한다" 고 생각합니다.
하지만 과연 이게 맞는 명제일까요?

만약 위의 명제가 참이라면 오버클럭시 CPU의 요구전압은 "클럭에 비례해서" 올라가야 합니다.
하지만 실제로 오버클럭을 하다 보면, 클럭이 계속 낮아져도 요구전압은 어느 선 이하로 내려가진 않으며
반대로 클럭을 높일 때에는, 요구전압은 선형적으로 클럭에 상승폭에 비례해 증가하지 않고
클럭 상승폭보다 더 급격하게... 마치 exponential하게 증가하는 모양이 됩니다.

...왜일까요?


1.

기본적으로 프로세서는 트랜지스터를 이용한 논리 회로의 묶음입니다.

트랜지스터는 작은 전기 신호(0 또는 1)를 사용해 큰 전기 흐름을 바꾸는 부품입니다.
즉 '큰 흐름' 이 존재하는 상황에서 트랜지스터는, 작은 신호를 통해 그 흐름을 끊거나 증폭시켜 주죠.
(예: NAND 트랜지스터의 입력단자에 0과 1이 입력되면 NAND 트랜지스터는 큰 전기 흐름을 중단시킵니다.
논리연산의 진리표를 생각하시면 쉽습니다. 입력되는 것이 '작은 신호', 출력이 '큰 흐름'이 됩니다)

수도관과 수도꼭지를 생각하면 비유가 쉽겠죠?

흔히 프로세서의 '소비전력'이라 말하는 부분은 '작은 전기 신호' = 즉 '수도꼭지' 가 아니라
'큰 전기 신호' = '수도관' 에 의해 결정됩니다.
하지만 실제로 연산의 토대가 되는 논리의 구현은 수도꼭지(작은 신호)에 의해 발생하는 거죠.
따라서, 오버클럭으로 인한 소비전력 상승과 프로세서에 인가되는 전압 사이에는 아무 인과관계가 없습니다.
오버클럭시 프로세서에 전압을 더 주는 이유는 사실 다른 데 있습니다.


2.

이쯤에서 짐작하셨듯이, 오버클럭은 수도관이 아니라 수도꼭지를 더 빠르게 열고/조이도록 하는 수단입니다.

이상적인 경우에 트랜지스터에 인가되는 전압은 정확히 0과 1을 대표하는 양 극단으로 주어져야 하지만
(예: 0에 해당하는 신호를 0V, 1을 5V로 받는다면 정확히 0V/5V의 입력만 받는 경우가 이상적입니다)
전기 펄스가 발생하는 원리는 매우 아날로그적이기 때문에 0.1V, 4.7V 따위의 어중간한 값이 발생하게 됩니다.
그렇다고 트랜지스터가 철두철미하게 0V, 5V만을 각각 0, 1로써 인식한다면
0.1V, 4.7V 같은 값은 인식이 안 될테니 사실상 논리 연산 수행이 거의 불가능하겠죠.
그래서 트랜지스터엔 '역치'라는 값을 두어 대충 0/1신호 주변의 값(0V~5V 주변의 값)을 반올림하도록 합니다.
예를 들어 0.5V 미만은 0으로 인식하고, 5V에 못 미치더라도 대충 3V를 넘으면 1로 인식한다... 이런 식이죠.

※ 이쯤에서 빠지기 쉬운 함정 중 하나로 아래와 같은 생각을 하실 수도 있습니다.
'그렇다면 중간값(= 2.5V)을 기준으로 그 이상은 1, 미만은 0으로 구분하면 간단하지 않을까?'
이 방식이 왜 위험한지 알기 위해, 신호가 중간값 근방에서 미세한 진폭으로 주어지는 경우를 가정해 봅시다.
2.55V / 2.4V / 2.6V / 2.45V ... 이런 식으로 미세하게 1 / 0 / 1 / 0 의 신호가 입력되는 경우라면
간단한 노이즈로 인해 신호는 완전히 뒤바뀌어 0 / 1 / 0 / 1 따위로 전송될 위험을 내포하게 됩니다.
이러한 이유로 반도체 소자는 0과 1로 인식되는 역치 사이에 노이즈 마진이라는 구간을 두고 있습니다.
물론 노이즈 마진이 있는 경우는 시그널이 역치 바깥으로 벗어날 경우 에러가 발생하게 되겠지만,
노이즈로 인해 바뀐 신호를 잘못 인식해 오작동하는 것보다는 차라리 에러를 내는 편이 낫기 때문입니다.


여기까지 얻은 정보를 토대로 오버클럭에 감수성이 높은 칩을 정의하자면, 이러한 역치가 잘 설계되어 있어

매우 불완전한 펄스가 주입되어도 0과 1을 잘 구분해 내는 칩이라고 가정할 수 있습니다.

정상적인 클럭에서 0.1 / 3.2 / 0.3 / 0.2 / 0.1 / 3.1 / 4.1 / 4.5 의 펄스를 공급받는 칩이 있다고 가정합시다.


그렇다면 역치의 범위에 따라 칩은 이 신호를 01000111 으로 인식하게 되겠죠?
그런데 클럭이 높아질수록 펄스 시그널이 0V 또는 5V에 가깝게 마크하는 비율이 떨어지게 됩니다.
여기서 두 개의 칩을 가정해 봅시다.

Chip A
특성: 칩을 오버클럭 했더니, 0쪽의 신호가 +0.1V 되고 1쪽의 신호가 -0.1V 되었다.
(즉 0V~5V 사이를 오가는 펄스의 진폭이 위아래 각각 0.1V씩 줄어든 겁니다. 펄스가 무뎌진 것이죠)
이 경우엔 정상 클럭일 때와 비교해 펄스가 다음과 같이 변화합니다.
정상 클럭: 0.1 / 3.2 / 0.3 / 0.2 / 0.1 / 3.1 / 4.1 / 4.5
오버클럭시: 0.2 / 3.1 / 0.4 / 0.3 / 0.2 / 3.0 / 4.0 / 4.4


비록 펄스의 진폭이 줄어들긴 했지만, 칩이 인식하는 신호는 01000111로 동일합니다.
그렇다면 특성이 조금 다른 칩을 가정해 봅시다.

Chip B
특성: 칩을 오버클럭 했더니, 0쪽의 신호가 +0.5V 되고 1쪽의 신호가 -0.5V 되었다.
(이 경우엔 펄스의 진폭이 0.5V씩 줄어든 겁니다. Chip A보다 더욱 더 무뎌졌습니다)
이 경우엔 정상 클럭일 때와 비교해 펄스가 다음과 같이 변화합니다.
정상 클럭: 0.1 / 3.2 / 0.3 / 0.2 / 0.1 / 3.1 / 4.1 / 4.5
오버클럭시: 0.6 / 2.7 / 0.8 / 0.7 / 0.6 / 2.6 / 3.6 / 4.0


이 경우엔 칩이 인식하는 신호가 xxxxxx11 이 됩니다. (x = 펄스가 역치 바깥에 있어 0 또는 1로 인식 불가)
단지 펄스의 진폭이 조금 줄었을 뿐인데 거의 전멸에 가까운 데이터 손실이 생겼습니다.
이럴 경우 프로세서는 사실상 연산을 수행할 수 없게 되고, 오버클럭은 실패로 돌아갑니다.


3.

그러면 펄스에 입력되는 신호가 5V가 아니라 6V로 올라가면 어떨까요? (전압 1V 상승)
전압이 20% 높아진 셈인데 이 경우 각 신호로 반올림되는 '역치'값이 0의 경우는 0.5V 미만에서 0.6V 미만으로,
1의 경우는 3V 이상에서 3.6V 이상으로 나란히 20%씩 증가했다고 가정합시다.

원래의 펄스를 재구성하면 다음과 같습니다. (펄스가 신호 1을 의도한 경우 1V 상승)
원래의 펄스: 0.1 / 3.2 / 0.3 / 0.2 / 0.1 / 3.1 / 4.1 / 4.5
전압 상승시: 0.1 / 4.2 / 0.3 / 0.2 / 0.1 / 4.1 / 5.1 / 5.5


그럼 이 경우에, 앞에서 오버클럭에 실패했던 칩 B를 다시 가동시켜 보면 어떨까요?


칩이 인식하는 입력 신호가 01xx0111이 되었습니다. 잘못 인식되는 비율이 무려 67%나 줄어들었네요.
비록 여전히 에러를 뿜어내긴 하겠지만, 만약 7V까지 전압을 올려준다면 오버클럭에 성공할지도 모르겠죠.
이것이 바로 '오버클럭시 전압을 더 줘야 하는' 이유입니다.


4.

유저들은 매번 FSB 또는 배수를 올렸다 내렸다 해 가면서 수많은 trial & error를 거쳐 한계를 찾아내지만
사실 제조업체는 간단히 칩의 특성을 점검하는것 만으로도 어림잡아 해당 칩의 수율을 측정할 수 있습니다.
위에서 우리는 임의로 5V라는 트랜지스터의 작동 전압을 가정했지만
실제로 오늘날의 프로세서들은 그보다는 훨씬 낮은 전압에서 가동됩니다. (1.xV 정도...)

그렇다면 우리가 가질 수 있는 의문이
Q: '제조사들은 왜 전압을 무한정 높여서 고클럭프로세서를 출시하지 않는가?'
A: 바로 열설계전력 (TDP) 때문입니다.

오버클럭시 프로세서의 전압을 높여줘야 하는 "이유" 자체는 프로세서가 요구하는 소비전력과 무관했지만
일단 전압을 높여 주면 우리에게 익숙한 옴의 법칙을 따라 프로세서의 소비전력과 발열이 늘어나기 때문이죠.
현실적으로 전압을 높임으로써 향상되는 클럭 한계에 비해 소비전력이 훨씬 더 빠른 속도로 증가하기 때문에
단순히 '높은 클럭 달성' 이 목표가 아닌 제조사 입장에서는 균형점을 찾으려 노력할 수밖에 없습니다.
(∵ 클럭 수율은 전압의 증가율보다 더디게 증가하지만 소비전력은 전압의 제곱에 비례해 증가합니다)

하지만 오버클러커들의 경우엔 얘기가 달라지겠죠.emoticon

이것이 바로
"왜 내 CPU는 발열은 착한데 오버가 안될까?"
"왜 어떤 CPU는 발열도 많은데 밥을 주는대로 쑥쑥 오버가 되는걸까?"
하는 궁금증에 해답이 되는 정보입니다...ㅋㅋ

편하게 읽어주셨으면 좋겠습니다.ㅋㅋ (아... 이 말을 맨 앞에 했어야 -_-;;)

 

//

 

(아래 위젯은 티스토리의 크라우드펀딩 시스템인 '밀어주기' 위젯입니다. 100원부터 3000원까지의 범위 내에서 글쓴이에게 소액 기부가 가능합니다. 사견으로는 이러한 형태의 펀딩이야말로, 성공적으로 정착될 경우 이해관계자로부터 독립된 벤치마크가 지속가능해지는 원동력이 될 것이라 생각합니다. 제가 작성한 글이 후원할만한 가치가 있다고 여기신다면 밀어주기를 통한 후원을 부탁드립니다. 물론 글을 '가치있게' 쓰는 것은 오롯이 저의 몫이며, 설령 제 글이 '후원할 만큼 가치있게' 여겨지지는 못해 결과적으로 후원을 받지 못하더라도 그것이 독자 여러분의 잘못이 아니란 건 너무 당연해 굳이 언급할 필요도 없겠습니다. 저는 후원 여부와 관계없이 제 글을 읽어주시는 모든 독자분께 감사합니다.)