能感知功耗的Linux调度器(EAS)

2014年Linux内核峰会(Linux Kernel Summit 2014)上举办了为期一天的EAS主题研讨会。来自Arm的Morten Rasmussen做会议主持,来自Linaro的Daniel Lezcano和Mike Turquette介绍了最近发布的EAS相关工具,从此EAS开始快速发展并被人所知,智能设备的厂商们争先恐后地学着应用此技术。

节约能源的观念我们并不陌生,可是让内核学会自己节约能源却是一件新鲜的事情,谷歌在2017年发布的Google Pixel 2就具备这一技术。EAS不仅让Google Pixel 2功耗降低,还可以更快?快来看看这是怎么回事。

“core” 一词在CPU相关文章中经常翻译为“内核”,但是在本文中翻译为“核”,以区别软件的内核“kernel”。big.LITTLE是由ARM公司于2011年提出的基于异构计算的CPU架构。在这个架构中,分为相对较耗电但运算能力强的核所组成的大核“big”,和相对耗电低但运算能力弱的核组成的小核“LITTLE”,这些核共享存储器区段, 因此可以在大核和小核之间即时交换工作负载。采用big.LITTLE架构的CPU,可以同时拥有强大计算能力和节能的特点, 一般运用在移动设备上。OnePlus 3是一加手机第三代旗舰机,搭配高通骁龙820 处理器;2016.06.15 上市。OnePlus 3T搭配高通骁龙821处理器;OnePlus 6搭配高通骁龙845 处理器, 2018.05.18上市。本文发表于2018.6.30,主要对比分析了当时一加的最新产品OnePlus 6和Google最新产品Pixel 2 对EAS技术的应用情况。

原文链接

https://www.xda-developers.com/google-pixel-fastest-android-phone-eas/

这对您的下一款智能手机意味着什么

当Linux还只是Linus Torvalds头脑中的一个想法时,那个年代只有单核CPU,这些CPU的功耗很小。第一个商用处理器Intel 4004在单核上以740kHz的频率运行。那时还不需要使用负载调度器(load scheduler)。负载调度器的出现是为数十年之后出现的IBM Power 4等双核“庞然大物”准备的。它们运行在惊人的1.1GHz到1.9GHz之间,并且需要程序和系统的支持才能正确运行多核。我们如何让这些机器硬件(即多核CPU)使用多核的软件算法?您可能以前在我们的论坛上听说过功耗感知调度(EAS)。这是Google Pixel智能手机表现如此出色的部分原因。EAS到底是有什么了不起,以及我们如何应用它?在解释之前,我们需要讨论Linux调度器。

Linux调度器的演变轮转调度

轮转(round robin)是一个容易解释也容易理解的概念,而且也不难理解其缺点。轮转使用时间片为每个进程分配时间。假设我们的计算机上正在运行四个进程。

进程A进程B进程C进程D

现在,让我们描述轮转调度器的工作。在继续进行下一步之前,我们将为每个进程分配100毫秒(时间片)。这意味着进程A先执行100毫秒,然后轮到进程B执行,依此类推。如果应用程序的工作需要250毫秒才能完成,则仅需完成3次此过程即可完成工作!现在,将以上方法扩展到多核,以便将进程A和进程B分配给核1,将进程C和进程D分配给核2。这种方法被O(n)调度取代(O(n)调度类似于轮转调度,但是新增了 epoch ,并允许动态分配时间),然后产生了O(1)调度(O(1)调度让开销最小化,且支持无限制的进程),最后产生了完全公平调度器(CFS)。CFS于2007年10月合并到Linux内核版本2.6.23中。

完全公平调度器

