勇敢面对Android开发人员,新的Android编译器即将发布

本文概述

多年来, 碎片化一直使Android开发人员和消费者感到沮丧。现在看来情况会变得更糟, 然后才变得更好。再次有新的Android编译器出现, 并且硬件方面有一些值得注意的发展, 这可能会影响开发人员。

随着Dalvik的出现, 许多人期望Google的新的具有64位功能的ART运行时能够持续数年, 这可能会持续数年, 但是在不久的将来它将得到重大的改革。除了提供对64位硬件的支持之外, ART还引入了提前(AOT)编译, 而Dalvik是即时(JIT)编译器。新的优化编译器将释放更多可能性。

Android编译器图

至于硬件的发展, 智能手机片上系统行业有一些新趋势和一些新老参与者, 但我将在稍后进行介绍。

首先, 让我们看一下Google的运行时计划。

Dalvik, ART, 带有新Android编译器的ART

去年, ART在Nexus 9和Nexus 6上随Android 5.0一起推出, 尽管后者使用的是32位ARMv7-A CPU。但是, ART并不是从头开始设计的, 它实际上是Dalvik的发展, 它脱离了JIT。

Dalvik可以根据需要即时编译应用程序。显然, 这增加了CPU负载, 增加了启动应用程序所需的时间, 并给电池寿命带来了损失。由于ART会提前编译所有内容, 因此在安装时不必每次设备启动应用程序时都浪费时钟周期进行编译。它可带来更流畅的用户体验, 同时减少功耗并延长电池寿命。

那么, 谷歌下一步将做什么?

由于ART是为利用新的64位ARMv8 CPU内核而开发的, 该内核已于去年年底开始上线, 因此原始编译器似乎是权宜之计。这意味着上市时间是重中之重, 而不是效率和优化。这并不意味着ART只是匆忙的急事, 因为它不是。运行时运行良好, 并受到开发人员和用户的好评。

但是, 还有改进的空间, 现在, 看来Google一直在开发经过大幅改进的编译器已有一段时间了, 而这项工作可能早于ART的正式发布。英国芯片设计师ARM最近透露了有关Google运行时计划的一些有趣的事实, 指出了一种用于ART的新型”优化”编译器。新的编译器提供了中间表示(IR), 允许在代码生成之前对程序结构进行操作。它使用单一级别的中间表示形式, 构造为一个信息丰富的图, 可以为编译器的体系结构感知部分提供更好的信息。

适用于android开发人员的新android编译器

“快速”编译器使用两个级别的中间表示形式, 具有简单的指令和变量链接列表, 但是在IR创建过程中会丢失重要信息。

ARM声称, 新的”优化”编译器将带来许多显着的好处, 在编译器技术方面将其描述为”巨大的飞跃”。编译器将为将来的优化提供更好的基础结构, 并有助于提高代码质量。

优化和快速编译器的主要功能

ARM在一张幻灯片中概述了两个编译器之间的区别, 声称”优化”编译器可以更有效地使用寄存器, 减少溢出到堆栈的数量, 并需要更少的代码来执行。

这是ARM所说的:

Quick具有非常简单的寄存器分配算法。

  • 投资者关系中缺乏信息
  • 编译速度胜于复杂性–起源于JIT
  • 性能低下–许多寄存器溢出堆栈

优化使用线性扫描寄存器分配。

  • 性能与时间之间的完美折衷
  • 使用活度分析
  • 减少寄存器溢出到堆栈的数量”

尽管新的编译器仍在开发中, 但ARM共享了一些性能指标。在合成CPU测试中, 编译器的性能提高了15%到40%。编译速度提高了大约8%。但是, 该公司警告说, 随着新编译器的成熟, 数字”每天都会变化”。

重点是与”快速”编译器实现几乎同等的功能, 该编译器目前在编译速度和文件大小方面具有明显的优势。

目前看来, 这是一个权衡。新的” Optimized”编译器在受CPU限制的应用程序和综合基准测试中提供了令人印象深刻的性能改进, 但文件大小增加了10%, 而编译速度却慢了8%。尽管最后两个数字似乎无法与CPU性能的提高相提并论, 但请记住, 无论CPU负载如何, 它们都将适用于每个应用程序, 并且会占用更多有限的资源(例如RAM和存储)。请记住, 与32位编译相比, 以64位编译已经占用了更多的RAM。

编译速度和启动时间的任何降低也是一个令人担忧的问题, 因为它会影响设备的响应速度和用户体验。

多核ARM竞赛

无论运行时和编译器如何, 另一个令人关注的问题是基于ARMv7-A和ARMv8架构的多核处理器的普及。八核心的热潮始于2013年, 但很快就被廉价的营销特技驳回了。高通公司的一位高管甚至称八核处理器为”愚蠢”和”愚蠢”, 称该公司不会做任何事情, 因为其工程师”没有愚蠢”。这位高管还将Apple A7的64位支持描述为””头”。

快进两年了, 我的办公桌上有一部64位的Qualcomm八核Cortex-A53智能手机, 而这位高管在他的名字牌上有不同的职务。

