天天看點

Tegra3 vSMP架構Android運作時CPU熱插拔及高低功耗CPU切換

Tegra3采用vSMP(VariableSymmetric Multiprocessing)架構,共5個cortex-a9處理器,其中4個為高性能設計,1個為低功耗設計:

Tegra3 vSMP架構Android運作時CPU熱插拔及高低功耗CPU切換

在系統運作過程中,會根據CPU負載切換低功耗處理器和高功耗處理器:

Tegra3 vSMP架構Android運作時CPU熱插拔及高低功耗CPU切換

除此之外,4個高性能ARM核心也會根據運作情況,動态借用Linux kernel支援的CPU hotplug進行CPU的UP/DOWN操作。

動态切換主處理器和Companion 處理器借用的是軟硬體配套的CPU Governor 和 CPU Management Logic。

我們用華碩EeePad運作高負載,低負載應用,通過dmesg檢視核心消息也确實驗證了多核的熱插拔以及主ARM和LP ARM之間的動态切換。

CPU hotplug記錄:

<4>[104626.426957] CPU1: Booted secondary processor

<7>[104627.427412] tegra CPU: force EDP limit 720000 kHz

<4>[104627.427670] CPU2: Booted secondary processor

<4>[104628.537005] stop_machine_cpu_stop cpu=0

<4>[104628.537017] stop_machine_cpu_stop cpu=2

<4>[104628.537059] stop_machine_cpu_stop cpu=1

<4>[104628.537702] __stop_cpus: wait_for_completion_timeout+

<4>[104628.537810] __stop_cpus: smp=0 done.executed=1 done.ret =0-

<5>[104628.537960] CPU1: clean shutdown

<4>[104630.537092] stop_machine_cpu_stop cpu=0

<4>[104630.537172] stop_machine_cpu_stop cpu=2

<4>[104630.537739] __stop_cpus: wait_for_completion_timeout+

<4>[104630.538060] __stop_cpus: smp=0 done.executed=1 done.ret =0-

<5>[104630.538203] CPU2: clean shutdown

<4>[104631.306984] tegra_watchdog_touch

高性能處理器和低功耗處理器切換:

<3>[104666.799152] LP=>G: prolog 22 us, switch 2129 us, epilog 24 us, total 2175 us

<3>[104667.807273] G=>LP: prolog 18 us, switch 157 us, epilog 25 us, total 200 us

<4>[104671.407008] tegra_watchdog_touch

<4>[104671.408816] nct1008_get_temp: ret temp=35C

<3>[104671.939060] LP=>G: prolog 17 us, switch 2127 us, epilog 22 us, total 2166 us

<3>[104672.938091] G=>LP: prolog 18 us, switch 156 us, epilog 24 us, total 198 us

 本文轉自 21cnbao 51CTO部落格,原文連結:http://blog.51cto.com/21cnbao/768381,如需轉載請自行聯系原作者

繼續閱讀