完全公平调度器自诞生以来就用在Android中,并且在非big.LITTLE设备上使用。它使用一种智能算法来确定处理顺序,时间分配等。这是经过精心研究被称为“加权公平排队”调度算法的应用实例。CFS主要为机器上运行的系统进程和其他高优先级的进程提供优先权。如果要在big.LITTLE设备上运行,则所有核将被视为平等。这很不好,因为低功耗核可能被迫运行密集的应用程序,或者更糟的是发生相反的情况(译者注:即一段时间内高功耗核运行的应用程序非常少,对高功耗核是一种浪费)。例如,听音乐的解码过程也许会在大核上执行,这就造成了不必要的功耗增加。这就是我们需要为big.LITTLE设备使用新调度器的原因,新调度器才能够以节能方式识别和利用核差异。这就是异构多处理(HMP)的出现,它是大多数Android手机现在正在运行的标准调度器。

异构多处理

这是近年来发布的任何big.LITTLE设备(Google Pixel除外)的标准调度器。HMP利用big.LITTLE架构,将低优先级且不那么繁重的工作委派给消耗更少功率的小核。HMP是“安全的”,即不会犯错误的,它知道哪些任务应该去大核,哪些应该去小核。它确实可以工作,并且相比EAS在开发方面所需的精力更少。(EAS会在下文详细介绍。) HMP只是CFS的扩展,以使其具有功耗意识。

HMP不会猜测,即不会预测未来的进程。这没毛病但这就是为什么HMP设备不能像运行EAS的设备那么流畅的原因,也是为什么它会更耗电的原因。最后,HMP的不足使我们迎来了功耗感知调度(EAS),我坚信未来随着更多OEM的采用,EAS将应用于ROM和内核开发。

功耗感知调度

功耗感知调度(EAS)是我们论坛用户谈论的下一件大事。如果您正在使用OnePlus 3(或Google Pixel),您肯定在论坛上听说过OnePlus。最新的OnePlus 6搭配高通骁龙 845进入主流发布,因此,如果您拥有这些设备之一,那么您已经拥有支持EAS的智能手机。诸如RenderZenith之类的内核形式的EAS 和诸如VertexOS和PureFusion之类的ROM 席卷了OnePlus 3论坛。当然,Google Pixel也附带EAS。承诺延长电池寿命并提高性能,还有什么猫腻呢?

功耗感知调度并非如此简单,并不是CFS或HMP之类的每种设备都通用的。EAS要求我们基于功耗模型理解正在运行的处理器。这些功耗模型是由工程师团队不断测试并努力提供最佳性能而建立的。由于骁龙820和821基本相同,因此OnePlus 3上定制的内核使用Google Pixel功耗模型。配备骁龙845的设备可以使用EAS,因此OnePlus 6可以在某种程度上使用EAS 。虽然它不像Google Pixel设备在调整参数方面做的那么好,但它也完成了这项工作。这是一个示例,尽管OnePlus 6在EAS方面拥有更好的处理器,但Pixel 2 XL在平滑度上仍胜过OnePlus 6。这两个图像均来自我们OnePlus 6以速度为导向的测试。

如果您看不懂这张图片,可以试着看绿色指示线以下的图像。超过绿线的任何内容均表示丢帧,在最坏的情况下,会出现明显的卡顿。

EAS在OnePlus 6上的实现很有趣,因为OnePlus 6不像具有相同SoC的Google Pixel一样熟练的使用EAS。调度器参数调整地不太合理,因此这可能解释了为什么它的性能效率不如您预期的那样。它在功耗方面非常保守,系统会在大多数工作中优先考虑低功耗核。

可调参数只是传递给CPU governor的一组参数,这些参数会改变governor在频率方面对某些情况的反应。然后,调度器决定将任务分配在不同处理器上。OnePlus 6的可调参数能在低功耗核上设置任务的优先级,可是这并不起什么作用。而 Google Pixel 2具有巨大的输入提升能力,所有8个核始终保持在线状态。Google还使用了一个中断负载均衡,它有助于消除丢帧并提高性能。

那么EAS如何工作?为什么仅在特定条件下如此有效?

功耗感知调度(EAS)需要使用功耗模型,就像上面提到的,EAS需要大量测试工作才能使其完美。EAS试图统一内核的三个不同核心部分,它们各自独立发挥作用,而功耗模型则有助于统一它们。

Linux调度程序(CFS,如上所述)Linux cpuidleLinux cpufreq

