기존의 끝판왕 시리즈를 찾아주셨던 여러분들께, 작은 선물을 들고왔습니다.
새로운 삽질거리?입니다. [장난이에요 ㅎㅎㅎㅎ]
다름이 아니라, 기존의 끝판왕 글들이 최신의 내용을 반영해주지 못하는 점도 있고
많은 분들께서 적용하기에 너무 어려운 부분들이 있어서...
이렇게 글을 새로 파면서 끝판왕 시리즈를 새롭게 작성하게 되었습니다 :)
첫 스타트는 최신 스카이레이크가 나오면서 -_-.. 골치아파진 스피드스텝 관련 부분입니다.
해당 글에서는 조금 신선한 방법으로 패치를 적용하려합니다.
1. CPU의 주된 기능들
1-1. Hyper Threading [하이퍼스레딩]
인텔 씨피유 하면 이 기술을 빼놓고 이야기할 수 없는데요, 바로 하이퍼스레딩 기술입니다.
인텔이 독자적으로 개발한 기술로 역사만 무려 10년정도 된 것 같네요.
제 기억으로 싱글코어 노스브릿지 제품을 내놓았을 때 처음으로 하이퍼스레딩이라는 기술을 출시했었는데,
해당 기술을 더 발전시켜 후에는 코어 2 듀오라는 이름으로 신제품이 출시되기에 이르렀었죠.
다만 이 코어 2 듀오는 하이퍼스레딩이 들어가있찌 않았다는게 함정이랍니다 <<
실질적으로 하이퍼스레딩이 다시 부활한건 제 기억상으로? 린필드 시리즈부터 다시 부활했다고 볼 수 있을 것 같습니다.
그 이전의 E인 울프데일 시리즈와 Q인 요크필드 시리즈는, 하이퍼스레딩에 주력했다기 보다는 코어의 밀집도와
어떻게 하면 코어를 더 효율적으로 멀티코어 방식으로써 기능할 수 있게끔 할 수 있겠는가?에 더 주력한 모습이었거든요.
그 이후에 어느정도 기술력이 확보가 되었는지, 블룸필드 - 린필드라는 이름으로 제품을 내놓으면서 라인업을 과감하게 싹 갈아엎어버리고
i3와 i7에 하이퍼스레딩을 접목시켜 과감한 기술향상을 이끌어냈다죠.
하이퍼 스레딩은 기존 논리회로를 변형하여 원래는 1코어당 1스레드인 것을 1코어에 2스레드를 할당시켜 마치 1개의 코어 2개인 것 마냥 동작하게끔 하는 기술입니다.
물론 물리적 코어가 2개인 것에 비해서는 속도가 많이 느리지만, 1코어 - 1스레드에 비하여 1코어 - 2스레드로 동작하는 하이퍼스레딩은 훨씬 더 좋은 성능을 내주었습니다.
특히 멀티스레딩 작업에서 그 진가를 발휘하기에 이르렀죠.
현 기술은 대부분 메인보드의 바이오스 셋업을 통하여 조절이 가능하거나, 혹은 기본값으로써 그냥 동작을 원칙으로합니다.
따라서 맥에서 하이퍼 스레딩이 동작하지 않는 문제는 거의 없다고 보면 될 것입니다 :D
[특수 목적용 씨피유는 논외입니다.]
1-2. Turbo booooost [터보부스트]
하이퍼 스레딩이 나온 후, 린필드 계열부터 등장한 신개념 기술인 터보부스트는 하드한 유저들의 아우성을
인텔이 어느정도 수렴해준 케이스가 아닐까? 싶을 정도로 획기적인 기술로써 코어의 동작 속도를 고정이 아닌 flexible, 즉 유연한 동작속도로 바꾸어 놓는 기술이었습니다.
한마디로 씨피유가 자기 스스로 판단 하에 처리량이 많아지면, 자동으로 오버클럭하여 동작 속도를 더 높이는 기술이라는 것입니다.
이 기술은 좀 특이한 방식으로 동작하는데, 예컨데 4코어 기준 i7에서 터보부스트가 동작을 하면 최고 배속은 1개의 코어만 해당 배속으로 동작하게됩니다.
제 씨피유를 예로 들어보겠습니다.
i5-4670은 터보부스트 동작시에, 맥스 터보 동작 주파수가 3.8기가헤르츠입니다.
이 3.8기가 헤르츠는 4코어 중 1코어만 3.8로 동작하는 의미이며, 만일 2개코어가 터보부스트 모드로 돌입하면 3.7기가 헤르츠로 동작속도가 줄게됩니다.
그리고 3코어 이상이 터보부스트에 걸리면 3.6기가 헤르츠로 동작속도가 낮아지게됩니다.
하나의 코어에 속도를 집중으로 처리하는 것 보다, 여러개의 코어의 속도를 조금씩 높여
멀티스레딩 // 동시 작업으로써 속도처리가 더 빠르게끔 만들어 속도의 향상을 꾀한다 볼 수 있겠습니다.
또한 해당 기술은? 최근에는 거의 최하위 모델인 셀러론계열에도 조금은 도입되어있는 것으로 알고있습니다.
터보 부스트도 하이퍼 스레딩과 마찬가지로 커맥을 구성할 때에
어지간해서는 자연스럽게 바로 잡히는 네이티브한 기술이며, 특별한 설정이 필요하지 않은 것으로 알려져있습니다.
추가적으로 대부분의 메인보드 바이오스에서 웬만하면 설정을 건드릴 수 있게끔 옵션을 지원해줍니다.
1-3. Speeeeeed Step [스피드스텝]
해당 기술은 언제부터 도입이 되었는지 역사를? 알기 어려운 부분이며, 동작 방식이 위에서 살펴본 기술들과는 다르게 굉장히 복잡합니다.
그런만큼 커맥을 시도하는 많은 사람들이 좌절을 맛보기도 하는 지옥구간이기도 한데 -_-;; 제 생각에는 그 스피드스텝을 잡는다라는 기준이 명확치 않아서 그런 것 같다고 봅니다.
스피드 스텝은 2가지의 기술로 다시 재구성됩니다. P-State와 C-State라는 부분입니다.
아마 클로버를 사용하는 분들이나 키메라 혹은 카멜레온을 사용하는 분들은 PStateGenerate 혹은 CStateGenerate나 C0 Eanble등과 같은 옵션을 보신적이 있을거라 생각합니다.
바로 해당 옵션들은 스피드스텝과 관련하여 동작이 제대로 되게끔 해주는 옵션들인 것입니다.
하지만 이런 옵션들은? 강제적인 부분이 많이 있기 때문에 되도록이면 시스텝상에서 자연스럽게 씨피유의 스피드스텝이 동작할 수 있게끔 구성해주어야합니다.
그것이 기기적으로 가장 무리가 적게가는 패치방법이기 때문입니다.
지금부터는 스피드스텝의 동작원리와 함께 1세대인 린필드부터, 6세대인 스카이레이크까지 어떻게 발전해왔는지 살펴볼 것입니다.
1-3-1. P-State란?
P-State는 C-State의 안에 속해져있는 부분입니다.
바로 C-State의 C0모드에서 P-State가 동작하게 되는 것입니다.
위의 그림을 보시면 아시겠지만, C0은 Cpu Active상태로써 코어가 활성화되어 동작 중인 상태를 뜻합니다.
이 상태에서 전력을 줄이면서도 최적의 성능을 발휘할 수 있게끔 동작하는 것이 P-State의 주된 역할인 것이지요.
P-State는 정말 쉽게 설명하 수 있는 기술입니다.
자신에게 떨어진 일의 양만큼 동작한다를 원칙으로 삼는 기술이기 때문입니다.
급하면 뛰어가고, 급하지 않으면 천천히 걸어가듯이 씨피유가 동작할 때에
일의 처리량이 단시간에 많아지면 그만큼 빠르게 동작하여 처리하는 것이고, 일의 처리량이 적다 판단하면 천천히 동작하여 처리하는 것입니다.
이것은 터보부스트의 확장개념인데, 터보부스트는 씨피유가 지원하는 기본 동작 주파수를 넘어서 초과적으로 효율을 끌어내는 기술이라면
P-State는 씨피유가 기본적으로 지원하는 최저 주파수부터 최고 주파수까지 능동적으로 동작속도를 조절하여 동작하는 기술인 것입니다.
항상 3.4기가 헤르츠로 동작하면서 발생하는 전력소모와 발열량은 씨피유의 장기적 수명 단축과 주변 기판의 손상을 불러일으킬 수 있는,
성능 저하의 요소가 될 수 있지만 능동적으로 0.8기가 헤르츠부터 3.4기가로 자유롭게 변하며 처리하는 와중에 발생하는 전력소모와 발열량은 전자에 비해
확실히 적을 것이며 수명에도 큰 영향을 끼치지 않을 것입니다.
이렇게 P-State는 씨피유의 자원을 매우 효율적으로 관리하여, 동작주파수를 유동적으로 변경함으로써 전력소모를 감축합니다.
대부분 걱정을 많이 하시는 부분이 바로 P-State입니다.
켁스트를 로드시켜서 확인해보니 잡히지 않아요라고들 많이 말씀하시는데,
숫자가 뜨는 배수는 P-State이며 스피드 스텝의 극히 일부분적 기능이라고 볼 수 있겠습니다.
편하게 생각하면, 스피드 스텝을 잡는다? 라고 보았을 때
1차적으로는 숫자가 나오는 P-State의 동작 범위를 정상적으로 만들어주는 것이라 볼 수 있다는 것입니다.
1-3-2. C-State란?
C-State는 P-State를 포괄하는 상위개념으로써, 동작의 범위가 훨씬 넓습니다.
위의 사진을 보시다시피 동작 모드에는 C0, C1, C1E, C2, C3, C4, C6, C7, C8, C9, C10까지 존재하며 C뒤의 숫자가 클 수록 더 낮은 동작단계를 의미합니다.
대략적으로 C2 및 C4기술은 사용되지 않습니다.
또한 C1E기술 또한 C1에 편입되어 최종적으로는 C0, C1/C1E, C3, C6, C7이 사용되며
C7이후인 C8~C10의 기술은 오로지 스카이레이크 계열[데스크탑 / 모바일]과 브로드웰 계열[데스크탑 / 모바일], 하스웰 계열[모바일 일부]만이 지원합니다.
여기서 C9~C10은 거의 지원하지 않고 C8이 동작되면서 같이 동작되는 것으로 알려져있습니다.
정리하자면 C0 -> C1/C1E -> C3 -> C6 -> C7 -> C8 순으로 동작합니다.
해당 기술은 각 숫자별로 동작하는 부분이 다 다르며 갈 수록 전력이 낮아지는 기술이기 때문에 굉장한 기술력을 요한다 보여집니다.
1-4. CPU들의 C-State Power Management
1-4-1. 1세대 CPU [i3 3xx, i5 6/7xx, i7 7/8xx]의 전력관리기술 (Power Management)
1세대인 LGA1156 소켓을 사용하는 씨피유계열은 위의 사진처럼 동작을합니다.
C0는 적혀있듯이 활성화 상태를 뜻하며 C1모드는 AutoHALT상태인데 이것은 CPU의 코어가 쉬고있음을 뜻합니다.
그냥? 일처리가 없는 상태라 보면 되겠네요 ㅎㅎ
C1E모드는 오토할트상태이면서 동시에 낮은상태의 주파수와 전력상태에 있는것을 뜻합니다.
C3모드에 진입한 코어는 L1캐시와 L2캐시 및 L3 공용캐시를 비웁니다. 코어의 클럭상태는 shut off상태로 꺼진상태입니다.
이 경우 최저 전력이 남아있어 극한의 낮은 주파수로 살아있다고 보시면 되겠습니다.
인터넷에서 돌아다니다 본 주파수가 대략 87Mhz정도로 기억하고있는데 확실하지는 않습니다.
C6모드는 코어의 전력이 제거되기 전에 작업하고 있던 모든 상태를 저장하는 단계입니다.
이렇게 5개의 단계만을 가지고 있는 것이 초창기의 1세대 씨피유가 가진 전력관리 기술에 해당됩니다.
굳이 상태까지는 알 필요가 없지만, 적어도 자신의 씨피유가 인텔 기술문서가 말하는 부분에 있어서
어느정도까지 지원을 해주는지 정도는 알아야 이게 잘 잡힌건지 아닌지를 알 수 있지 않을까 싶습니다 :)
1-4-2. 2세대 CPU [i3/i5/i7 2xxx]의 전력관리기술 (Power Management)
2세대의 경우에는 1세대와 동작 방식이 흡사하지만,
C7이 추가되어있고, C7에서 L3캐시가 완전히 비워지며 C6처럼 동작한다는 점입니다.
추가적인 부분을 살펴보아도 C7은 딱히 없는 것으로 보아 2세대 씨피유도 C0, C1/C1E, C3, C6정도만 동작한다고 보아도 무방할 것 같습니다.
다만 기술문서에 따르면 C3에서 동작할 때에 방식이 약간 변경되었는데
기존 1세대에서는 코어의 클락이 shut off되는 것이었지만, 2세대에서는 각 코어별로 클락이 shut off되는 것으로 변경되었다는 점입니다.
1-4-3. 3세대 CPU [i3/i5/i7 3xxx]의 전력관리기술 (Power Management)
3세대의 전력관리 기술은 2세대와 다른점이 없습니다. C7이 다시 제거된 모습이 보이네요 ㅎㅎ
1-4-4. 4세대 CPU [i3/i5/i7 4xxx]의 전력관리기술 (Power Management)
1-4-4-1. Desktop 및 M / H 계열 프로세서
4세대의 전력관리 기술을 살펴보면, 2세대 때 잠깐 나왔던 C7이 다시 부활했음을 볼 수 있습니다. :P
해당 부분에 대한 내용도 기술 문서에서 확인이 가능한데요,
보시면 C7부분에 뭔가 빼곡히 적혀있는 것이 눈에 들어옵니다.
코어의 동작은 기본적으로 C6과 비슷하게 동작한다고 합니다.
/* 대략적인 번역입니다 */
만약 모든 코어가 C7 상태로 들어가게될 경우에는 L3 캐시의 통로들이 청소되며 비워지며,
모든 L3캐시가 비워지고 나면 L3 캐시에 상주해있던 전력도 제거됨과 함께
CPU의 시스템 에이전트 (SA)에 상주해있던 파워가 사라진 후 코어들과 L3는 파워 소모량이 감소됩니다.
C7은 모든 SKUs에서 동작하지 않습니다.
이렇듯 C7모듈은 항상 동작하지 않는다는 것이 핵심이고?
L3와 기타 전력을 감소시키기 위한 부분인만큼 꼭 동작할 수 있게끔 해주는 것이 중요하다 생각됩니다.
위의 사진은 이론적으로 Notes에 있는 상태일 때 CPU가 각 모드로 들어가면서 벌어지는 전력 소비량을 나타내주고있는 표입니다.
C1E로 단순 할트 및 동작 주파수와 전압감소에 들어간 상태에서는 최대 소비전력이 16와트로 제한됩니다.
C3모드로 동작하는 경우에는 최대 16와트, 최소 1.0와트로 소비전력이 감소합니다.
C6모드로 진입한 경우 최대전력 3.5와트, 최소 0와트입니다.
C7모드는 최대 3.4와트 최소 0와트입니다.
이런만큼? CPU의 동작에 있어 스피드 스텝을 잡을 때에 반드시 C-State를 잡아주어야만 하는 이유이기도합니다.
[가장 직접적으로 소비전력에 영향을 끼치는 기술이기 때문입니다]
1-4-4-2. Mobile U / Y 계열 프로세서
모바일 계열을 빼놓고 이야기하면 섭하기 때문에! 모바일도 살펴볼 것입니다.
오히려 모바일 제품군에서 인텔이 무슨 계략을 꾸미고 있는지가 나오는데, 기존의 G0, G1, G2, G3를 세분화 하여 나누면서
S0~S5단계의 구분을 더 주었음을 살펴볼 수 있습니다. [확연히 데스크탑과 다르다는걸 알 수 있습니다]
그리고 그간 안나왔던 C8~C10에 대한 부분도 여기서 나옵니다.
기술문서를 살펴보면, 기존 C7까지는 설명이 같음을 알 수 있습니다.
C8은 C7상태를 위하여 모든 파워 도메인들로에 상주하던 추가전력이 제거됩니다.
물론 제거 전에 C7상태를 보존할 수 있게 요청을 먼저 한다고 합니다.
여기서 파워 도메인은 PLL을 뜻하는 듯 하며, 이 PLL의 전원이 차단된다하네요;
C9상태는 C8상태를 위한 추가 프로세서 Vcc에 인가된 전력을 0V로 만든다고합니다.
그리고 C10상태는 C9상태에 있던 추가 VR12.6을 저-전압 상태로 만들고 주변을 shut off 한다고합니다.
[도대체 이사람들은 뭐하는 작자들인지 ㅡㅡ... 모르겠네요;;]
인가 전력에 대한 소비전력을 빼먹을 수 없겠는데요,
C7상태에서 시리즈에 따라 28W로 설계된 U프로세서는 1.5와트를, 15와트 설계는 0.95와트를 6와트로 설계된 Y프로세서는 0.85와트를 소모한다고합니다.
그리고 C8상태에서는 각각 0.18와트, 0.12와트 0.1와트를 소모하며 C9에서는 0.1와트, 0.052와트 0.04와트를 소모하며 C10도 동일하다고 적혀있습니다.
엄청난 전력소모량을 보여주고있습니다만, 아쉽게도 U/Y 프로세서에 해당되는 내용이어서
4세대의 데스크탑 계열은 기본 C7상태까지만 동작한다고 보면 되겠습니다.
이미 설계상 데스크탑 C6/C7은 최소 소비전력이 0W라 기술되어있는데,
제 컴퓨터에서 측정해본 결과 최저 0.11W정도로 모바일 데스크탑에서 C8상태와 흡사한 전력소모량을 보여주었습니다.
1-4-5. 5세대 CPU [i3/i5/i7 5xxx]의 전력관리기술 (Power Management)
1-4-5-1. 데스크탑 R / C 및 모바일 HQ, HK, H 프로세서
5세대인 브로드웰 제품에서는 대부분 C7~C10이 추가되어있을 것이란 생각과는 다르게
데스크탑 계열 및 모바일 HQ, HK, H 프로세서 계열에서는 C6까지만 동작하게끔 설계되어있는 것을 볼 수 있습니다.
이것은 아무래도 기본 설계 TDP가 하스웰과는 다르게 최대 65로 설계된 탓에 그런게 아닐까란 생각을 해봅니다.
위는 5세대의 TDP 소모량을 나타낸 것인데, 앞서 말씀드렸다 싶이 4세대와는 다른 소모량을 나타내주고있으며
기본 4세대는 84W였던 것에 반하여, 브로드웰부터는 65W만을 소비하는걸 알 수 있습니다.
1-4-5-2. 1-4-5-1에서 언급된 프로세서 이외의 모바일 프로세서
4세대에서 살펴본 것과 같이 구성이 동일함을 알 수 있습니다.
적혀있는 설명들도 4세대 모바일계열과 동일하게 저술되어있음을 알 수 있습니다 :)
다만 소비되는 전력량에 관련해서는 조금 다른 모습을 보여줍니다.
C6에서는 최대 0.6을, C7에서는 0.4를, C9와 C10에서는 0.03을 소모한다고합니다.
4세대에 비교하여 더욱 더 낮아진 최대 전력소모량을 보여주고있음을 알 수 있습니다.
[엄청나네요; 4세대 모바일도 굉장히 적은데 여기서 더 감축하다니 ㄷㄷㄷ...]
1-4-6. 6세대 CPU [i3/i5/i7 6xxx]의 전력관리기술 (Power Management)
1-4-6-1. 데스크탑 i3/i5/i7 6xxx 및 6xxxT 계열 프로세서
데스크탑 계열의 스카이레크로 넘어오면서 모바일에서나 볼 수 있던 그림을 볼 수 있게되었습니다.
여기에서 C8 State까지 지원이 되는 것을 볼 수 있습니다.
C7에서 may be flushed, C8에서 must be flushed라고 된 부분이 조금 인상적입니다.
C7에서는 반드시 LLC가 비워지지 않는다는 것을 말해주고 C8에서는 LLC가 비워진다고 말해주고 있기 때문이죠.
기존의 설명들과는 다르게? 설명 문구가 변경된 것을 확인할 수 있습니다.
C1은 AuoHALT 프로세서가 각 코어별로 동작한다고 합니다.
C1E는 C1과 같지만 동작할 때에 낮은 주파수와 전압 동작점을 가진다고합니다.
C2는 각 코어별 모든 프로세서가 C3혹은 더 깊게 들어갈때 동작한다고 합니다.
동작하면서 메모리의 경로를 열고 C3 혹은 그 이상의 단계로 진입하기 전 상태를 임시로 저장하는 역할을 합니다.
[C2는? 없었는데 갑자기 추가되었네요.]
C3는 기존 C3상태와 흡사하지만 L3캐시 대신에 LLC 공용캐시가 비워진다고 합니다.
다만 LLC는 아마도 비워질거라는 점을 보아 비워지지 않을 수 있으며 코어는 개별적으로 shut off가 가능합니다.
C6는 기존 C6과 동일합니다. 코어의 전압이 제거되기 전 기술적 상태를 모두 저장합니다. 다만 BCLK도 꺼진다고합니다.
[버스속도와 관련된 베이스 클락을 끈다니......]
아마 C6을 분기점으로 BCLK의 동작여부가 성능 대비 전력감소면에서 큰 이익이 되지 못하여 차단하게끔 만든 것으로 생각됩니다.
베이스클락은 100MHz정도인데, CPU가 쉬면서 C6전까지는 100Mhz로 동작한다는 의미로 받아들이시면 되겠습니다.
C7은 기존과 동일하게 동작합니다 :) C6일때와 동일하게 움직이고 C7 진입요청이 들어오면 LLC 길목의 모든 캐시를 다 비움과 함께 전력을 제거하는 것입니다.
C8은 C7상태에서 LLC가 비워진 상태입니다.
전력 소모량은.. 위에 적혀있듯이 C7에서 맥스가 11와트, C8이 2와트로 동작한다고합니다.
기존대비 C7이 크게 향상된 모습을 볼 수 있는데, 이 부분은 C8모드가 새롭게 추가되면서? 성능 향상 및 기존 역할을 재설정함에 따라 변화된 수치라 보면 좋을 듯 합니다.
1-4-6-2. 모바일 i3/i5/i7 6xxxHQ, 6xxxHK, 6xxxH, 6xxxU, 펜티엄 4xxxU, 4xxxY 계열 프로세서
데스크탑과는 다르게 모바일계열에서는 C9와 C10이 동작합니다.
조금 특이한 점이 있따면 기존 브로드웰까지도 HQ나 HK에서는 C6정도까지만 동작했었다면?
스카이레이크부터는 모든 모바일 프로세서계열이 위 상태를 지원해준다는 것입니다.
눈에띄는것은 C9와 C10의 설명이 변경된점입니다.
그도 그럴것이 브로드웰에서 적용한 공정상 몇가지 문제가 있어서 스카이레이크에서는 전력레일등을 새롭게 갈아엎?었을 만큼 C-State에 변화가 좀 컸다고합니다.
기존 설명은 동일합니다.
C9에서 C8상태 + 언코어 전압이 0V가 됩니다. 각 그래픽관련 GT와 System Agent에 부하된 전압도 0V로 감소합니다. 이 상태는 Vcc(IO)가 활성화되는 동안 지속됩니다.
C10에서 재미난 설명이 나옵니다. C6에서 꺼진 BCLK말고 다른 존재가 나오는데, 바로 24MHz 클락이 꺼진다는부분입니다.
C9에서 추가적으로 동작하던 모든 VRs, PS4, LPM이 C10에서 꺼지면서 24MHz도 꺼지는데,
이 24MHz는 인텔이 기존 시스템의 BCLK보다도 더 낮게 동작하게끔 만든 극저 동작 주파수라고 보시면 되겠습니다.
기술문서에서는 각 동작에 따른 전력소모량을 저술하고 있지 않아 생략합니다.
1-5. CPU의 P-State 및 C-State 동작 확인하기
1-5-1. AppleIntelInfo.kext를 통하여 확인하기
이제부터는 자신의 CPU가 어떤 상태에 있는지를 살펴보는 방법에 대해서 알아보도록 할 것입니다.
가장 간단하고, 전 세대의 CPU에서 확인 가능하게끔 자료를 다시 재구성하였습니다.
첨부파일의 iPG[All]을 다운받아주시면 설치파일 pkg3개와 AppleIntelInfo.kext가 있을 것입니다.
설치파일 pkg3개는 모두 설치를 해주시면 되며, 켁스트 파일은 제가 말씀드리는 방법으로 로드시켜주시면 되겠습니다.
참고로 기존 설치 파일은 모스펫님의 글 https://www.x86.co.kr/sle/1114799 에서 받아왔습니다.
[좋은 자료 공유해주신 모스펫님께 감사의 말씀드립니다]
켁스트를 로드하기 전에 NullCPUPowerManagement.kext등과 같은 특수 패치용 켁스트를 제거해주셔야합니다.
그렇지 않은 경우 커널패닉 등의 오류가 날 수 있습니다.
불필요한 켁스트를 모두 제거한 후 재부팅까지 하셨다면, 터미널을 실행시키신 후에 아래처럼 입력하시면 됩니다.
다만 조금 편하게 입력하기 위하여 터미널창에 sudo chown -R 0:0
을 입력한 후에 스페이스 한번 누르고 해당 켁스트를 드래그 앤 드랍으로 터미널에 갖다놔주시면 경로가 자동으로 생성됩니다.
그상태에서 엔터를 누르셔서 적용하시는게 좀 더 편할거라 생각합니다.
혹은 켁스트 우클릭을 통하여 정보확인에서 경로복사를 하여 적용하셔도 무관합니다.
만일 기존 켁스트로 써야지 하신다면? 제가 첨부한 파일로 해주시기 바랍니다.
가장 최신판으로써 10.11.4에 빌드되어 스카이레이크 계열에서 테스트된 따끈따끈한 파일이기 때문입니다 ㅎㅎㅎ
정보 로드는 cat /tmp/AppleIntelInfo.dat 을 통하여 하실 수 있습니다.
아마 처음에는 위 처럼 모든 배수가 찍히지는 않을텐데, 잘 살펴보셔야 할 것이
배수는 P-State를 의미한다는 것입니다.
저 위에서 나와있는걸 보시면 C3, C6, C7 - Cores부분입니다.
나중에 C3-Cores가 0 ~ 3코어로 되어있고 C6, C7 코어들도 0 ~ 3코어로 찍혀있는게 보이실텐데
여러분의 코어가 듀얼이라면 0 ~ 1, 쿼드라면 0 ~ 3, 옥타라면 0 ~ 7로 나올것입니다.
제가 알기로 하이퍼 스레딩은 취급하지 않는 것으로 알고있습니다.
저렇게 C-State가 잘 찍힌다면 일단은 문제 없이 동작은 한다라고 판단합니다.
그리고 P-State의 배수가 잘 찍혀야하는데, 이 부분은 씨피유를 불필요한 프로세서를 전부 종료해준 상태부터
가혹하게 혹사시키는 작업?까지 해주시고 다시 정보를 로드시켜주면 아래처럼 나올겁니다.
제 경우 8부터 38까지 모든 배수가 전부 찍히고 내장 그래픽도 4부터 13까지 잘 찍히는 걸 확인할 수 있었습니다.
만일 이 배수가 모두 찍히지 않는다면, 적어도 최저배수 부근 및 중간배수, 최고배수 등이 어느정도 찍히기만해도 이상이 없습니다.
왜냐면? 해당 배수는 smbios에 따라 모두 찍히는 기종이 있고 그렇지 않은 기종이 있기 때문입니다.
자신과 같은 smbios를 사용하는 분들에게 요청하시거나, 구글링을 통하여 위 정보를 확인하셔서 제대로 안나온다 싶으면 손을 대시는게 맞을 것입니다.
[대부분 이런 경우에는 바이오스 설정등을 간단히 만져주면 해결되는 경우가 더럿 있습니다.]
테스트를 마친 후에는 아래의 명령어로 켁스트를 로드해제 시켜줍니다.
1-5-2. Intel Power Gadget을 통하여 확인하기
1-5-2-1. 기본적 실행
해당 과정을 진행하시기에 앞서 위에 언급한 켁스트를 통하여 확인을 꼭 해주신 후 진행하시기 바랍니다.
이 부분은 위에서 언급한 pkg파일 3개를 모두 설치한 후 생성되는 인텔 파워 가젯을 통하여 진행하는 작업이니만큼
어느정도의 그래프 분석이 들어가기 때문입니다.
인텔 파워가젯을 실행시켜주면 아래와 같이 나올 것입니다.
파워는 2가지가 나옵니다. 패키지 파워 및 각 코어별 파워인데
하늘색의 IA를 유심히 살펴보면 됩니다.
분석하는 방법은 알고리즘화 (일종의 정규화)가 되어있지 않아 확실하지 않은 방법입니다.
P-State와 C-State를 분석하기 위하여 위 프로그램을 사용하는 것인데, 주로 C-State의 실 동작을 확인하기 위한 목적으로 사용됩니다.
맨 위는 파워 (전력소모량)을 나타내며 중간은 동작 주파수 (각 코어별 및 내장그래픽)를 알려줍니다.
최 하단은 보시면 바로 아시겠지만, 현재 온도를 알려주고 있습니다.
1-5-2-2. P-State의 확인
기본적인 P-State는 우선 켁스트 로드로 배수가 잘 나오면 큰 문제가 없는 것입니다.
부가적으로 동작 그래프가 최고 값부터 어느정도 최하 값까지 잘 나오는지를 확인해주시면 되겠습니다.
기본 로드는 아무리 짧아도 1초간격이기 때문에, 켁스트에서 로드되는 것과는 결과가 상이할 수 밖에 없습니다.
왜냐하면 CPU가 진입하는 P-State 및 C-State 상태는 최단기간으로 빠르게 동작하는 부분이기 때문인데,
이 부분은 단위가 ms (미리세컨드)로써 1초단위에 표기가 잘 안되는 것이 정상입니다.
대략적으로 프로그램 중간 칸의 Frequency부분의 그래프가 너무 위에서만 놀거나 한다면 P-State의 동작을 의심해볼 수 있는 상황입니다.
물론, 이 부분은 여러분이 프로그램을 정말 다 종료시켜주어야합니다.
심한 경우에는 사파리마저도 종료해주어야 할 수 있기 때문에, 해당 글을 모바일로 읽으면서 작업하시는 것도 좋을 것이라 생각합니다.
1-5-2-3. C-State의 확인
해당 부분이 가장 확인하기 어려운 부분입니다.
C-State의 전력소모량은 어디까지나 소프트웨어적 측정이기때문이며, 사용된 환경 및 구성된 부품의 영향도 존재하기 때문입니다.
1. 우선은 여러분의 파워를 확인해주세요.
파워가 C6 및 C7 상태를 정상적으로 지원해줄 수 있는 파워인지를 확인해보아야합니다.
대부분 80 Plus 인증을 받은 파워는 기본적으로 해당 상태를 지원해주지만, 그렇지 않은 파워는 기종과 모델에 따라 지원하지 않을 수 있습니다.
지원하지 않는 경우 전력 소모량은 5W 혹은 0.5W이상으로만 측정됩니다.
2. 윈도우가 설치된 멀티 OS 환경이라면 윈도우에서 전력소모량 등을 측정한 데이터를 기반으로 작업해주세요.
윈도우에서 가장 객관적으로 데이터를 산출해내었다면, 맥도 비슷하게 동작해야 정상입니다.
따라서 해당 데이터 값과 유사한 그래프를 보이지 않는다면 C-State의 동작 이상을 의심해보아야합니다.
3. 자신의 CPU가 특수목적용이 아닌지 생각해보세요.
앞으로 설명드릴 CPU의 C-State 측정방식은 데스크탑 PC의 일반적인 측정법에 해당됩니다.
저전력 프로세서 등을 탑재한 노트북이나 서버용 CPU등에서는 제대로 확인하기 어려울 수 있습니다.
위는 앞서 제시한 사진과 동일한 사진입니다.
패키지 와트를 보면 5와트부근이고, 개별 코어 전력소모량은 0.28와트로 찍혀있습니다.
전력소모량 그래프는 많은 요동을 치지만, 특별한 때에만 올라가고 그 외에는 0와트 부근에서 머무는 것을 확인할 수 있습니다.
이를 통하여 기본적인 C-State가 동작함을 알 수 있습니다.
만약 C-State가 제대로 동작하지 않는다면, 해당 전력소모 그래프는 항상 높거나 높낮이의 변화가 거의 없는 평탄한 그래프를 그릴 것이기 때문입니다.
또한 두 번째의 동작 주파수 그래프와 비교하여 주파수가 높은 상태에 있음에도 전력소모량 그래프가 낮은 값을 기록하고 있다는 점을 통하여
확실히 잘 동작하고 있음을 확인할 수 있습니다.
추가적으로 해당 동작과 관련하여 CPU의 큰 온도변화가 없는 것도 한 몫 한다고 볼 수 있겠습니다.
그러나 수치적으로 C-State가 좀 더 제대로 동작하는지?를 알고 싶은 경우에는 프로그램을 모두 종료한 상태에서 측정할 필요가 있습니다.
위 사진은 좀 더 제대로된 측정을 위하여 모든 프로그램을 종료한 상태에서 측정한 그래프입니다.
전자에 비해 주파수 그래프도 좀 낮아진 것을 확인할 수 있으며, 전력 소모 그래프도 매우 낮은 상태에서 동작하는 것을 알 수 있습니다.
개별 코어의 전력소모량도 0.15W로써 앞서 살펴본 기술문서에 부합하는 전력소모량을 보여줌에 따라
제 컴퓨터의 CPU는 P-State 및 C-State가 잘 잡혀있다고 볼 수 있겠습니다.
이러한 방식을 통하여 여러분의 씨피유가 제대로 동작 중에 있는지를 살펴볼 수 있습니다.
이런 측정은 항상 윈도우의 기본적 상태에서 씨피유가 얼만큼의 동작을 보였는가?를 기준으로 하여 맥 상태에서의 동작 이상 유무를 점검해야합니다.
평소에는 뜨거웠던 녀석인데, 맥에서 잘 잡았다고 안 뜨거우라는 법은 없기 때문입니다.
2. C-State를 위한 패치
2-1. X86PlatformPlugin.kext를 통하여 패치하기
기본적으로 X86PlatformPlugin.kext가 로드되는 것이 정상입니다만, 이 경우는 아래의 모델에만 해당됩니다.
모든 모델명을 적기가 힘들어,, 스크린샷으로 대체합니다.
해당 파일들은 X86PlatfromPlugin.kext의 내부에 있는 파일들로써 각 제품군에 심어진 CPU 및 그래픽카드를 원활하게 사용할 수 있게끔
각기 설정된 PowerManagement 옵션값이 설정되어있는 파일들입니다.
이 부분이 바로 핵심입니다 :)
눈치가 빠르신 분들은 바로 아시겠지만? 바로 여러분이 사용중인 현재 smbios에 해당하는 plist파일을 찾아
그 내용을 여러분이 사용하고 있는 사양과 가장 흡사한 모델의 board-id를 찾아 해당 plist의 파일 내용으로 대체시켜버리는 것입니다.
예를들자면 여러분은 smbios로 iMac 15,1을 사용 중에 있는 상태인데
현재 사용중인 CPU가 채택된 모델은 iMac 13,2라고 하겠습니다.
패치는 간단하게 iMac 15,1 board-id로 되어있는 plist파일을
iMac 13,2 board-id로 되어있는 파일로 대체해주면 됩니다.
iMac 13,2 board-id로 된 plist파일 이름을 iMac 15,1 board-id로 수정하여 적용하여도 되고
아니면 그냥 파일 내용을 복사하여 15,1 board-id로 된 부분의 내용을 다 지운 후 넣어서 수정해주어도 되는 것입니다.
다만 여러분의 맥이 아래의 사진처럼 해당 켁스트 파일을 로드하고 있을 때에만 적용이 가능합니다.
모델을 및 사양은 https://www.everymac.com/systems/apple/imac/index-imac.html 여기서 확인하시면 되며
모델에 따른 board-id는 일부 기종은 https://github.com/upekkha/AppleHardwareTest 여기에 제시되어있고, 나머지는 직업 구글링하셔서 찾으셔야합니다.
또한 Plist파일의 수정을 위하여 에디터를 찾으시는 분들께서는 첨부파일의 PlistEdit Pro.zip을 받아주시면 되겠고
실행 후에 업데이트 확인 및 체크 등은 전부 하지 않는 걸로 해주신 후 install // cancle이 나오면 cancle을 해주시면 되겠습니다.
해당 X86PlatformPlugin.kext는 S/L/E에 설치해주셔야 하는 켁스트이므로
켁스트의 원활한 복구 및 재설치 등을 위하여 KCPM Uitlity Pro.zip을 첨부하오니 해당 프로그램을 통하여 작업해주시면 감사하겠습니다.
해당 파일을 로드시키는 방법은 _DSM 문구를 통하여 가능한데, 해당 방법은 클로버를 사용하는 분들을 기준으로는 다음과 같습니다.
우선 수정을 위하여 첨부파일의 Clover Configurator.zip을 다운받아주시면 되겠습니다. [이미 가지고 계신 분들은 다운받지 않으셔도됩니다.]
정말 ?간단한 방법으로 클로버 콘피규레이터를 사용하여 ACPI -> SSDT쪽에서 Plugin Type을 1로 해주면 됩니다.
이 플러긴 타입을 기준으로 시스템이 X86켁스트를 로드하기 때문입니다.
만약 커널의 오류등이 나거나 그렇다면 NullCPUPowerManagement.kext등과 같은 특수한 패치를 위한 CPU관련 켁스트는 제거하셔야합니다.
단순한 CPUID Patch정도는 괜찮다 생각합니다.
만일 이렇게도 안된다면? SSDT를 SSDTPRGen을 통하여 생성시켜주시거나,
DSDT에 SSDT를 인젝션 시켜서 작업해주셔야만 합니다.
2-2. DSDT 수정등을 통하여 패치하기
해당 내용은 전작에 제가 게시했던 게시물로 대체하오니 양해 부탁드리겠습니다.
필요한 첨부파일은 아래 게시물들에 있으나, 다운이 안되시거나 하면 지금 이 게시물의 첨부파일에서 IORegistryExplorer 및 MaciASL을 다운받아주시면 되겠습니다.
https://www.x86.co.kr/successtip/1104585
https://www.x86.co.kr/282143
https://www.x86.co.kr/997167
2-3. FakeSMC 수정등을 통하여 패치하기
또한 FakeSMC에 패치하는 방식을 통하여서도? 어느정도 패치가 가능하기는 합니다만,
해당 방법은 위험도가 커서 따로 기술하지 않습니다만 관련 글타래로 대체하겠습니다.
[해당 출처는 IanMinchangShin님의 게시물입니다. 감사드립니다 ^^]
https://www.x86.co.kr/1095488
3. 글을 마치면서...
요번 게시물은..? 어쩌다 보니 거의 이론에 치중해버린 글이 되어버렸습니다만,
어느정도의 대략적 패치방법 등은 이미 전 끝판왕 게시물에서 거의 다 다루다 보니 이 글에서 추가로 작성해야할 부분들이 많이 줄었다 생각합니다.
오히려 조금 더 깔끔해진 P-State 및 C-State의 확인 방법과 추가적인? X86PlatformPlugin.kext를 통한 패치방법 등으로 인하여
읽는 이들이 조금이나마 쉽게 패치할 수 있지 않을까란 희망을 품어봅니다.
글을 오전에 작성했는데, 이제서야 마치네요....
작성시간만 5시간은 넘은 것 같습니다.
앞으로 끝판왕 게시물은 나와도 3편정도가 전부일 것 같습니다.
1개는 DSDT편이고, 1개는 Display 관련편이고 나머지 1개는 기타 kext패치 및 하드웨어 잡는 편 정도?로 생각하고 있습니다.
너무나도 긴 글 끝까지 읽으시느라 고생하셨습니다.
정말 감사드립니다.
^^*
.
.
.
P.S. 다음 편은 언제 작성될지 저도 모릅니다.
맥프로로 셋팅하고
applelpc패치는 이안님 캑스트방식으로 패치를 하여 로드됩니다.
X86PlatformPlugin, X86PlatformShim.kext 둘다 로드하려고 했으나 실패했습니다.
dsdt로 하고 싶으나 울렁증이 있는가 봅니다.
마지박 작업에서 번번히 실패하고 그래서
다시 원상복귀시키고 그렇습니다.
1. DSM을 넣어보려고 했으나 Serialized 형식으로 있습니다.
올려놓았던 부분을 넣을 수 있는것인지
이 부분은 넣지 않아도 되는지...
아래처럼 이번에 구입한 메인보드 dsdt에는 항목이 있구요
클로버 설정도 했어도 ,,,
2. X86PlatformPlugin, X86PlatformShim.kext로드 되지 안네요.
3. 남은 것은 dsdt 밖에 없는데 남은 패치하기가 너무 힘드네요
Method (_DSM, 4, Serialized)
{
Name (_T_1, Zero)
Name (_T_0, Zero)
If (LEqual (Arg0, Buffer (0x10)
{
/* 0000 */ 0xA6, 0xFA, 0xDD, 0x3D, 0x1B, 0x36, 0xB4, 0x4E,
/* 0008 */ 0xA4, 0x24, 0x8D, 0x10, 0x08, 0x9D, 0x16, 0x53
}))
{
While (One)
{
Store (ToInteger (Arg2), _T_0)
If (LEqual (_T_0, Zero))
{
Return (Buffer (0x02)
{
0xFF, 0x01
})
}
Else
{
If (LEqual (_T_0, One))
{
Return ("1.2")
}
Else
가볍게 파일 첨부하여 올려봅니다.
해당 dsdt파일의 cpu쪽에 x86관련 kext들을 로드시킬 수 있도록 넣어두었습니다만,
혹여나 커널패닉이 일어날 수 있으니 주의하시어 적용해주시면 감사하겠습니다.
늦은 답글 죄송합니다.
* 첨부된 파일은 우측 상단에 추천 비추천 옆 첨부 1을 누르시면 파일이 나오니 확인하시어 다운받으시면 되겠습니다.
clover -> ACPI -> SSDT 설정 부분에서
Generate PStates, Generate CStates 부분을 활성화 시키면
X86Platform 형제가 로드되는데요.
이렇게 해도 상관 없나요?
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
macOS Sequoia 15.0.1 24A348 정식버젼 고스트 이미지 OC 1.0.2 ft: 전체공개 +29 | 936 | 24.10.1121:10 | 좌절금지 |
오픈코어 1.0.2 +23 | 574 | 24.10.0900:22 | 줌바이퍼 |
[중급편] 노트북 해킨 +16 | 1401 | 24.07.1219:19 | Stultus |
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +17 | 574 | 24.09.1917:09 | 좌절금지 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +31 | 908 | 24.09.1723:58 | 좌절금지 |
[초급편] 문제 스스로 해결하기 +20 | 4002 | 24.03.2920:07 | Stultus |
[입문편] 첫 해킨 길라잡이 +40 | 5081 | 24.01.1218:54 | Stultus |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +67 | 5.1만 | 23.01.0913:39 | shl628 |
Hot AMD Sequoia용 AppleALC 1.9.2 +3 | 105 | 24.10.2319:04 | 사노라맨 |
Hot [Sequoia 15.0.1, OC r1.0.2] ASUS TUF B550-PLUS / RYZEN 5 5600X / RX470 +2 | 101 | 24.10.2322:26 | 뿌엥 |
Hot OCLP로 지원되지 않는 기기/dGPU를 사용하는 해킨토시의 사이드카 품질 문제 해결방법 +1 | 114 | 24.10.2321:29 | 해킨도전자 |
114 | 24.10.2321:29 | 해킨도전자 | |
105 | 24.10.2319:04 | 사노라맨 | |
783 | 24.10.1412:27 | shl628 | |
659 | 24.10.1316:00 | 수박 | |
936 | 24.10.1121:10 | 좌절금지 | |
574 | 24.10.0900:22 | 줌바이퍼 | |
1401 | 24.07.1219:19 | Stultus | |
1209 | 24.10.0500:31 | 줌바이퍼 | |
569 | 24.10.0410:49 | Tamy | |
463 | 24.09.2808:22 | Tamy | |
893 | 24.09.2321:32 | Stultus | |
601 | 24.09.1722:40 | 좌절금지 | |
562 | 24.09.1708:13 | 김경석 | |
768 | 24.09.1504:35 | Tamy | |
584 | 24.09.1319:18 | Stultus | |
706 | 24.09.1019:44 | 치토 | |
462 | 24.09.0112:54 | 해킨도전자 | |
546 | 24.08.3115:34 | 머핀X | |
306 | 24.08.2601:42 | 화정큐삼 | |
305 | 24.08.2422:59 | 하나브 | |
318 | 24.08.2316:25 | 화정큐삼 | |
415 | 24.08.1810:56 | CanBe | |
363 | 24.08.1800:04 | 화정큐삼 | |
300 | 24.08.1722:03 | 화정큐삼 | |
419 | 24.08.1419:58 | Stultus | |
377 | 24.08.1311:26 | 오디세이 | |
270 | 24.08.1115:46 | 좌절금지 | |
233 | 24.08.1022:46 | Stultus | |
131 | 24.08.0609:17 | RogerT | |
88 | 24.08.0523:34 | jbhlyk | |
267 | 24.08.0521:10 | 수인과윤슈 | |
621 | 24.08.0221:07 | Stultus | |
391 | 24.07.3019:12 | Tamy | |
308 | 24.07.2112:43 | Stultus | |
284 | 24.07.1122:47 | Stultus | |
215 | 24.07.1020:44 | Stultus | |
257 | 24.07.0921:44 | Stultus | |
384 | 24.07.0820:57 | Stultus | |
397 | 24.07.0721:25 | Stultus | |
359 | 24.07.0604:41 | bsiugr | |
650 | 24.07.0509:56 | 애플브리크 | |
472 | 24.06.2723:24 | 치토 | |
852 | 24.06.1120:40 | Stultus | |
1447 | 24.04.3022:28 | Stultus | |
1027 | 24.04.2718:46 | Stultus | |
3084 | 24.04.1312:15 | Stultus | |
3049 | 24.04.0712:49 | Stultus | |
1537 | 24.04.0619:59 | Stultus | |
1517 | 24.04.0613:43 | Stultus | |
2665 | 24.04.0521:57 | Stultus |
고생 많으셨습니다. ^^*