CnQ또는 SS는 전압과 클럭을 낮춰서 전력을 절약하는 기술입니다. 전력소비는 클럭에 비례하고, 전압의 제곱에 비례하기 때문에 CnQ를 사용할 때, 클럭 뿐 아니라 전압까지 낮아져야 제대로 된 효과를 볼 수 있습니다.
대부분의 오버클러커들은 Cool‘n’Quiet또는 Speed Step을 사용하지 않습니다. 왜냐하면 오버클럭을 하는 것은 성능을 높이기 위해서이지만, CnQ또는 SS를 사용하면 오히려 성능이 감소하기 때문입니다.
하지만 Windows의 전원 옵션을 세세하게 변경할 수 있다면 CnQ 또는 SS를 사용하더라도 최대한의 성능을 이끌어낼 수 있습니다. CnQ 또는 SS를 사용하지 않을 때보다는 성능이 낮겠지만, 오버클럭의 효과는 누리면서 장시간 사용하지 않을 때는 CnQ또는 SS의 전력절약/발열관리 효과를 볼 수 있다는 장점이 있습니다. 게다가 요즘의 8코어 시스템에서는 게임같은 작업을 하더라도 최적화 수준에 따라 작동하지 않는 코어가 있을 수 있습니다. 그러면 게임 중에도 전력을 절약할 수 있습니다.
저는 컴퓨터를 장시간 켜두는 편이고, 때문에 오버클럭을하더라도 CnQ또는 SS는 켜두는 것을 선호합니다.
인텔
그런데 문제가 있습니다. 라이젠만의 문제인지는 모르겠습니다만, 인텔처럼 간단하게 CnQ를 켤 수 없었습니다. 인텔은 SS을 켜고 오버클럭하는 게 어렵지 않았습니다.
위 사진의 CPU Vcore Voltage Mode를 Adaptive Mode로 설정하면 최고 클럭에서만 설정된 전압으로 오버클럭이 되고, Speed Step이 작동하는 낮은 클럭에서는 기본전압이 인가됩니다. 설명에는 CPU에 많은 작업이 걸려있을 때에 전압을 추가한다고 되어 있습니다.
라이젠
하지만 라이젠은 다릅니다.
위 사진을 보면 라이젠에서는 CPU Vcore Volate 설정에 Auto, Offset Mode, Fixed Mode 뿐입니다.
Offset Mode를 사용하면 CnQ가 작동하는 낮은 클럭에서도 전압 보정이 들어갑니다. 높은 전압으로 오버클럭 하는 경우에는 CnQ가 작동하더라도 전압이 높게 잡히는 것입니다.
다행히 라이젠은 각 Pstate를 변경할 수 있습니다.
여기서 최고클럭에서(Pstate0)만 전압과 클럭을 올려주면 됩니다. 이것은 CnQ를 사용하지 않는 오버클러커들도 거치는 과정이어서 어렵지 않습니다.
이렇게 끝나면 포스트를 작성하지 않았을 것이다.
문제는 바이오스에서 Pstate0를 바꿀 때, 기본 전압보다 높으면 Pstate0 상태에 도달하지 않는다는 것입니다.
CnQ를 껐을 때는 Pstate0의 전압을 마구잡이로 올려도 상관 없지만, CnQ가 작동 중일 때는 기본 전압보다 높으면 해당 Pstate로는 CPU 상태전환이 이루어지지 않습니다.
여기서 기본 전압은 1700의 경우에는 1.18750V이다.
1600이나 1700X같은 3.6Ghz 모델은 1.35V일 것으로 추측된다.
그러니 Custom Pstates 설정에서 Pstate0는 기본 전압으로 두고, 다른 상태의 전압을 바꿔주면 됩니다.
본격 작업
그래서 전압 보정과, Custom Pstates 기능 두가지를 이용해서 CnQ가 제 기능을 하도록 해보겠습니다.
당연한 이야기지만 오버클럭 안정화는 인텔이든 AMD든 상관 없이, SS 또는 CnQ를 끄고 해야 합니다. 안정화된 값을 기억합니다. 저는 3.775Ghz의 클럭이 1.3V에서 안정화가 되었습니다.
오버 클럭
이제 바이오스에서 Custom Pstates 설정에 들어갑니다.
제가 필요한 전압은 1.3V이지만 CPU의 기본 전압인 1.18750V로 지정했습니다. CPU에 더 필요한 전압은 0.11250V입니다.
이제 전압 보정을 해줍니다.
여기서 전압을 Offset Mode로 설정하고, 0.11250의 전압을 추가로 줍니다. 이제 Pstate0는 3.3775Ghz이고, 1.3V입니다.
다른 상태의 전압 변경
이제 CnQ가 작동하는 낮은 클럭에서의 전압을 다시 보정해줍니다. 다시 Custom Pstates 설정 화면에 들어갑니다.
여기서 Pstate1, Pstate2의 전압을 0.11250씩 빼줍니다.
저는 Pstate1를 오버클럭하고 Pstate2는 언더볼트했습니다..
3.6Ghz모델, 4.0Ghz모델은 Pstate1, Pstate2의 기본값 또한 다릅니다.
AMD의 메인보드들은 Bios에 AGESA(AMD Generic Encapsulated System Architecture) 소프트웨어가 포함되어 있습니다.
Custom Pstates 설정에서는 AGESA의 옵션이어서 CPU의 기본전압 보다 높으면 해당 상태에 도달하지 않지만, Offset을 이용하여 높은 전압을 주는 것은 메인보드 자체의 전압 조절 옵션이어서 가능한 게 아닌가 생각해봅니다. 그러니까 Bios내에 CPU를 위한 별도의 소프트웨어가 있고, 이는 메인보드 Bios 소프트웨어와 별도로 작동하는 듯합니다. 이 부분은 제 추측에 불과하지만 가장 합리적인 추측인 듯합니다.
작업 관리자에서는 기본 속도가 Pstate0에서 설정한 클럭이 표시되지만, 실제로 상태전환은 되지 않고 풀로드시에도 CnQ의 낮은 클럭으로 작동할 때는 위 단계를 따라야 합니다.
Custom Pstates기능은 AGESA기능(-AGESA기능인 것은 추측입니다)이므로 모든 x370, b350보드에 포함되며, a320보드는 확인해봐야 합니다.
Offset Mode는 Asrock, Asus보드에서 확실히 지원합니다. Gigabyte는 Dynamic Vcore라는 기능이 있습니다. 같은 기능일 것으로 보입니다. Biostar는 Offset Mode를 지원하지 않는 것으로 확인 되었습니다.
제어판 -> 전원 옵션 -> AMD Ryzen Balanced 선택 기본 전원 관리 옵션 란에 없으면 추가 전원 관리 옵션에서 찾아보세요.
프로세서 성능 시간 검사 간격 조절
Fast frequency change: The AMD Ryzen™ processor can alter its voltage and frequency states in the 1ms intervals natively supported by the “Zen” architecture. In contrast, the Balanced plan may take longer for voltage and frequency changes due to software participation in power state changes. 출처 : community.amd.com
AMD Ryzen 프로세서는 젠 아키텍처에 의해 프로세서의 전압과 클럭 상태를 1ms간격으로 바꾸는 것을 자체적으로 지원합니다.
시작 -> 제어판 입력, 또는 Windows 키 + X -> 제어판
하드웨어 및 소리
전원 옵션
고성능 클릭
오른쪽의 설정 변경 클릭
고급 전원 관리 옵션 설정 변경
프로세서 전원 관리 -> 프로세서 성능 시간 검사 간격을 3으로 조절.
프로세서 성능 시간 검사 간격 항목이 없을 경우 코어파킹에 관한 글 참조(코어파킹 준비 부분의 코어파킹 제어판 활성화 부분 숙지)
O!C!
모든 라인업이 오버언락이 되어 있으니 유효한 팁입니다.
피온 2016 설정파일 삭제
Steam 클라우드에 동기화되니 클린설치를 하더라도 설정파일을 지워야 합니다. 설정파일에는 쓰레드 수를 지정하는 변수가 기록되어 있기 때문에 이전에 16쓰레드 CPU로 플레이 한 게 아니라면 설정파일 삭제가 필요합니다. 게임에서 설정 초기화한다고 초기화되지 않는다고 합니다.
ㅎㅎㅎㅎ 글쓰기를 좋아해서 블로그를 시작했는데, 막상 글 하나에 6시간 이상 투자하다 보니 꾸준한 업로드가 어렵네요 블로그 컨셉은 새로운 IT 소식에 대해 여러 매체들의 정보를 한 곳에서 볼 수 있게 하려는 것이었는데요... 새 IT 소식이 올라오는 빈도는 빠르고, 글쓰기가 느린 저로서는 감당이 되지 않네요. 이 글도 내용 준비 외에 초안 작성만 5시간 정도 썼네요. 임시 저장 해놓고 글 마무리나 다듬기, 추가 내용 보충도 해서 작성한 글입니다...ㅎㅎ
라이젠, 반응
요즘 라이젠이 출시되면서 CPU쪽이 떠들썩 합니다. 긍정적인 반응도 있고 부정적인 반응도 있습니다. 라이젠 후기들을 보면 "이거 사도 되는건가..."하는 생각이 들게 하는 내용도 있습니다. 그 오해와 진실을 후기로 파헤쳐보려고 합니다.
라이젠의 장점은 8코어에 있습니다. 8코어는 멀티 쓰레딩을 지원하는 단일 프로그램에서 성능 향상이 생깁니다. 그리고 8코어는 멀티 태스킹이 훨씬 부드럽습니다.
또한 라이젠은 인공지능 기술인 SenseMI를 통해 더 조용하고 빠른 연산이 가능해졌습니다.
마지막으로 아직은 소프트웨어적인 최적화가 덜 되어있는 라이젠 무작정 따라하는 최적화를 준비했습니다.
멀티쓰레딩
많은 분들이 8코어로 멀티태스킹을 생각할 때 라이젠 8 단일작업 멀티쓰레딩 성능에 대해 얘기해보려고 합니다.
AMD에서 2011년 CMT구조의 CPU가 출시될 때, 제가 우려했던 부분은 멀티쓰레딩 게임이 없다는 것이었습니다. SMT는 이론적으로는 싱글 쓰레드 프로그램에서도 성능하락이 없었고, 멀티 쓰레드를 지원하면 성능이 향상되는 구조였습니다.
SMT는 하나의 코어에 디코더를 두개 두는 방식입니다.
CPU는 원래 하나의 쓰레드만 처리할 수 있습니다. 하나의 코어로 여러 개의 쓰레드를 처리하려면 여러 개의 쓰레드를 굉장히 짧은 순간동안 바꿔가며 연산해야 합니다. 이게 우리가 컴퓨터를 하면서 보는 멀티 태스킹입니다.
그런데, 이 과정에서 코어가 연산하지 않는 순간이 생깁니다. 이 때, 디코더를 하나 더 두면, 코어가 연산하지 않는 순간을 줄일 수 있습니다. 이론 상으로는 성능은 감소하지 않습니다.
반면, CMT는 멀티 쓰레드 프로그램에서는 성능향상이 컸지만, 싱글 쓰레드 프로그램에서는 성능하락이 있는 구조였습니다. 때문에 8코어라고 홍보를 했지만, 실제로는 인텔의 듀얼코어에도 못미치는 벤치마킹 결과가 나타났습니다.
비셰라는 2013년에 출시된 CPU입니다. 그런데 3년 뒤, 놀랍게도 오버워치 출시 이후 이 CPU가 다나와 추천 피시에 사용됩니다.
이러한 역사는 라이젠에서도 우려되는 부분입니다. 지금까지는 인텔이나 AMD나 8쓰레드 CPU가 주력이었고, 지금의 프로그램은 그에 맞춰서 프로그래밍 되어 있습니다. 그래서 라이젠이 비셰라와 같은 길을 걸을 수 있는 우려가 생기는 겁니다.
그렇다면 우선 짚고 넘어가야 할 부분은, 흔히 벤치마킹 프로그램에서 테스트 하는 16쓰레드나 싱글 쓰레드의 퍼포먼스가 아니라 그 사이의 프로그램의 퍼포먼스 입니다. 멀티 쓰레드 프로그램이지만, 16쓰레드는 아니어서 라이젠의 일부 코어만 활용하는 프로그램의 퍼포먼스를 봐야 합니다.
이게 실제로 사용자가 느끼는 퍼포먼스가 될 것입니다.
인텔의 주력제품인 i7은 4C 8T CPU입니다. 라이젠에 비해 클럭이 높기 때문에 싱글코어 퍼포먼스는 더 좋은 편입니다. 라이젠은 현재 비슷한 가격으로 8C 16T CPU를 제시합니다. 클럭이 낮아서 싱글코어 퍼포먼스는 떨어집니다.
그러면 8쓰레드 게임에서는 라이젠은 i7을 이길 수 없는걸까?? 정답은 아니요 입니다.
8개 쓰레드의 프로그램을 8개의 물리코어로 처리하면 같은 8 쓰레드를 사용하더라도 성능이 더 높게 나타납니다.
American Truck Simulator 게임이 CPU의존도가 높아서 이 게임으로 보여주려고 합니다.
Windows 의 Power Plan이 균형 조정일 때
3개의 물리코어가 활성 상태입니다. 6개의 쓰레드를 사용하고 있구요. 전체 CPU이용률은 16%입니다. 130FPS가 나옵니다. 차량이 없어서 프레임 편차는 1~2입니다.
Windows 의 Power Plan이 고성능일 때
코어파킹이 꺼집니다. 코어 0,3,5,7,9,15. 즉, 6개의 쓰레드를 사용하고 있습니다. 차이점이라면 서로 다른 물리코어를 가리켜서 6개의 코어가 활성 상태입니다. 그리고 활성 상태인 물리코어의 가상코어는 코어 1을 제외하고는 연산하고 있지 않습니다. 전체 이용률은 15%입니다.
쓰레드 분배가 고르지 않고 코어 0과 15를 특히 많이 사용하고 있습니다. 155FPS가 나옵니다. 마찬가지로 차량이 없어서 프레임 편차는 1~2입니다.
놀랍게도 6개의 물리코어를 사용할 때 약 20%의 성능 향상이 생깁니다. 고성능 파워 플랜에서 더 높은 성능을 보여줍니다.
연산에 사용되는 쓰레드와 이용률은 같은데 활성 물리 코어만큼 성능이 향상되는 것을 볼 수 있습니다. 같은 양의 연산을 하더라도 물리코어를 사용한다면 6개의 쓰레드를 동시에 처리하게 됩니다.
반면, 같은 양의 연산에 있어 가상코어를 사용한다면 6개의 쓰레드를 "동시에" 처리하는 건 아닙니다. (상단의 SMT설명 참고) 그 외에도 SMT는 캐시와, 버스를 공유하기 때문에 병목의 가능성이 있습니다. 그래서 멀티쓰레드 프로그램이라면 가능한 한 물리코어가 많이 활성화 되는 것이 성능 향상에 도움이 됩니다. 즉, 물리 코어에 쓰레드를 분배하는 것이 성능 향상에 도움이 되는 것입니다.
i7의 경우에도 코어파킹이 작동한다면 4쓰레드 프로그램을 이용할 때 i5보다 성능이 떨어지는 결과가 나타나기도 합니다.
그래서 i7을 위해 8쓰레드 게임을 만들었는데, 이게 왠걸... 비셰라가 갑자기 떠버린 겁니다...
라이젠과 같은 8C 16T CPU에서는 16쓰레드 프로그램이면 좋겠지만, 대부분 게임은 아직 16쓰레드까지는 지원하지 않습니다. 그렇다고 SMT를 끄자니 16쓰레드 프로그램에서는 SMT의 성능이 증가하는 게 뚜렷하게 보입니다. 그래서 게임의 쓰레드를 물리코어에 우선 할당할 필요가 있습니다.
글 하단에서 무작정 따라하는 최적화를 확인하세요.
AMD가 CMT를 버리고 SMT로 전향하면서 멀티 쓰레드를 조금 내려놓고 싱글 쓰레드 퍼포먼스도 챙기는 모습을 보입니다. 하지만 SMT구조에서도 AMD는 멀티 쓰레딩에 강점을 가지고 있습니다.