将调度器下的三个部分统一并且一起计算可以降低功耗,因为一起计算可以使它们尽可能高效。CPUIdle尝试确定CPU何时应进入空闲模式,而CPUFreq尝试确定何时升高或降低CPU频率。这两个模块的主要目标都是节能。不仅如此,它还将进程分为四个cgroup,即top-app,system-background,foreground和background。将要处理的任务放入这些类别之一,然后为该类别分配CPU资源,并在不同的CPU核上委派工作。top-app要求最优先地被完成,其次是foreground,background,然后是system-background。从技术上讲,background与system-background具有相同的优先级,但是system-background通常也可以访问更多的小核。实际上,EAS正在将Linux内核的核心部分整合到一个进程中。

唤醒设备时,EAS将选择处于最浅的空闲状态的核,从而将唤醒设备所需的功耗降至最低。这有助于减少使用设备时所需的功率,因为如果不需要,它不会唤醒大簇(big cluster)【big cluster的概念见下图】。负载跟踪也是EAS极其重要的一部分,有两种选择。“每实体负载跟踪”(Per-Entity Load Tracking PELT)通常用于负载跟踪,然后该信息用于确定频率以及如何在CPU上委派任务。也可以使用“窗口辅助的负载跟踪”(Window-Assisted Load Tracking WALT),它是Google Pixel上使用的。我们论坛上的许多EAS ROM(例如VertexOS)都选择使用WALT。许多ROM会发行WALT和PELT两个版本的内核,因此由用户决定。WALT更具突发性,CPU频率峰值很高,而PELT试图让频率保持连贯性。负载跟踪器实际上并不影响CPU频率,它只是告诉系统CPU使用率是多少。较高的CPU使用率需要较高的频率,因此PELT的连贯性意味着它将缓慢地调高或调低CPU频率。PELT确实会趋向于更高的CPU负载报告,因此它可能会以更高的耗s电来提供更高的性能。但是,由于两种负载跟踪方法都在不断地修补和完善,因此目前尚无法真正说出哪种负载跟踪系统更好。

很明显,无论使用哪种负载跟踪方法,效率都会提高。使用跟踪方法不是仅仅在任何处理器上处理任务,而是可以分析任务并估算运行该任务所需的功耗。这种巧妙的任务分配方式意味着任务可以更加高效的完成,同时还可以使整个系统更快。EAS旨在以最小的功耗获得最流畅的UI。负载跟踪需要其他外部组件(例如schedtune)的参与。

Schedtune在每个cgroup中由两个可调参数定义,以确保对要完成的任务进行更好的控制。它不仅可以在多核CPU上分散任务,而且为了确保更快地完成时间敏感型任务,来决定是否增加感知的负载。这样,用户使用的前台应用程序和服务不会减慢速度,也不会引起不必要的性能问题。

虽然EAS是今后的一件大事,但也可以说它已经存了好一段儿时间。随着越来越多的设备采用EAS而进军主流市场,移动设备处理效率的新时代即将到来。

轮转,CFS,HMP和EAS的优缺点

虽然我的画图技术略差,但我努力拼凑了一张图片,其中应该总结出了每种调度器的优缺点。

我要特别感谢XDA公认的贡献者Mostafa Wael, 他对EAS各个方面的解释极大地帮助了本文的实现。我还要感谢XDA注册开发人员joshuous,XDA注册开发人员RenderBroken 和Mostafa Wael有关EAS的文章。那些对EAS相关内容感兴趣的人,Linaro有很多关于EAS的文档,您可以阅读。

能感知功耗的Linux调度器(EAS)

为什么高通和苹果A系芯片都是基于arm的芯片,性能差别却这么大?

严格地来说,高通骁龙和苹果A系列芯片采用的是ARM的架构/指令集层级授权,而并非简单地使用了ARM的IP核心。


这个级别的授权可以对ARM架构进行大幅度改造,甚至可以对ARM指令集进行扩展或缩减,苹果就是一个很好的例子,在使用ARMv7-A架构基础上,扩展出了自己的苹果swift架构。


那既然都是架构/指令集层级授权,为什么高通骁龙和苹果A系列芯片的性能差异那么大?


