인텔 CPU는 사용량에 따라 클럭 속도를 변경하지만 실행되는 클럭 속도는 어떻게 결정됩니까? 클럭 속도는 알고리즘을 사용하여 OS 소프트웨어에 의해 결정됩니까, 아니면 하드웨어 기반입니까? 인터럽트 수에 의존합니까? 캐시 회전율? CPU 자체가 자체 시계를 설정합니까? 아니면 별도의 컨트롤러가 설정합니까? 아니면 소프트웨어?
인텔 CPU는 사용량에 따라 클럭 속도를 변경하지만 실행되는 클럭 속도는 어떻게 결정됩니까? 클럭 속도는 알고리즘을 사용하여 OS 소프트웨어에 의해 결정됩니까, 아니면 하드웨어 기반입니까? 인터럽트 수에 의존합니까? 캐시 회전율? CPU 자체가 자체 시계를 설정합니까? 아니면 별도의 컨트롤러가 설정합니까? 아니면 소프트웨어?
답변:
CPU의 코어 클럭은 마더 보드에서 직접받지 않습니다. 이 클럭은 일반적으로 CPU의 내부 주파수보다 훨씬 느리다 (종종 10 배 이상). 대신, 마더 보드의 클럭 신호는 CPU 내부의 고주파 위상 고정 루프 제어 발진기의 기준 주파수로 사용됩니다. 생성 된 클럭은 여러 레퍼런스 클럭에서 실행되며 CPU에서 특정 레지스터를 설정하여 여러 클럭을 변경할 수 있습니다. 실제 클럭 생성은 하드웨어에서 수행됩니다.
또한 전력을 더욱 줄이기 위해 CPU는 코어 전압을 공급하는 전압 조정기에 신호를 보내 낮은 설정 점에서 작동합니다. 낮은 주파수에서 CPU는 오작동없이 더 낮은 전압에서 작동 할 수 있으며 전력 소비는 전압의 제곱에 비례하므로 전압을 조금만 줄이면 많은 양의 전력을 절약 할 수 있습니다.
전압 및 주파수 스케일링은 하드웨어에 의해 수행되지만 저전력 모드에서 실행하기로 결정한 것은 소프트웨어 (OS)입니다. 운영 체제가 최적의 모드를 실행하는 방법은 별도의 더 복잡하고 문제가되지만 시스템이 최근에 유휴 상태 인 시간이 몇 %가 될 수 있습니다. 대부분 유휴 상태이며 주파수를 낮 춥니 다. 대부분 바빠서 주파수를 높이십시오. OS가 실행 빈도를 결정하면 레지스터를 설정하기 만하면됩니다.
최신 운영 체제에는 "작업 스케줄러"라는 것이 있습니다. 정기적으로 (매우 빠름) 실행되고 다음 작업에서 실행할 목록을 선택합니다. 작업은 선택, 차단, 수면 등과 같은 여러 상태에있을 수 있습니다.
모든 작업이 선택 모드에 있고 (운영 체제에서 대기 중) 일부를 제공 할 수 없거나 일부는 잠자기 상태이므로 처리중인 프로세서를 많이 사용하지 않는 경우 작업 스케줄러는 "idle"이라는 특수 작업을 호출합니다. ".
CPU 드라이버가 작업 스케줄러 테이블을 확인하고 유휴 작업이 대부분의 CPU 시간을 실행 중인지 확인하면 CPU의 클럭 생성 PLL 회로에 명령을 보내 클럭을 줄입니다. 반대로 유휴 작업에서 CPU 시간이 점점 줄어들면 (CPU가 많이 사용됨을 의미) CPU 드라이버는 CPU 속도를 증가시킵니다.
그다지 어렵지는 않지만 모든 CPU가 완전히 정적이 아니기 때문에 CPU를 조절할 수없는 하한이 있습니다 (따라서 새로 고침주기가 필요함). 클록이 정지되면 손실 될 상태가 없으므로 완전 정적 CPU는 0 (제로) MHz까지 낮아질 수 있습니다.