CPU freq가 낮아지지는 않습니다.
ARMv7-A CPU의 경우 idle thread가 wfi 나 wfe 명령어를 수행하는 데 이게 low power state를 가능하게 합니다.
더 자세한건 linux/Documentation/cpuidle/*.txt 문서와 관련 코드 보세요.
대부분의 CPU가 wfi 수행시 frequency가 낮추는 것 보단 클록을 비활성시켜 저전력 상태를 만들 듯 합니다.
리눅스 커널에서도 '동적으로 CPU freq를 바꾸는 것'과 '다양한 idle 모드를 지원하는 것'을 두가지로 나누어 구현하고 있습니다. 전자가 cpu-freq, 후자가 cpuidle 입니다.
참고로 Cortex A9 MPcore Technical Reference Manual에 이렇게 적혀있네요.
WFI and WFE Standby modes disable most of the clocks of a processor, while keeping
its logic powered up. This reduces the power drawn to the static leakage current, leaving
a tiny clock power overhead requirement to enable the device to wake up.
Entry into WFI Standby mode is performed by executing the WFI instruction.
CPU freq가 낮아지지는 않습니다. ARMv7-A
CPU freq가 낮아지지는 않습니다.
ARMv7-A CPU의 경우 idle thread가 wfi 나 wfe 명령어를 수행하는 데 이게 low power state를 가능하게 합니다.
더 자세한건 linux/Documentation/cpuidle/*.txt 문서와 관련 코드 보세요.
답변 감사합니다.
답변 감사합니다.
커널의 idle thread도 실제로는 wfi 명령어를 사용하더라구요.
커널 idle thread가 동작할때 낮은 freq로 동작하던데
임의로 제가 커널 스레드를 생성하여 wfi 명령어를 사용해봣는데 freq가 낮아지지 않아서 질문드렸습니다.
그렇다면 ARMv7-A cpu의 low power state 라는게 cpu freq가 낮아지는게 아닌가요?
대부분의 CPU가 wfi 수행시 frequency가
대부분의 CPU가 wfi 수행시 frequency가 낮추는 것 보단 클록을 비활성시켜 저전력 상태를 만들 듯 합니다.
리눅스 커널에서도 '동적으로 CPU freq를 바꾸는 것'과 '다양한 idle 모드를 지원하는 것'을 두가지로 나누어 구현하고 있습니다. 전자가 cpu-freq, 후자가 cpuidle 입니다.
참고로 Cortex A9 MPcore Technical Reference Manual에 이렇게 적혀있네요.
WFI and WFE Standby modes disable most of the clocks of a processor, while keeping
its logic powered up. This reduces the power drawn to the static leakage current, leaving
a tiny clock power overhead requirement to enable the device to wake up.
Entry into WFI Standby mode is performed by executing the WFI instruction.
댓글 달기