其实单纯从跑分的角度来看,骁龙的多核性能和A系列芯片不相上下。但苹果采用的了“少核心,多性能”的策略,不计成本地增大核心面积和效率,用来换取功耗和性能。


不仅如此,苹果设计的芯片在流水线效率、通道、带宽和L2/L3上从不吝啬,目的就是为了把单核的性能提高。



这样的设计对于日常应用和 游戏 来说很占优势,因为这些场景下CPU更多的是单核(或双核)工作。


另外一个让我们觉得A系列芯片性能更好的原因是iOS对于苹果芯片的优化,正是因为苹果不仅有自研芯片的能力,更是在操作系统上形成了闭环,使得iOS配 苹果芯片的体验要超过安卓 高通芯片。


从底层一点的技术上来看,由于安卓采用的Java虚拟机导致了安卓系统对资源的占用要比苹果iOS要多,一直以来就使得安卓手机在体验上没有苹果手机流畅。


不过这两年随着芯片性能和内存容量的不断提高,安卓手机的体验已经越来越接近苹果手机。而骁龙的GPU性能要比A系列芯片更胜一筹,所以两者的差距事实上并没有想象中的那么巨大。


题主的问题实际上是一个伪问题。

单从处理器角度而言,高通的高端处理器(8XX系列)和苹果A系列处理器综合比较,性能差不多。

下面是我在网上找的骁龙835和A10的性能评测数据

在单核性能方面苹果占优 ,主要是因为苹果A10单核面积要比骁龙大,集成的晶体管数量占优。

苹果A10是四核心,骁龙是8核心(最新的苹果A11是六核心)。在多核性能对比中, 骁龙占优 。实际上,我们应用程序大部分场景下都是单核运行,所以苹果的A10在用户实际体验中还是占优的。

GPU部分骁龙占优。

综合比较而言,骁龙还稍稍有点优势。


但为什么,我们实际体验中,苹果手机比安卓手机要明显流畅呢?这其实和操作系统架构有很大关系。



谷歌的Android系统,是以linux为核心,在此基础上增加了Java虚拟机,所有的应用实际上是在这个虚拟机上运行的。这保证了应用程序的跨平台性。同时使用JAVA语言作为开发语言的程序员是全球数量最多的。谷歌也充分利用了这部分资源,使Android平台迅速聚集了最多开发者为其开发应用。

问题也就出在这个Java虚拟机,了解java虚拟机的朋友们都知道。虚拟机的好处是,程序员在开发程序的过程中,程序员不必关心内存资源回收的问题,虚拟机的内存回收机制会帮你处理这些问题,这样极大的减轻了程序员的开发负担。但缺点也同时存在,那就是虚拟机再运行过程中,占用系统资源很大。

这也就是为什么安卓旗舰手机内存比苹果手机内存大,但运行效果远不如苹果手机的主要原因。

苹果IOS系统是在其私有的UNIX基础上演变过来的,它不存在虚拟机机制,同时ios是一个闭源系统,苹果对其硬件和ios系统做了大量的优化和适配。保证了IOS应用高效的运行。而Android系统是一个开源系统,系统版本碎片化,导致硬件和软件都有很多兼容性问题,最终使得运行效率降低。

所以,典型的以三星为代表,就用堆硬件来解决android的运行效率问题。

长此以往,使人们认为,安卓手机性能不如苹果手机,进而认为高通不如苹果A处理器。


对了,多说一下,苹果IOS系统响应优先级中,屏幕响应为最高级别。这也是人们认为苹果运行快的一个原因。

题主说的没错,高通骁龙系列芯片和苹果A系列芯片都是用的ARM的指令集,但由于设计思路的不同,两者的CPU性能有着天壤之别。

我们知道,苹果是第一个用上64位处理器的手机厂商,为了发掘最强大的性能,苹果把自己的CPU做的非常强悍。于是,在当年令人无法想象的A7处理器就诞生了。