多核手臂

明年8核芯片似乎还不够用, 我们将看到首批基于10核应用处理器的设备。首款10核智能手机芯片是从联发科以Helio X20的形式提供的, 它将具有三个CPU内核集群, 被称为great.Medium.TINY。听起来很有趣, 而且变得更好;我们很快就会开始看到第一批基于新一代英特尔处理器的价格可承受的Android设备。

让我们看一下ARM核心战争及其对开发人员和消费者的意义。有两种不同版本的ARM SoC八核设计。高端解决方案倾向于使用ARM的big.LITTLE布局, 使用四个低功耗内核和四个大内核来实现高负载。将八个ARM CPU内核粘贴到一个芯片中的第二种方法是使用相同的内核, 或者在两个具有不同时钟速度的群集中使用相同的内核。

领先的移动芯片制造商倾向于在高端设备中同时使用big.LITTLE芯片和主流产品上的常规八核。两种方法各有利弊, 因此让我们仔细看看。

ARM big.LITTLE与常规八核

在big.LITTLE设计中, 使用两个不同CPU内核的群集可以实现良好的单线程性能和效率。权衡取舍的是, 单个Cortex-A57内核的大小大约是四个小型Cortex-A53内核的大小, 并且效率较低。

在时钟不同的两个集群中使用八个相同的内核或八个相同的内核具有成本效益和功率效率。但是, 单线程性能很低。

当前基于ARMv8内核的big.LITTLE设计无法使用最便宜的28nm制造节点。即使在20nm, 某些设计也表现出很多节流, 这限制了它们的持续性能。基于Cortex-A53 CPU内核的标准八核可以有效地在28nm上实现, 因此芯片制造商不必使用尖端的制造节点(例如20nm或16 / 14nm FinFET), 从而降低了成本。

ARM big.LITTLE与常规八核

我不想让你沉迷于芯片设计趋势, 但是对于2015年和2016年的移动处理器, 请牢记一些基本知识:

  • 大多数芯片将使用28nm制造节点和Cortex-A53内核, 从而限制了单线程性能。
  • 三星和高通公司的两种主要设计都采用了大型Cortex-A57内核, 但其他芯片制造商似乎正在跳过它并等待Cortex-A72内核。
  • 在接下来的18个月中, 多线程性能将变得越来越重要。
  • 在20nm和FinFET节点变得更加便宜之前(2016年及以后), 才能期望获得巨大的性能提升。
  • 10核设计也即将问世。

所有这些要点对Android开发人员都有一定的意义。只要大多数智能手机和平板电脑芯片的制造商都停留在28纳米制程上, 开发人员就必须尽最大努力挖掘多线程性能并关注效率。

ART和新的编译器在改善性能和效率方面应该走很长的路, 但它们将无法打破物理定律。旧的32位设计不会在以后的许多设备中使用, 甚至最便宜的设备也开始配备64位芯片和Android 5.0。

尽管Android 5.x的用户群仍然相对较小, 但由于采用64位芯片和Android 5.0的100至150美元的手机即将上市, 因此它正在迅速发展并会更快地增长。向64位Android的过渡进展顺利。

最大的问题是Dalvik何时获得新的Optimized编译器。它可能在今年下半年或明年在Android 6.0上启动;现在要确定还为时过早。

异构计算进入移动领域

还有另一件事要牢记;移动图形功能越来越强大, 尤其是在高端处理器上, 因此芯片制造商正在幕后做大量工作来挖掘它们, 以用于游戏和视频解码以外的用途。异构计算已经存在了数年, 使PC可以将高度并行化的任务卸载到GPU。

现在, 移动处理器采用了相同的技术, 可以有效地融合CPU和GPU内核。该方法将允许开发人员通过对GPU执行某些类型的程序(即OpenCL加载)来释放更多性能。开发人员将能够专注于吞吐量, 而处理器将自动处理CPU和GPU上的并行执行。

异构计算

当然, 这并不能在所有应用中都起作用, 并且可以在任何情况下降低负载, 但是在某些情况下, 它应该可以释放更多的性能并有助于降低功耗。取决于负载, SoC将自动决定如何处理代码, 将CPU用于某些任务, 而将其他任务卸载至GPU。

由于我们正在处理并行化的应用程序, 因此该方法有望在图像处理方面产生最大的改进。例如, 如果你需要使用超分辨率和重新采样图像, 则该过程可以在OpenCL中分为不同的阶段。如果进程涉及不同的阶段, 例如find_neighbor, col_upsample, row_upsample, sub和blur2, 则硬件将以最有效的方式在CPU和GPU内核之间分配负载, 具体取决于哪种内核将以最佳方式处理给定任务办法。这不仅将性能提高一个数量级, 而且还将有助于降低功耗。

英特尔从死里复活, 它对尸体的需求很好

英特尔错过了移动革命的机会, 实际上将市场割让给了ARM及其硬件合作伙伴。但是, 这家美国芯片制造商有足够的金钱和资源在板凳上度过几年并卷土重来。

