http://www.zhihu.com/question/20401636

很多读者对移动CPU的异步多核的概念不是很理解,它作为高通骁龙系列的一大特色,它和同步多核处理器之间又有什么区别?各有什么优势呢?异步多核处理器又是怎么达到节能目的?此外,像三星Exynos 5440这一类“大小核”的处理器又会有什么特点呢?本文都将为你一一解答。
异步多核
异步多核,或者叫aSMP(asynchronous SMP),是由高通提出的,并应用在自家的Snapdragon S3/S4处理器中。之前也有过不少争论,比如说异步多核核心之间不能通讯,称之为“胶水双核”;或者说异步多核同时只能有一个核心接受指令,效率很低。当然呢,这些实际上都是不对的。
什么是异步多核?其重点在于频率异步,可以将它称为异步频率架构(Asynchronous Clock Architecture)。在这样设计的多核处理器中,每个核心都可以工作在不同的电压和频率下。这样,可以将计算繁重的任务交给一个工作在高频的核心,而压力较小的任务则可以让一个工作在低频的,较慢的核心去负担。而在同步多核中,所有的核心都只能工作在相同的电压和频率下。

如下图所示,当有两个任务,一个计算负荷较重,而另一个计算负荷较轻时(图中紫色部分表示任务的计算负荷),异步多核可以让负荷较重的核心CPU0工作在较高的频率(图中蓝色部分代表频率),而负荷较轻的核心CPU1工作在较低的频率和电压下,由此来减小功耗。而同步多核的CPU1虽然负荷较轻,但由于架构限制,只能和CPU0保持同样的高频率和高电压,由此浪费了更多的能量。


而在高通实际的设计中,不仅多个核心可以工作在不同的电压和频率下,它们共享的L2缓存也可以根据实际的负荷,工作在一个单独的电压和频率下,从而最大限度的节能。

异步多核架构看上去确实很美好,但实际上并不是完美的。在一些情况下,异步频率架构会发生性能的损失。一种情况是,当一个CPU的L1缓存没有命中,需要去L2缓存取数据时,由于异步多核架构的各个核心和L2缓存工作在不同的频率下,需要更多的时间去完成数据的传输,如图中A的箭头所示。例如高通S4,其Krait CPU核心可以工作在最高1.5GHz下,而L2缓存的最高频率为1.3GHz,如果L2缓存处于频率更低的节能状态,此时核心就需要等待L2缓存完成传输。


另一种情况下会损失更多的性能。当其中一个核心,例如CPU0的L1缓存没有命中,需要的数据在CPU1的L1缓存时,则数据需要从CPU1的L1缓存传输到CPU0的L1缓存,如图中B箭头所示。如果此时恰好CPU1的负担比较轻,处在较低的工作频率下,则需要很长的时间才能完成数据传输,而工作在高频的CPU0则被浪费在了等待中。

在SiSoftware Sandra的多线程效率测试中也可以反映这一点,异步多核(图中紫色,Sony Xperia S,高通8660)相比同步多核Tegra2(图中绿色),核心之间通讯的延迟较高,带宽较低。当然,采用超线程技术的Intel Atom(图中蓝色),由于两个虚拟核心本身是一个物理核心,核心间通讯的延迟最低,带宽最高。

“大小核”
那么,如何才能做到既能根据计算任务的轻重,动态的调节核心的能力,最大限度的节能;又避免异步多核架构在一些情况下性能损失的问题呢?ARM提出了大小核(big.LITTLE)的架构。

在这样的一个架构中,包括了一个由“大核心”组成的集群,和“小核心”组成的集群。每个集群内部的多个核心,都是属于传统的同步频率架构,工作在相同的频率和电压下,因此不会出现异步多核损失性能的情况。“大核心”为高性能的核心,工作在较高的电压和频率下,消耗更多的能量,用于计算繁重的任务,典型的比如Cortex-A15。“小核心”性能虽然较低,但效率很高,典型的比如Cortex-A7,虽然其性能是A15的1/2,但耗电只有1/7,相比之下能效就是A15的3.5倍了。在一些计算压力不大的任务中,比如发个短信之类的,就不用劳驾性能强劲但又非常耗电的A15核心了,直接用性能足够,非常省电的A7核心就行。
大小核芯都采用相同的指令集,切换时以集群为单位。如上图,系统在任务较重时激活2个大核心,任务较轻时则激活2个小核心。它们之间通过特殊设计的总线相连,切换时总线自动将一个集群的状态传输给另一个集群,切换的时间非常快,小于20微秒。
实际上,在ARM提出大小核之前,nVIDIA的Tegra 3已经有这个意思了。Tegra 3包括四个高性能的A9核心(相当于大核心),和一个性能较低的,采用低功耗设计的A9伴核(小核)。当然那时候的设计还没有big.LITTLE完善,也没有特殊设计的缓存一致性互联,切换的时间也较长,达到了毫秒级别。

不出意外的话,三星Exynos 5440将会是第一个采用大小核设计的SoC。它将采用28nm HKMG工艺,集成4个Cortex-A15作为大核心,和4个Cortex-A7作为小核心,传言GPU也会回归到PowerVR,很有可能在Galaxy S4中使用。