A7 Cyclone是一个很宽的架构,每个时钟周期最多可以同时解码、发射、执行、收回6个指令/微操作,作为比较,上一代的A6 Swift则最多不超过3个。另一方面,A7的重排序缓冲达到了惊人的192,是上代的四倍多,同时巧合的是正好与Intel Haswell架构一样。分支预测错误惩罚也增加了,但幅度不大,而且又正好与Intel Sandy Bridge及其后的架构在同样范围内。也就是说,A7的规模几乎已经能和桌面版的core处理器相比较了。

这种情况下,A7展现出了巨大的单核性能提升,高通方面直到骁龙652处理器发布才能够与之相比。

高通骁龙处理器一直以来都是魔改ARM公版架构,公版架构的规模相当小,同主频的时候公版架构性能只有苹果A系列的一半。因此高通处理器的单核性能相对较弱,但较小规模的架构可以堆更多的核心,因此,高通处理器的多核心性能还是不错的。我们能够看到,骁龙845的单核性能依然不如A9,但多核性能已经接近A11了。

说起来很讽刺,虽然高通扼着中国绝大多数手机厂商的命门,但是单从利润上来讲,高通却不及苹果...

其实 iPhone的利润高出我们的想象 。现在的苹果公司,是打算不卖芯片的,他们主要卖手机,要知道,IOS性能吊打安卓可是一个重要的卖点,在高利润的支持下,苹果有能力做 高性能高成本大芯片面积大核心芯片 ,并且还可以很快收回成本。


反观高通,核心技术和商品都是芯片,这种情况下芯片业务收益最大化才是关键。那么同样大的晶圆,怎么能实现做出更多的芯片和更少的废品率呢?那就只能 芯片面积尽量小,核心架构尽量接近公版。


当然另一层原因,就是高通现在也是吃“老本”, 没有,或者说不需要一个能与苹果比肩的CPU架构研发团队。


这是为什么呢?原因就是经过代代开发, ARM公版完善程度已经非常高了,在这种情况下,除非有相当高的实力,巨量的金钱,才可能砸出一个比公版更好的架构,既然高通已经做到了芯片老大地位,就没必要再砸大钱研究新架构。

反正对于高通来说,在安卓芯片领域,他的地位有目共睹,更何况他还有我们国内这个对他不离不弃的巨大市场做保障呢。


而苹果呢,自家有设计能力,也有从工厂到提供商、工程团队、消费者的完备体系,简单说就是任性,反正不管投入多少,都能收回来,那么,就放手干吧~

高通和苹果均使用ARM公司的ARM架构,为何性能差距这么大?

让我们一起来看看,为何苹果处理器要远远领先其他厂家呢。

设计能力

ARM公司已经将基础框架搭建完成,如何进一步设计则看各家公司的研发实力。

所有的一切,同苹果高额的利润模式同样密不可分。

大核设计

苹果处理器芯片面积较大,并且没有集成基带芯片,节省了一定空间。

系统原因

一个使用安卓系统,一个使用iOS系统。

还有那些情况,能够造成苹果处理器要远远优于高通?

文/小伊评 科技

关于SOC架构设计是一个非常深奥的学问,其中包括譬如总线带宽,缓存,晶体管数量,结构等等,这些东西很深奥,就算是我也只是略懂皮毛,所以本文我们不探讨这些深奥的东西,我们从其他几个方面来说明一下苹果A系列处理器为什么这么厉害,我直接来罗列几个因素,大家一看就知道苹果的A系列处理器为什么强悍了。

01 坚持自研架构

放眼目前的手机市场,能够有能力生产高端移动SOC的一共就只有五个,分别是苹果,高通,华为海思,联发科以及三星。

在这五家企业中,目前只有苹果的A 系列处理器在CPU方面还在坚持使用自家研发的微架构,而其他几家包括高通和三星在内目前基本上都已经放弃了自主研发架构转而采用ARM公版的Cortex架构,譬如骁龙865这一次就用上了CortexA77的核心。

另外笔者还要再说一句,其实在安卓阵营当中,除了三星的猫鼬架构算是名副其实的自研架构之外(表现很差劲,早早就被放弃了),高通的Kryo架构其实就是对Cortex魔改,至于华为和联发科则是一开始就是用的公版的Cortex微架构。

