Tegra3采用vSMP(VariableSymmetric Multiprocessing)架构,共5个cortex-a9处理器,其中4个为高性能设计,1个为低功耗设计:

在系统运行过程中,会根据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

Tegra3 vSMP架构Android运行时CPU热插拔及高低功耗CPU切换相关推荐

  1. android运行时ART加载OAT文件解析

    在前面一文中,我们介绍了Android运行时ART,它的核心是OAT文件.OAT文件是一种Android私有ELF文件格式,它不仅包含有从DEX文件翻译而来的本地机器指令,还包含有原来的DEX文件内容 ...

  2. Android运行时Crash自动恢复框架-Recovery

    转自:http://zhengxiaoyong.me/2016/09/05/Android%E8%BF%90%E8%A1%8C%E6%97%B6Crash%E8%87%AA%E5%8A%A8%E6%8 ...

  3. 好牛逼的技术——Android运行时Crash自动恢复框架:Recovery

    简介 App Crash的恢复,这个想法很早之前就有,目前有些时间就实现了一把,主要是对App运行时发生Crash后,对Activity的堆栈和数据进行恢复,或者重启应用,或者重启并清空缓存,避免因本 ...

  4. Android运行时Crash自动恢复框架:Recovery

    App Crash的恢复,这个想法很早之前就有,目前有些时间就实现了一把,主要是对App运行时发生Crash后,对Activity的堆栈和数据进行恢复,或者重启应用,或者重启并清空缓存,避免因本地的数 ...

  5. C++ Builder运行时在FireMonkey里使用TLang动态切换界面语言

    C++ Builder的FireMonkey框架支持在运行时使用TLang动态切换界面的语言 // 以下Text将动态切换语言 Button1->Text = "Button" ...

  6. android五层系统架构,Android系统的五层架构、Dalvik与ART、最后有个奇怪的问题请教orz...

    Android系统的五层架构 最开始的Android系统框架分为5层(内核层.硬件抽象层.系统运行库层.应用程序框架层.应用程序层) 后来维基百科上搜索到的Android系统框架图为上图,少了一个硬件 ...

  7. android五层系统架构,Android 系统架构

    Android 系统架构分为五层,从上到下依次是:应用层.应用框架层.系统运行库层.硬件抽象层.Linux内核层 1. 应用层(SystemApps) 这层主要是JAVA开发的,负责与用户交互 2.应 ...

  8. ART运行时Foreground GC和Background GC切换过程分析

    通过前面一系列文章的学习,我们知道了ART运行时既支持Mark-Sweep GC,又支持Compacting GC.其中,Mark-Sweep GC执行效率更高,但是存在内存碎片问题:而Compact ...

  9. android cpu hotplug,[MTK] [CPU DVFS/Hotplug]运行时,把CPU固定在特定频率/特定核数的办法...

    [MTK] [CPU DVFS/Hotplug]运行时,把CPU固定在特定频率/特定核数的办法 2020-06-19 阅读:2580 [通过以下sysfs操作就可以把CPU固定在特定的频率上] ech ...

最新文章

  1. strcpy函数的使用
  2. 通用四级联动下拉列表
  3. 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”...
  4. (五)LESS 规范
  5. 调用支付jsapi缺少参数package_iOS微信支付(Swift)
  6. 买电脑主要看什么配置_买笔记本电脑主要看什么? 配置要什么样的才算好?...
  7. 创建django项目,8月版本
  8. ant design table column 设置width不生效解决方案
  9. oracle数据库生成流水号,oracle 中生成流水号 步骤
  10. 去除win10桌面图标快捷方式小箭头
  11. Layui form 表单验证lay-verify
  12. 《指数基金定投指南》读书笔记
  13. 通过Adb无需ROOT卸载手机内置APP
  14. 项目经理成功的五个关键因素
  15. 检查图片是否空白图片
  16. 云原生(三十三) | Kubernetes篇之平台存储系统部署
  17. python中init和属性_python类的属性不在\uyu init中__
  18. Python中print(__doc__)作用的教程
  19. PC站跳转M站的方法
  20. 计算机无法选择管理,此电脑右键“管理”无法打开怎么办?

热门文章

  1. linux screen 配置(下标高亮)
  2. 測试人员的核心能力与素养
  3. emmc boot1 boot2 partition
  4. Web性能优化系列(1):Web性能优化分析
  5. Subversion客户端认证凭证缓存总结
  6. HDOJ 1018(阶乘位数)
  7. MongoDB常用的操作命令(转)
  8. 计院生活--第二章 深入虎穴(下)
  9. Java 查找指定类型的数组元素
  10. mitmdump 脚本使用python第三方包方法(报错:in script xxx.py: No module named ‘xxx‘)