知乎上看到的关于异步双核的解释相关推荐

  1. 珍爱生命,远离微软,一点感受源自知乎上的某人评论

    以下纯转载,不代表博主观点^_^,吃瓜请自重.. 珍爱生命,远离微软,一点感受源自知乎上的某人评论 http://blog.sina.com.cn/s/blog_8ba3f5130102vty7.ht ...

  2. 爬了下知乎上的高颜值小姐姐!美翻了!

         作者:shenzhongqiang   来源:Python与数据分析 国庆阅兵方阵中的军乐队小姐姐火了,看到朋友圈好多小伙伴说自己恋爱了.除了军乐队的小姐姐,知乎上也有很多漂亮小姐姐的照片. ...

  3. 知乎上8个100K+高赞回答(筛选自63万个回答)

    最近知乎首页上老是看到这个话题:<知乎上的高票答案就是好的吗?>,很好奇目前高赞回答都有哪些?各有多少赞同数?于是继续这些天爬知乎数据的节奏,以用户主页的回答为爬取入口(按赞同排序),其中 ...

  4. java 球面距离_[置顶] C语言实验题:已知地球上两点的经度和纬度求其球面距离...

    要求:地球的平均半径为6371千米,已知地球上两个城市A.B的经度和纬度,编程序求出这两个城市之间的地面距离. 首先,固定两点,a(x1,y1,z1),b(x2,y2,z2). 由空间解析几何及向量知 ...

  5. 利用python爬取_在知乎上利用Python爬取了三百万数据!服务器崩了!企业级大项目...

    请各位注意: 以下所有分析结果都基于我抓取到的这300万用户的个人信息,非权威分析,仅供参考. 数据抓取时间为2017年7月份,用户数据会随着时间推移而变化,所以该报告具有一定时效性. 知乎的用户个人 ...

  6. 知乎上砍手豪关于kaggle的观点(转载)

    知乎上的砍手豪的kaggle主页是: https://www.kaggle.com/h4211819/competitions 此人以数据挖掘为主,下面是他在知乎上写的我发现的比较有用的一些观点. 比 ...

  7. 知乎上这个程序员火了,竟是因为给老板修了一 次U盘

    全世界只有3.14 % 的人关注了 爆炸吧知识 相信很多小伙伴曾经遇到这样的问题 软件工程▼ 知识君陷入沉思 都说知乎出人才,于是知识君飞赴知乎希望能得到广大网友的点拨! 知乎上有位朋友就分享了他的经 ...

  8. 在知乎上泡了这么久,工作、工资、生活还是没有起色是什么原因?

    陆游同学在八百多年前就回答了这个问题:纸上觉来终觉浅,绝知此事要躬行. 重新解读一遍题主的问题,题主其实想表达的是:泡知乎这么久了生活都没有起色,我TM这么辛苦虔诚地天天泡知乎有毛用? 而我们都知道人 ...

  9. ARCGIS知乎上的好文章

    http://zhihu.esrichina.com.cn/?/feature/ArcGISAndroidDevNote ArcGIS知乎上有哪些干货可以推荐? http://zhihu.esrich ...

  10. Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中

    Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中 1.需要的Python模块 主要是requests模块,用于得到的网页的数据 安装命令为:pip install requests 2 ...

最新文章

  1. lzg_ad:使用Virtual PC 部署和测试XP Embedded 发布镜像
  2. FD.io/VPP — DNS Plugin
  3. linux shell head tail 用法简介
  4. JAVA 1.2(原生数据类型 Primitive Data Type)
  5. matlab 连通分支,(完整版)图的连通性判断matlab实验报告
  6. HTML5和CSS3:游戏的变革Flexbox
  7. python kafka
  8. Jupyter Lab——如何在 Jupyter Lab调用相对路径的文件夹中的类
  9. NeatUpload的安装使用,可传大文件,显示进度条
  10. 电子书籍下载第一强贴
  11. 计算机概论读后感,电子商务概论读后感.doc
  12. 关键词文章生成器-智能关键词文章生成器
  13. increment java_Java LongAdder increment()用法及代码示例
  14. 7-2 排座位 (25 分)
  15. win python 判断 所有 子进程 结束_python 多进程如何终止或重启子进程?
  16. 从DataSet 导出到Excel(是DataSet中的每个DataTable对应每个Sheet)
  17. 0基础学图论!——图论精讲/详细/新手理解概念必看!
  18. vim编辑器显示与取消行号
  19. RabbitMq启用插件管理
  20. sEMG项目总结(3)STM32采集肌电信号

热门文章

  1. 开源电子书项目FBReader初探(五)
  2. python期货程序化交易高手_Python版商品期货跨期对冲策略 (教学)
  3. 网银支付接口编程资料汇总
  4. 高考录取查询显示内部服务器错误,为什么江苏成人高考成绩查询网页一直打不开...
  5. java根据ip地址获取详细地域信息
  6. Selenium控制已打开的chrome、IE浏览器
  7. Java每日一题——>739. 每日温度(蛮力法,栈方法)
  8. 洛谷 P3403 跳楼机
  9. geany中正确运行python方法
  10. 25年前,开发者如何将游戏塞进内存?