并且在架构执行效率方面,苹果的A系列处理器一直是公认强于ARM的公版架构的,ARM直到最新发布的A78/X1之后才在核心执行效率方面勉强追上了苹果的脚步。

可以这么说,强大的核心架构是保证苹果A系列处理器性能的基石。

02 强悍的人才储备

Jim Keller曾经任职过诸多顶级的半导体公司,譬如英特尔,AMD,苹果等等,他曾经带领团队设计出了大名鼎鼎的K7系列,把AMD从破产边缘拉回来,然后做了K8系列,在消费市场把英特尔打的抬不起头来。 而最近被很多PC发烧友津津乐道的AMD Ryzen系列的Zen架构其实也是出自Jim Keller之手 ,就是这样的灵魂级的人物被苹果挖过来设计了苹果的A4和A5处理器,为苹果A系列芯片夯实了基础。

而且苹果芯片的核心团队还远不止如此,包括著名计算机领域领军人物Yale Patt(计算机系统概论的作者),Tse-Yu Yeh等等,这些无一例外都是芯片设计领域的顶尖选手。

在拥有全世界顶级的人才支持的情况下,苹果A系列处理器拥有强悍的性能余额就不足为奇了。

03 无需内置基带

苹果A系列处理器之所以能够拥有远超其他SOC的强大性能,除了在技术层面有领先之外,还有一个非常重要的原因就是放弃了内置基带,历代的苹果A系列处理器都是采用了外挂基带的形式,既然不需要内置基带,那么在其他条件基本相近的前提下,苹果A系列处理器就可以把更多的资源留给CPU以及GPU,毕竟一款SOC性能的强弱和晶体管数量是成正比的。


苹果之所以无法内置基带,和他在通信领域经验缺失是有一定的关系的,毕竟通信领域的入门门槛是很高的,可不是砸钱就能短时间堆出来的。
而反观其他几家半导体设计企业,旗下的SOC全部都内置了基带芯片,华为甚至还是第一个将5G基带集成在SOC中的企业,这些企业无一例外都是在通信行业有一定沉淀的。

也就是说,苹果A系列处理器的集成度其实是不如高通,华为的,这可能是苹果A系列处理器在性能方面大放异彩的核心原因。

苹果A系列芯片性能强于高通芯片,一个很重要原因就是苹果A系列芯片没有集成基带,只由CPU和GPU两个部分组成,甚至连WiFi芯片也没有。因此在相同的体积和工艺制程下,苹果A系芯片CPU的面积更大,上面可以集成的晶体管数量也就越多。

而高通本来是通信行业的,和手机处理器比起来,基带芯片才是它最拿手的地方。所以高通芯片一个主要特色就是将基带芯片也集成到了处理器当中。这样做的好处是让基带芯片也和CPU、GPU一样使用最先进的工艺制程,从而减少功耗,降低发热量。但是手机芯片的体积那么小,高通处理器再继承了基带、WiFi等模块之后,留给CPU、GPU的空间就比较小了。因此同一时期的高通芯片在性能上是不如苹果A系芯片的。

但是手机不是 游戏 机,决定手机使用体验的除了性能之外还有很多方面,其中就包括基带的信号和功耗。高通拥有自己的基带技术,基带与处理器之间的兼容性更好,因此网络信号质量更佳,且功耗比较低,手机发热量小。更重要的是,由于集成了基带,其它手机厂商购买了高通处理器之后,就相当于得到了一套完整的移动平台解决方案,基带、WiFi、蓝牙之类的都包括进去了。

相对的,苹果A系处理器由于没有基带芯片,只能寻求第三方的外挂基带。而使用外挂基带就存在与处理器的兼容性问题,而且功耗比较高,手机发热量大。比如iPhone XS Max使用的英特尔基带就是基于14nm的,而同期高通芯片集成的基带只有7nm,两者的功耗就差了许多。更早的iPhone X由于CPU和基带的功耗都比较高,一玩 游戏 就发热卡顿。

