항상 서두를 어떻게 말해야할지 잘 모르겠어서 한참 해매는 1인입니다. ㅎㅎ;
요번 글은 제목이 곧 내용입니다. 저희가 흔히 커맥의 3대 꽃이라 불리는 스피드스텝, 그리고 잠자기에 관한
아주 중요한 부분들을 놓친채 커맥을 시도하고 있습니다.
그래서 요번 글의 주요 논지는 CPU가 되겠습니다 (하핫)
고로 잠시 DSDT 팁은 미루도록 하...려고 했습니다만, SSDT가 빠질 수 없는 부분이기에
SSDT 강의도 함께 할겸 ^^.. 겸사겸사 세마리 토끼를 한번에 잡기로 했습니다.
일망타진인 셈이지요.
저희는 몇가지 CPU의 동작 구조에 대해 알 필요가 있습니다.
너무나 따분하고도 지루하며 재미없고 외계인을 고문해대는 인텔이 뭔짓을 해둔 건지를
왜 알아야하는지 모르겠다고 생각하실 수 있습니다.
모든걸 알 필요는 없습니다, 그래도 단순히 패치법만- 스킬만 슉슉 익혀서
대충대충 덕지덕지 패치해놓고 오류 생기면, 누구에게 물어보실건지 여쭈고 싶습니다.
커맥의 세계는 결국 타인이 도와주는데에는 한계가 있다는 것입니다.
이건 인생사도 마찬가지겠지만 -_-;; 삼천포로 새는 것 같아 접어두겠습니다.
어쨌거나, 저의 최소한의 목표는 바로 여러분이
최소한 용어라도 알아가셨으면 한다는 점입니다 ㅎㅎ.
각설하고 시작하도록 하겠습니다.
1. CPU의 구조 -> 스피드 스텝에 관하여
CPU의 구조라고는 하였지만, 실질적으로 저희가 살펴볼 부분은 바로
스피드 스텝관련 기술만을 살펴볼 것입니다.
스피드스텝이 과연 무엇일까요?
사람으로 치자면, 일을 하는데 쉬지 않고 계속 끊임없이 일하는 것이 아니라
자신이 낼 수 있는 역량을 조절해가며 쉴땐 쉬어주고 일할땐 빡세게 해주는걸 시스템적으로
그리고 하드웨어적으로 구현해놓은 것입니다.
한마디로 일의 효율성을 극대화시키는 기술이라는 것입니다.
이부분은 터보부스트라는 모종의 기술과 쌍방향으로 동작하며 시너지효과를 불러일으킵니다.
저희는 바로 이 동작 원리에 대해 살펴보게 되는 것이죠.
스피드스텝은 전력관리 기술의 꽃인만큼 굉장한 전력기술이 도입되어있습니다.
바로 P-State와 C-State라는 2가지 기술로 구현되어있는데요,
P-State는 유동적인 동작 주파수의 조절을 통하여 TDP (총 전류소모량)을 감축하는데 주 목적이 있습니다.
예컨데 3.4기가로 동작하는 씨피유가 있다고 가정합니다.
이 씨피유가 하는 일도 없이 펑펑 노는데도 계속 3.4기가로 동작한다면
당연 소모하는 전류는 그만큼 많아지게 돼겠죠?
그리고 3.4기가인 씨퓨에 1.5기가만큼 써도 충분히 해낼 수 있는 일을 주었을 때
3.4기가로 동작하여 처리하면 물론 빠르겠지만, 효율성이 떨어진다고 볼 수 있습니다.
그렇기에 이 동작주파수를 씨피유가 판단하여 임의로 낮추는 것입니다.
바로 자신이 필요한 만큼의 주파수로 말이죠.
이로 인하여 3.4에 최고 소모전류가 84W인 씨피유는
1.5로 동작하며 소모전류를 이에 부합하는 약 30~40W정도만을 소모하여 동작하게됩니다.
여기서 저희가 주로 스피드스텝 하면서 켁스트 로드를 통해 배수를 뽑아보는데,
이 값은 켁스트 정보에 나와있다시피 P-State 동작 여부입니다.
이 P-State를 통해 전력감소를 볼 수 있는 것은 꽤나? 큰 편이긴 하지만
인텔은 이에 불구하고 더 큰 기술을 내놓게 됩니다.
바로 C-State라는 기술입니다.
P-State로 이미 떨어질 만큼 배수가 떨어져서 800Mhz로 동작하는 씨피유가 있습니다.
그런데 실 작업량은 이것보다 더 떨어져도 되고, 심지어는 전류도 그닥 필요로 하지 않습니다.
그냥 발로해도 될만큼 쉬운일밖에 없다는거죠.
이럴때 C-State가 동작하게 됩니다.
우선 C1/C1E를 동작시키므로써 움직이고 있는 씨피유를 멈춥니다.
이로써 씨퓨는 쉴 수 있게 되는 것이지요.
한마디로 C1/C1E 기술은 대략 일하고 있는 씨퓨를 편히 쉬게끔 해준다는 의미로
Halt기술이라 불뤼기도 합니다.
그리고 이 C1/C1E기술로 쉬고 있는데도 불구하고
이마저도 필요없는 때가 있을 수 있습니다.
그래서 C3기술이 C1/C1E로 쉬고 있는 씨피유보고 그냥 아에 자라고 합니다.
그렇게 씨피유는 잠을 자게 되는데, 이때 L1,L2 캐시가 동결?되는 것으로 알고 있습니다.
[ 더 구체적인 동작 방식은 인텔 기술문서나 인터넷을 뒤져보시면 되겠습니다.]
그리고 C3보다 더 하위로 들어가는 C6/C7은 C3를 유지하고 있는
L3캐쉬마저 싹다 비워버리고, 이에 들어가는 전압레일마저 꺼버립니다.
그리고 C8~C10단계에 들어가서는 완전히 모든 동력을 다 차단시켜버리며
극강의 소모량으로 들어가게 됩니다.
이때 인텔 스카이레이크 기준 기술문서에 C8동작시 소모 전류량이 2W라고 적혀있었던걸 확인했습니다. (ㅎㅎ)
C6/C7을 지원해주는 파워인 경우 각 코어별 최저 TDP는 1.0W대로 떨어질 수 있으며
인텔 파워 가젯으로 확인한 결과 정상동작시 각 코어는 최소 0.1W까지도 전류동작이 떨어질 수 있음을 확인했습니다.
여기서의 기술문서 차이는, 각코어가 아닌 패키지 코어 TDP로써 2W면 굉장히 낮은 수치를 의미합니다.
이렇게 들어가는 순서는 C0 -> C1/C1E -> (C2) -> C3 -> C6/C7 -> C8 ~ C10가 됩니다.
그리고 이 기술과 함께 P-State가 동작하게 됩니다.
여담이지만 스카이레이크 기종에서는 P-State의 최저동작배수로 24MHz모드를 만들어 두었다고 합니다.
한마디로 최저배수인 800으로도 필요없으면 24로 움직이며 처리하게끔 알고리즘을 새로 추가한 것이지요.
이러한 부분들은 이제 여러분의 컴퓨터에 존재하는
APCI라는 Data테이블에 기술이됩니다.
FACP에 아주 자세하게 CPU관련 정보가 기술되어있으며,
이를 바탕으로 저희는 자신만의 SSDT를 제작해보도록 하려합니다.
여기서 스피드 스텝을 잡는다?라고 하면 C-State와 P-State를 잡는 다는 것으로
이제는 생각을 바꿔주셔야 합니다. 저희는 배수락의 표기만을 보며 스피드스텝이 안잡혔네하며 실망하지만
실제로는 P-State가 안잡혔을 뿐, 실질적인 C-State는 잡혀있을 수 있다는 것입니다.
이로 인하여 스피드 스텝을 점검할 때에는
반드시 씨피유의 전류소모량을 측정할 수 있는 어플등을 사용하셔서 (HWSensor나 Intel Power Gadget 등이 지원합니다)
소모량을 측정하여 기준에 부합하는지를 점검하시어 최종 여부를 판단하셔야 할 것입니다.
2. 스피드스텝과 SSDT와의 상관관계
이제부터 SSDT와 스피드스텝과의 상관관계에 대해 말해보려고 합니다.
실로 SSDT를 적용하는 이유는 스피드스텝을 잡고자하는 열의와 욕망으로 인하여
무분별하게 패치가 되는 경우가 많은데, 이는 매우 잘못된 행동이었음을(?) 고하려합니다.
대부분의 씨피유는 어지간해선 C-State가 정상적으로 동작하며
어지간한 보드들은 해당 C-State기술에 관한 옵션 설정을 바이오스단에서 지원해주고 있다는 것입니다.
한마디로 굳이 저희가 머리싸매며 힘들게 ssdt를 구하고 패치해줄 필요는 없다는 것이지요.
오히려 저희가 건드려 주어야 할 것은 잘 먹히지 않는 P-State라는 것입니다.
이것은 흔히 보여지는 배수표기로 상태를 판단할 수 있는데, 이 정도가 꽤나 애매합니다.
켁스트에서는 표기가 되지 않는 수치이나 인텔 가젯등을 사용하여 확인하였더니 표기가 된다면?
이만큼 난감한 상황이 있을 수 없습니다.
이게 잡힌건지 안잡힌건지 도무지 알 길이 없기 때문입니다.
이럴때 대부분은 인텔 가젯에 우선 순위를 둡니다.
그래프일 뿐 더러, 인텔이 공식적으로 지원하는 툴이므로 신뢰도가 더 높다는 이유입니다.
이 경우 그래프의 꼭지점을 기준으로 동작 Ghz를 판단하게 됩니다.
도중에 지나가는 선은 의미가 없습니다.
크게 CPU는 이렇게 P-State, C-State로 나뉨을 계속해서 언급해드리고 있습니다.
그리고 이모드들은 들어가는데 레이턴시라 하여 일종의 동작 딜레이가 존재합니다.
무조건 바로 들어가졌다 종료되는 것이 아닌, 각 모드별로 자신만의 고유
지원 딜레이 타임이 존재한다는 것입니다.
이로 인해 같은 기종의 씨피유여도 사용자마다 어느정도 SSDT가 다르게 작성될 수 밖에 없는 이유입니다.
그럼 SSDT에서 위 항목들은 무엇과 연관이 있는가?를 빼놓을 수 없을 것입니다.
SSDT에서 P-State는 APSS로 작성되어지며
C-State는 ACST로 작성되어진다는 것입니다.
그리고 이러한 부분들은 다시 세부적으로 나뉘어지는데 다음과 같습니다.
APSS는 고유 Package를 가집니다.
이것은 하나의 묶음단위를 의미하는데, 100Mhz를 기준으로합니다.
한마디로 0.1Ghz단위마다의 정보를 가지고 있는 셈입니다.
예컨데 자신의 씨피유가 최저 0.8 ~ 논터보 3.4 ~ 터보최고 3.9 동작 씨피유라면
해당 패키지는 0.8~3.9까지의 갯수를 가지며 갯수는 39 - 8 + 1인 32개가 됩니다.
그리고 각 패키지는 정보를 6가지를 가지게 됩니다.
현 동작 주파수를 알리는 값, 그 동작주파수에 해당되는 소모 전류량 (TDP),
버스프리퀀시에 따른 설정값 2개, 현 동작 라티오 (배율) 값 2개로 총 6개입니다.
예컨데 3.8Ghz라면 다음과 같이 된다는 것입니다.
3800, 3800일때의 소모량, 버스프리퀀시에 따른 설정값 2개, 3800에 해당되는 배율값인 38 2개 (총 6개)
그리고 이것은 CPU0에 정의되며
나머지 씨피유 코어들은 모두 해당 CPU0코어로부터 참조하는 방식으로써 구현됩니다.
한마디로 중복으로 정의할 필요가 없다는 것입니다.
하나 정의해놓고 불러다 쓰는 것이죠 ㅎㅎ.
ACST의 경우에는 구조가 다소 복잡합니다.
CPU는 자신이 지원하는 C-State Package값이 따로 존재합니다.
이걸 기준으로하여 C1~C10까지 동작에 관한 부분이 ssdt에 기술됩니다.
이또한 패키지 형식으로 구조가 되어져있고, 패키지는
그안에 또다른 패키지로써 구현되어집니다.
한마디로 C-STATE라는 큰 묶음 안에
C1/C1E, C2, C3, C6, C7, C8, C9, C10이라는 작은
묶음단위가 따로따로 들어있는 격입니다.
그리고 이 값들은 또 고유의 값들을 지니게 됩니다.
동작 비트의 길이와 오프셋값
그리고 찾아들어갈 주소값과 액세스 사이즈.
또한 자신의 동작 이름 (C1, C2등의 유무)와 함께
동작시 소모되는 전류량과 들어가고 나올때 걸리는 레이턴시 값을
패키지로써 하나의 묶음으로 가지게됩니다.
이 부분들은 다음글에서 실제 SSDT를 모셔다?놓고 직접
분석해나가며 설명해드릴 것입니다 (ㅎㅎ)
이런식으로 동작이 된다는 사실을 알고,
적용해 나갈때 자신이 원하는 부분만을 패치하여 삽질도 줄이고
선택의 폭도 더 높일 수 있다 생각합니다.
특히 CPU는 앞서 말씀드렸다 시피 P/C 이렇게 두개로 구분되므로
SSDT패치시에 2가지를 한번에 패치하지 않고
일부분만 패치가 가능하다는 것입니다.
자신은 C-State이 문제야 하면 이것만 건드려주면 되는 것이고
P-State이 문제야 하면 이것만 건드려주면 되는 것입니다.
제 경우에는 P-State의 문제로 해당 배수락을 패치하여 적용중에 있는데
매우 잘 나오고 C-State은 바이오스단에서 알아서 잘 잡아주어 잘 사용중에 있는 상태입니다. ㅎㅎ
3. 요번 글을 정리하며...
씨피유는 민감하지만, 어렵다는 이유로 그간 일부 기술자들이나 능력자들?에게 의존되어져 왔던 부분입니다.
제 경우에는 잠자기와 씨름하다가 결국 씨피유문제라는 곳에 봉착하게 되었고,
이리야님의 도움으로 ^^ 어쩌다 서로 멘붕에 빠지게 되었는데,
이 과정을 통해 잠자기가 잘 해결이 되었습니다.
한마디로 소 뒷걸음 치다 쥐잡은 격??이 되어버렸다는 것이지요.
SSDT를 항상 적용해왔던 저인데, 이게 필요가 없다니.
너무나 깜짝 놀랐습니다.
난 왜 적용하고 있었던 걸까, 그냥 보험든 셈 치고 적용했던건가 싶기도 하고
오히려 적용하지 않으니 잠자기 문제가 말끔히 해결된 부분이 놀라웠습니다.
그리고 애플은 놀랍게도 씨피유 관리기술을 3가지나 가지고 있다는 점이었습니다.
씨피유 관련 켁스트를 확장파일에서 찾아보시면 아시겠지만 은근히~ 많습니다.
이것들에 관하여는 하편인 잠자기 부분에서 다루도록 하겠습니다.
다음 글은 요번 마지막에 언급한 SSDT를 실제로 분석하는 글이 될 것 같습니다 ㅎㅎ
읽어주셔서 감사드립니다.
읽어주셔서 감사드립니다, 감자깡7님
고수의 향기라니....
단지 제 삽질의 결과들을 잘 정리했을 뿐입니다 ㅎㅎ
좋은 강의 감사합니다. 어렴풋이 느낌적인 느낌으로만 알고 있던 부분에 대해 잘 정리해주셔서 많은 도움이 될것 같습니다.
다음 예정 삽질에서 SSDT는 뺴야되는건 가요...?ㅋㅋ
읽어주셔서 감사드립니다 ^^...
스피드스텝을 잡아야하는지 말아야하는지에 대해서는,
Intel Power Gadget을 사용하여 어떻게 분석하고 어떤 결과일때 패치해주어야 하는지를
마지막 번외편에서 다룰 예정에 있습니다. ㅎㅎ 기다려주세용
"님의 댓글"
이 댓글을 신고 하시겠습니까?
제목 | 조회 수 | 날짜 | 글쓴이 |
---|---|---|---|
macOS Sequoia 15.0.1 24A348 정식버젼 고스트 이미지 OC 1.0.2 ft: 전체공개 +29 | 937 | 24.10.1121:10 | 좌절금지 |
오픈코어 1.0.2 +23 | 575 | 24.10.0900:22 | 줌바이퍼 |
[중급편] 노트북 해킨 +16 | 1402 | 24.07.1219:19 | Stultus |
macOS Ventura 13.7 22H123 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체 공개 +17 | 575 | 24.09.1917:09 | 좌절금지 |
macOS Sonoma 14.7 23H124 정식버젼 고스트 이미지 OC 1.0.1 ft: 전체공개 +31 | 909 | 24.09.1723:58 | 좌절금지 |
[초급편] 문제 스스로 해결하기 +20 | 4002 | 24.03.2920:07 | Stultus |
[입문편] 첫 해킨 길라잡이 +40 | 5086 | 24.01.1218:54 | Stultus |
[필독 - 안정화] macOS 해킨토시 설치 후 안정화 작업 목록 및 글타래 모음 총정리 📋 +67 | 5.1만 | 23.01.0913:39 | shl628 |
Hot AMD Sequoia용 AppleALC 1.9.2 +3 | 106 | 24.10.2319:04 | 사노라맨 |
Hot [Sequoia 15.0.1, OC r1.0.2] ASUS TUF B550-PLUS / RYZEN 5 5600X / RX470 +2 | 102 | 24.10.2322:26 | 뿌엥 |
Hot OCLP로 지원되지 않는 기기/dGPU를 사용하는 해킨토시의 사이드카 품질 문제 해결방법 +1 | 119 | 24.10.2321:29 | 해킨도전자 |
102 | 24.10.2322:26 | 뿌엥 | |
119 | 24.10.2321:29 | 해킨도전자 | |
106 | 24.10.2319:04 | 사노라맨 | |
784 | 24.10.1412:27 | shl628 | |
664 | 24.10.1316:00 | 수박 | |
344 | 24.10.1222:56 | Stultus | |
937 | 24.10.1121:10 | 좌절금지 | |
732 | 24.10.1115:53 | 수박 | |
575 | 24.10.0900:22 | 줌바이퍼 | |
1402 | 24.07.1219:19 | Stultus | |
1210 | 24.10.0500:31 | 줌바이퍼 | |
569 | 24.10.0410:49 | Tamy | |
749 | 24.09.2923:48 | 머트 | |
628 | 24.09.2822:28 | 머트 | |
463 | 24.09.2808:22 | Tamy | |
894 | 24.09.2321:32 | Stultus | |
994 | 24.09.2210:59 | 좌절금지 | |
644 | 24.09.2203:23 | 누림어멈 | |
1190 | 24.09.1919:17 | 좌절금지 | |
575 | 24.09.1917:09 | 좌절금지 | |
498 | 24.09.1813:37 | Stultus | |
909 | 24.09.1723:58 | 좌절금지 | |
601 | 24.09.1722:40 | 좌절금지 | |
453 | 24.09.1717:13 | 맥가즈아 | |
562 | 24.09.1708:13 | 김경석 | |
234 | 24.09.1617:47 | Panictosh | |
768 | 24.09.1504:35 | Tamy | |
584 | 24.09.1319:18 | Stultus | |
706 | 24.09.1019:44 | 치토 | |
484 | 24.09.0118:13 | 머핀X | |
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 | 화정큐삼 | |
201 | 24.08.1710:14 | jbhlyk | |
312 | 24.08.1622:06 | Stultus | |
218 | 24.08.1511:16 | hackillious | |
169 | 24.08.1421:30 | 세유니 | |
419 | 24.08.1419:58 | Stultus | |
377 | 24.08.1311:26 | 오디세이 | |
270 | 24.08.1115:46 | 좌절금지 | |
186 | 24.08.1111:21 | 티타보르 | |
233 | 24.08.1022:46 | Stultus | |
538 | 24.08.1022:10 | 오디세이 | |
168 | 24.08.1019:05 | jbhlyk | |
200 | 24.08.0923:20 | RogerT |
정성것 작성해주신글 잘 봤습니다.
고수의 향기가 폴폴 납니다. ㅎ
아주 유용한 글 감사합니다.