去年, 英特尔为平板电脑的Atom处理器销售提供了补贴, 并在不到一年的时间内实现了四倍的出货量。现在, 它正将注意力转向使用新型SoFIA Atom x3处理器的智能手机领域。坦白说, 我并不完全确定这些芯片甚至应该被称为Intel处理器, 因为它们实际上并不是芯片巨头生产的。与中国芯片制造商合作, SoFIA处理器的预算很紧。它们是在28nm节点上制造的, 它们速度慢, 体积小且价格便宜。

Interl和Android

对于一些不经意的观察者来说, 这可能是一个惊喜, 但是英特尔并没有为高端移动解决方案而烦恼。低端的SoFIA零件将为价格在50至150美元之间的商品化Android手机提供动力。首批设计应于2015年第二季度末开始交付, 其中大多数将针对亚洲市场以及世界其他地区的新兴市场而设计。尽管我们可能会在北美和欧洲看到其中一些产品, 但英特尔的重点似乎集中在中国和印度。

英特尔正在利用Atom x5和x7处理器进行押注, 它们将使用全新的架构以及该公司最先进的14nm制造节点。但是, 这些产品至少在暂时用于平板电脑而非智能手机。

我没有一个答案, 最大的问题是, 英特尔可以赢得多少设计大奖。分析师对此问题存有分歧, 目前的出货量预测似乎是猜测。

去年, 英特尔证明, 它愿意承受亏损并燃烧数十亿美元, 以在平板电脑市场上站稳脚跟。现在说是否将与新的Atom芯片, 特别是智能手机SoFIA产品使用相同的方法还为时过早。

到目前为止, 我只看过一款基于Intel SoFIA处理器的实际产品-一款具有3G连接功能的中国平板电脑, 售价69美元。它实际上是一部超大型手机, 因此, 你可以想象, 入门级SoFIA手机的价格可能要低得多。对于白盒智能手机和平板电脑制造商来说, 这肯定是一个诱人的主张, 因为他们可以轻松设计背面带有” Intel Inside”标签的$ 50- $ 100设备, 从营销的角度来看, 这听起来不错。

不幸的是, 我们只能猜测明年左右会有多少部英特尔手机和平板电脑上市。显然, 我们正在处理数百万个单位, 数亿个单位, 但是问题是:几十个单位?大多数分析师认为, 英特尔今年将出货2000万至5, 000万个Atom x3处理器, 考虑到今年智能手机的总出货量预计将达到12亿台, 因此这简直是九牛一毛。但是, 英特尔无情, 有钱可以燃烧, 不必在任何这些芯片上获利。到2015年底, 它可以占领3%到4%的市场, 但在2016年及以后的市场份额应保持增长。

这对Android开发人员意味着什么?

由于某些兼容性问题, 英特尔在一些Android开发人员中享有不良声誉。几年前这是一个真正的问题, 因为硬件与大多数设备中使用的标准ARM内核有很大不同。

幸运的是, 该公司在过去两年中取得了很大进步;它提供广泛的培训计划, 全面的文档等。事实上, 快速浏览一下LinkedIn职位列表显示, 英特尔正在招聘数十名Android开发人员, 每个月都有一些新的职位空缺。

所以一切进展顺利, 对不对?这得看情况…

上周, 我有机会测试了基于Intel Atom Z3560的新Asus手机, 我必须说我对测试结果感到满意。这是一个很好的硬件平台, 能够在预算有限的设备上处理4GB的RAM。华硕认为它今年可以售出3000万部手机, 考虑到英特尔在智能手机市场上的份额, 这确实令人印象深刻。

唯一的问题是, 某些Android应用仍然在Intel硬件上行为不当。通常, 它没有什么太大的问题, 但是你确实会遇到一些奇怪的崩溃, 不切实际的基准测试分数和其他兼容性问题。坏消息是, 尽管获得一些基于Intel的设备进行测试将是一个好的开始, 但是开发人员无法做很多事情来解决与硬件相关的问题。好消息:英特尔正在尽其所能, 尽其所能地解决所有问题, 因此你不必这样做。

至于ARM硬件, 我们将在更多群集中看到更多CPU内核。在许多主流设备(即基于四核和八核Cortex-A53 SoC的廉价电话)上, 单线程性能仍将受到限制。现在说新的Google / ARM编译器是否能够提高此类设备的性能还为时过早。他们可能会, 但是要多少呢?异构计算是明年值得关注的另一趋势。

总结一下, 以下是Android开发人员在2015年末和2016年在软件和硬件方面的期望:

  • 入门级和主流市场领域中有更多的Intel x86处理器。
  • 英特尔的市场份额在2015年可忽略不计, 但在2016年及以后可能会增长。
  • 更多在线的ARMv8多核设计。
  • 新的”优化” ART编译器。
  • 异构计算即将到来, 但这需要一段时间。
  • 过渡到FinFET制造节点和Cortex-A72将释放更多的性能和功能。
微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?