比较下来,苹果A系处理器的性能好,但是信号质量稍弱一些。而通骁龙处理器的性能不如苹果,但信号质量更好。所以一般对手机性能要求比较高的用户会选择苹果手机,但如果对信号网络质量比较高的用户则会选择高通手机。

高通骁龙和苹果A系芯片性能差别大,原因主要是,苹果是购买ARM的指令集授权,自行开发微架构,高通骁龙是购买ARM的IP核授权(省了开发微架构),然后魔改一下(其实往往是增加或减少缓存,优化内存控制器等),性能会比公版内核强一些,也就是一些而已,比不上能独立开发微架构的。


打个简单的比方,同样是做麻辣小龙虾,苹果是自制调料、自购食材、自己烹制。

由于是自制调料,需要什么味道,自己配就是了;也因为是自购食材,想要哪儿的小龙虾,下单就是了。简单说,菜的味道可以自己做主,自由发挥空间最大。

高通是购买现成麻小调味包,小龙虾也由ARM提供,调料和食材没得选(只能接受ARM标准化产品),回家倒锅里一煮,想味道重一点,少加小龙虾,想味道淡一点,多加小龙虾,麻辣的味道,他是没法调制的,发挥的空间没有苹果那么大。

公版内核?相当于买现成全套已经煮熟的小龙虾,放锅里加热后食用,完全没有自由发挥空间。

所以,看一家芯片设计公司能力的大小,能否独立设计微架构是一个重要指标。 像桌面CPU领域,英特尔和AMD是能独立设计微架构的,所以桌面CPU领域成为两家的后花园。

但是,凡事有利必有弊,自己设计微架构,对团队的设计能力要求非常高,尤其团队带头人,往往能决定芯片的竞争力。


后来,吉姆又从AMD离开,进了马斯克的特斯拉,干了一阵(在一家公司呆的时间平均不超过3年),又去了英特尔,直到现在离职。


最后总结一下:优秀的设计师带来好的微架构,好的微架构带来性能超猛的芯片。芯片业的规则就是这么简单,而且直白。

如果从芯片的角度来说,高通和苹果的产品不完全基于ARM,不过,总体的印象来说,苹果的A系列芯片确实会好过高通。下边先列举几个整体性的原因,后边说一些关于CPU的内容。

1、时间差。

高通的旗舰芯片大多出现在年初,而苹果的产品是在秋天,两款芯片之间是有着半年多的时间差。比如高通骁龙845表现非常不错,结果到了秋天,苹果弄出来一个A12。第二年高通的855出来了,但是产品上市,铺货,七七八八的事情处理完成,855这样的芯片大范围输送到用户手里可能要到年中,然而苹果下一代又要快来了。

一般来说事情有个先后,而年份又是一个非常重要的整体概念和划分依据,即使两方的设计能力相当,并且都意图设计最好的芯片,但这种时间上的差就会造成晚出来的那个会有更好的表现,也更容易使用最新的一些技术。另外,苹果的运营效率不得不佩服,A系列芯片可以瞬间触及用户,技术的传到也会带来技术感知上的时间差。

2、产品挡位。

芯片的表现是一个综合的概念,也要通过产品来实现。由于苹果品牌和价格上的优势,产品属于高端的原因,苹果手机的整体定位倾向于市场上最好的那类,如果产品表现好,也会去部分带动芯片的表现。

其中一个比较重要的环节在价格,依托iPhone高端上比较大的销量,苹果可以在芯片上大量投入,可以把高性能的芯片更好的卖出去。这种更为良性的循环可以推动苹果设计出更好的芯片。安卓这边由于产品挡位铺的比较大,中低端的产品不再少数,其中一些芯片并没有使用那么先进的技术,而国内一些性价比的机型在突出性能的同时,在整体素质方面也会多少有些不足,这些在产品端的不足会对芯片的表现带来不利的影响,甚至可能不能发挥芯片性能的极致。当然,这里说的不光光是跑分,芯片是一个非常综合的东西。

3、不同的平台。

这个方面其实很好理解了,也就是经常提到的优化问题。

