미니 인텔 스레드 디텍터의 작동방식
- 경전철(이엿던것)
- 조회 수 629
- 2022.10.12. 12:27
인텔에서 12세대 앨더레이크, 11세대 레이크필드부터 P-Core, E-Core이라는 두 종류의 코어를 CPU에 탑재함에 따라, 두 코어를 구분해 작업을 할당해줄 필요성이 커졌습니다.
각 코어의 SPEC 벤치 기준의 성능이 다르고, 지원하는 명령어도 다르기 때문입니다. 이런 코어들에 워크로드가 어떻게 분배되는지 인텔에서 소개한 스레드 분배 예제를 몇 개 살펴보겠습니다.
첫 번째로 싱글스레드 상황입니다. 뒤에 나오는 예외 상황이 아닐 때는 높은 싱글스레드 성능을 위해 P-Core에 할당합니다.
스레드의 수가 (P코어 x1 + E코어 x1)을 안 넘을 때의 상황입니다. 부하가 큰 순으로 P코어에 최대한 할당한 다음 나머지는 E코어에 할당합니다. (P코어에 HT를 써서 스레드 2개를 돌리는 거보다 그냥 E코어에 하나 주는 게 낫습니다)
만약 스레드의 수가 줄어든다면, E코어에서 먼저 제거하고 P코어에 최대한 분배해줍니다.
만약 스레드의 수가 E코어가 감당할 수 없을 만큼 많다면, P코어의 HT를 사용하게 됩니다.
기본적으로 이런 방식인데, 예외인 스레드들이 존재합니다.
백그라운드 스레드는 P코어에 할당되지 않고 E코어에 먼저 할당됩니다. (E코어에 자리가 없다면 P코어에 할당됩니다)
멀티미디어 스레드도 백그라운드 스레드와 같은 방식을 사용합니다.
EcoQoS 스레드도 백그라운드 스레드와 같은 방식을 사용합니다.
저부하 스레드도 E코어에 우선적으로 할당됩니다. 저부하 스레드의 기준은, P코어에서 돌리는 것보다 E코어에서 돌리는 것이 유리한 스레드라는 것 같습니다.
대충 이런 방식으로 작동해서 더 높은 효율을 가지며, 11세대 레이크필드도 비슷한 방식으로 돌아간다는 듯 합니다.
https://meeco.kr/mini/34480321
전에 올렸던글인데 그레이스 몬트는 3GHz 이하에서 매우 효율적인데
기본적으로 다 3GHz 이상으로 설정해뒀으니
지금은 전력부분에서 효율적이진 못합니다
아톰라인 아키텍처 IPC를 스카이레이크 급으로 올리느라 부족한 부분이 있긴합니다
앞으로 더욱 효율적인 아키텍처를 만들어야 할 것이고
또 공정빨이 워낙 크기 때문에 인텔4 부터 크게 기대됩니다
인텔이 메테오레이크에서 저전력 루나레이크에서 초저전력이 크게 향상된다고 해서 기대중입니다
보통 개발에서도 쓰레드 배분은 몇가지 정책이 있죠. 인텔은 좀 더 로우레벨에서 저걸 컨트롤 해야하니 하드웨어 레벨에서 이제 구현을 한거고요. 예시를 들어보면
- I/O 작업은 아무리 NVME SSD가 와봐야 당연히 천상계인 CPU 속도의 발톱 때만큼도 따라갈 수 없습니다. 이건 E코어로 해도 남아도는 작업이고요.
- 멀티미디어도 평균적으론 CPU 사용량이 높지 않습니다. 음악은 말할것도 없고, 비디오도 순수 소프트로 돌리지 않는 이상은 E코어가 충분히 해낼 수 있습니다.
- 반면에 연산이 매우 중요하다면 P코어 우선으로 올려야겠죠.
- 비둘기집 원리를 생각해보면 P코어가 당장 가용할 자리가 없다면 E에 배치하는게 더 나을것이고
- 오래전 윈도우 7부터 개선된거지만, HT를 쓰면 실행유닛은 하나지만 CPU의 context가 2개가 됩니다. 당연히 같은 물리코어의 한쪽 context가 바쁘다면 다른 물리코어로 배분하는게 맞죠.
대략 알고리즘은 이러할지언대, 점점 발전할 것이라 생각합니다. 첫술에 배부를순 없는 법이지요.
백그라운드 앱 E코어 할당에 대해 논한이 많은데 여전히 의문인 점이 있습니다.
1. 무거운작업(인코딩)을 돌리다가 창을 최소화 시킨 후 가볍게 인터넷을 한다면 무거운 작업은 백그라운드에서 작동하게 되므로 E코어에 할당되는건지?
2. 무거운 작업과 더 무거운 작업을 동시에 돌릴때 더 무거운 작업 창을 최소화 하면 더 무거운 작업은 E코어 할당, 무거운 작업은 P코어에 할당되는지?
부하의 강도와 상관없이 창을 최소화 하면 무조건 E코어에 할당하는건지 알 수 없네요. 이부분에 대해 누군가 명쾌하게 확인해주셨으면 좋겠네요
하이브리드 아키텍처 매우 만족합니다