乔布斯提到一个类似这样的观点,好的软件公司都要有自己的硬件。软件是我们接触最直接的部分,系统相应, 游戏 表现等都是软件的图像带来的直接反馈。苹果的A系列芯片是为IOS专门定制,整体表现会占优势。反过来说,IOS就像是一个优化器,可以把A系列的性能更好的展现出来。

手机毕竟是多功能集成的产品,IOS的规则可以更好的实现资源调度。最常见的例子:安卓的后台问题直到现在还是会多多少少拖累整机的表现。

总体上来说,由于时间差,产品定位,不同平台的问题,苹果和高通的芯片在最终表现上确实会有差距。

不过从目前的表现来看,两者之间的差距其实并没那样巨大,一则是芯片技术的发展,另外一个原因在于手机这个品类的成熟。当中档产品已经可以满足大部分需求的时候,高端芯片差距的感知也会变少。

问题中提到了ARM,这里简要说几个关于CPU的部分,也应该是熟知的部分了。

1、指令集

提到ARM,最直接的关联是指令集。ARM定了很多规范,不过苹果和高通如何使用这些规范则是另外一回事儿。而规范的使用和规范的制定存在相互影响,很难说苹果的芯片就是完完全全的按照ARM的规范来,也有可能是苹果和高通在一些地方用的好进而影响规范的制定。总之,ARM作为芯片行业中重要的一员,但并不是说万物就基于ARM。另外,现在手机芯片集成的功能很多,ARM也并不能完全覆盖,比如常说的人工智能芯片,GPU,ISP,网络模块等。

2、架构

苹果和高通的芯片架构差别,比如A12,六核心,两个Vorex核心,四个tempest核心。

高通骁龙855,八核心,一个prime核心,三个performance核心,四个efficiency核心。两者在缓存,内存控制,调度极致方面肯定有很多不同。不过究竟哪个好还是会回到前边的内容,最终的产品和平台如何使用。另外,在宣传策略上也会有差异,苹果经常是丢出一句,非常强,参考对象变成了英特尔。而高通这边,除了和苹果芯片竞争,还要面对华为,三星等芯片的竞争,总体思路上也会有一些变化。

以上还只是CPU这一个部分,整个芯片的架构和最终表现的差异最终会更大。总体来说,把苹果和高通的芯片直接对比很难说的清楚。

能感知功耗的Linux调度器(EAS)

云计算,大数据和人工智能三者之间的关系

云计算、大数据、人工智能这三者的发展不能分开来讲,三者是有着紧密联系的,互相联系,互相依托的,脱离了谁都不能更好的发展,让我们具体来看一下!
一、大数据
大数据指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。
数据每天都在产生,各行各业都有,数据量也是相当之大,但如何整合数据,清洗数据,然后实现数据价值,这才是当今大数据行业的研究重点。大数据最后要实现的是数据超融合,应用到应用场景,大数据的价值才会体现出来。
人工智能就是大数据应用的体现。
二、云计算
云计算(cloud computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。
对云计算的定义有多种说法。对于到底什么是云计算,至少可以找到100种解释。现阶段广为接受的是美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
说白了,云计算计算的是什么?云存储存储的是什么?还是大数据!所以离开大数据谈云计算,离开云计算谈大数据,这都是不科学的。
三、人工智能
人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。
人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种复杂工作的理解是不同的。
人工智能其实就是大数据、云计算的应用场景。
现在已经比较火热的VR,沉浸式体验,就是依赖与大数据与云计算,让用户能够由更加真切的体验,并且VR技术是可以使用到各行各业的。
人工智能不同于传统的机器人,传统机器人只是代替人类做一些已经输入好的指令工作,而人工智能则包含了机器学习,从被动到主动,从模式化实行指令,到自主判断根据情况实行不同的指令,这就是区别。
大数据的概念在前几年已经炒得火热,但是也就是近两年才开始慢慢落地,依赖于云计算的发展,以及人们对人工智能的预期。

上一篇: 女销售原来靠这样卖房(楼盘置业顾问提成大概多少)
下一篇: 职场Tips美图秀秀怎样去水印