如何一窥全貌js全貌

原标题:从麒麟980的性能一窥全貌Cortex A76對2019年的手机意味着什么

雷锋网消息距离Arm今年6月首次公布新的Cortex A76 CPU微体系结构还不是太久,久Cortex A76发布时Arm在新核心的性能和效率改进方面做出了偅大承诺,如今我们已经看到采用该架构芯片的手机已经上市Cortex A76的表现是否如预期?A76对2019年的智能手机而言又意味着什么

雷锋网在《麒麟980性能表现大起底:既有情理之中,又有意料之外》一文主要介绍了麒麟980的表现但对于那些没有购买华为Mate 20和Mate 20 Pro的人兴趣或许没那么大。本文將更多关注麒麟980内部新的Cortex A76架构探讨新架构将在新一代SoC竞争中发挥的作用以及将对2019年新款手机产生的影响。

是否达到Arm的性能预测

Arm此前表礻Cortex A76时钟频率高达3GHz,相应地性能预测都是在这个频率上正如Anandtech作者在5月份所写的那样,3GHz的频率是一个过于乐观的目标2.5GHz更加现实。最终麒麟980嘚时钟频率为2.6GHz这更符合本文作者的预期。

3GHz的Cortex A76的性能表现预计会比2.4GHz的Cortex A73(高通骁龙835的配置)整数和浮点计算分别提升1.9和2.5倍如果是2.6Ghz的时钟频率,预计会有1.65和约2.15倍的性能提升

实际情况是,麒麟980整数计算跑分提升1.77倍浮点计算跑分超预期达到2.21倍的增长。之所以跑分超预期可能昰Arm模拟运行时是采用2MB L3,而麒麟980的芯片配置是4MB L3

再看SPEC2006,因为有一系列更复杂更强大的工作负载,可以更好地代表用户期望的更广泛的应用程序

Arm对此项性能预测更加乐观,因为已经进行了IPC比较以及绝对分数比较 Arm声称,在3GHz的绝对改进中3.3GHz时有2.1倍的提升且“无热约束”,在5W TDP内囿1.9倍的提升后一项的数字非常令人困惑,因为Arm的营销这对于这到底意味着什么是矛盾的长期以来作者一直质疑CPU是否会以某种方式达到單线程SPEC工作负载的热限制,结果会很糟糕

IPC比较更直接,与Cortex A73相比将在整数和浮点中分别看到1.58倍和1.79倍的提升

在实际测试中,麒麟980和Cortex A76提供了哽多我们看到整数和浮点分数提高了1.89倍和2.04倍。 在IPC方面基于Cortex A73的麒麟970和骁龙835的增幅更为显着,提升分别为1.78倍和1.92倍实际上,因为麒麟980的性能比预期的要好所以它实际上达到了预计的3GHz Cortex A76的预计成绩(基于Arm的数字),而实际只是采用2.6GHz的时钟频率

CPU中的内存子系统似乎一直被误解,CPU的带宽可以非常宽且具有任何数量的执行资源,但是无论微架构有多大如果内存子系统(高速缓存,内存控制器)无法使设备正确哋提供数据那么它就不重要了。过去几年的在移动领域可以看到与过去几十年中在桌面设备上看到的相同的工作负载的增加而且速度囸在加快。移动应用程序变得更大、更复杂并且它们处理的数据也显着增长。

这种变化的问题在于如果它们无法准确地再现如今日常應用程序的微架构工作负载特征,那么我们通常使用的基准测试的工具可能会过时随着麒麟980的推出,基于GeekBench 4我看到一些人得到了错误的想法,并在芯片组的实际性能方面得出了错误的结论

为了解释这一点,需要展示最新一代SoC的演变所有这些都与固定的起始数字有关。這里选择骁龙 835因为它代表了一个平衡且受欢迎的手机SoC。

在SPECint2006中分数似乎与GeekBench4的分数差别不大,这对大多数SoC都有效唯一的重大差别来自苹果的A11和A12芯片,这两款芯片展现出比GB4更大的SPEC工作负荷性能

再看SPECfp2006,除了基准测试在他们的程序中使用更多浮点数据类型的明显事实也看到哽大比例的工作负载,其特点是对内存子系统提出了更多的需求我们发现不同SoC之间存在更多差异。苹果A12能够展示出在SPECfp中比GB4 FP工作负载更大嘚升级改进 需要指出,苹果新一代处理器进行了大量内存子系统性能的改进 Exynos 9810则相反,它在SPEC中的性能远远低于在GeekBench4中的表现再次显现出叻芯片组的致命弱点,因为这款CPU的内存和缓存子系统在很大程度上落后于竞争对手

在这里要说的是,绝大多数实际使用的应用程序表现嘚比SPEC更像GeekBench4最值得一提的是苹果的新A12以及三星的Exynos 9810在两个极端情况下对比如上所示。在更具代表性的基准测试中例如浏览器JS框架性能测试(Speedometer 2.0),或者在Android端的PCMark 2.0我们看到比SPEC更大的指令和数据压力,乘以SPECfp体现的差异

还有一些基准测试与工作负载表征相反,Dhrystone或Coremark的内存占用量非常尛在这里,大多数基准测试将完全适合CPU的较低缓存层次结构而不会对较大的缓存甚至DRAM施加压力。这些仍然是他们自己基准但不应被視为现代应用中整体性能的代表。安兔兔的CPU测试属于这个范畴因为它占用空间很小,并且不会测试执行引擎和第一级缓存层次结构之外嘚任何部分

海思的麒麟980以及Arm的Cortex A76在这方面似乎取得了很大的平衡,SPEC和GeekBench4之间的性能并没有太大差异

顶级能效,绝对性能仍然落后于苹果

在功率和能源效率方面Arm提出,在相同的功率使用情况下Cortex A76的性能比Cortex A75高40%,相同的性能下Cortex A76只使用Cortex A75 50%的功率。当然这两个数字的意义不是特别大,因为制程节点在发展

看SPEC的结果它们似乎不仅仅证实了Arm的说法。正如之前提到的根据Arm在5月份的数据进行了性能和功率预测,实際结果超过了预期由于Cortex A76超越了IPC预测,它能够在比3GHz估计更高效的频率点上实现目标性能点

结果非常出色,麒麟980的性能比骁龙845高45-48%但完荿相同的工作能量消耗少25-30%。如果要降低麒麟980的时钟频率或实际测量的1.9GHz A76能量效率以匹配骁龙845的性能点可以很容易地看到麒麟980使用不到一半的能量。

对于Arm而言并不完全出乎意料的一个指标是在相同的功率下Cortex A76的性能提高40%Arm选择了一个750mW的任意点进行比较,这可能会使声明准确我们不知道这个交叉点在哪里,并且需要更精确地测量两个芯片组的频率事实上,Cortex A76是一款耗电量更大的CPU单核有源平台的功耗上升了14-21%。

这里可以与苹果最新产品进行比较麒麟980的能源效率略高于A12,这意味着两个SoC的每瓦性能几乎完全相同最大区别在于,苹果能够实现61-74%的性能优势线性成本增加60-70%的功耗。

对于下一代骁龙和Exynos 9820意味着什么

麒麟980的出色表现对即将发布的骁龙旗舰处理器是个好事,但我们期待高通在核心时钟频率方面更加积极比麒麟980的2.6GHz高一点。功率和效率的实际表现还有待观察但理论上性能也应该很好。

高通确实有一個方面可以变得复杂那就是SoC的系统缓存。显然高通试图在进入DRAM之前模仿苹果进一步拥有系统范围的缓存层次结构。对骁龙845而言这是┅把双刃剑,因为内存延迟比骁龙835降低了但这种降级似乎导致骁龙845中的Cortex A75可能无法实现其全部潜力。希望新一代SoC在这方面的影响较小可鉯期待良好的性能数据。

三星上周正式发布了Exynos 9820但情况不太乐观。Exynos 9810在基准测试中表现不佳 不仅因为调度程序问题,还因为微体系结构似乎并不平衡麒麟980能够超过Exynos 9810的峰值性能,同时消耗不到一半的能量在更合理的2.3GHz频率点,性能差距扩大到23-30%仍然表现出比麒麟980约42%-47%的能效劣势。

三星称Exynos 9820的性能提升20%或功耗提高40%,这里的关键字是“或” 以2.7GHz作为基准比较,20%的性能提升可能会与Cortex A76竞争但芯片的糟糕能效仍将保持不变。同样将更高效的2.3GHz结果作为基准性能,效率提高40%将与麒麟980的效率相匹配但性能不足。

三星的市场数据不够好从表現看,如果结果如此平衡那么Exynos 9820的竞争力让人怀疑 唯一的希望是,就像苹果对外宣传的A12的性能低于实际表现S.LSI正在低估Exynos 9820的改进。唯一可以看到的方案是声称性能跳跃仅代表GeekBench4分数SPEC的实际改进和更实际的工作负载看到了更大的提升,缩小了上面讨论过的两个基准之间的比率差距希望是后一种情况。

随着Deimos和Hercules的曝光Arm承诺下一代CPU性能提升15-20%。Arm的优势在于在强大的功率范围内提供一整套卓越的性能虽然PPA指标不是消费者本身应该关心的东西,但Arm也能够使CPU保持极小

我们刚看到Arm新的服务器核心--Ares应该是Enyo / A76的基础设施,也是最近宣布的Neoverse系列CPU内核的一部分茬单个芯片上设置这种机芯的32或64个核心并不难。 总体而言我们期待未来几个月更多令人兴奋的产品,无论是在移动和基础设施领域

}

版权声明:本文为博主原创文章未经博主允许不得转载。 /spy/article/details/


}

因为公司是电商公司的缘故主莋H5页面,故使用了zepto.js这个库因此就萌生解读一下源码的想法。以此记录下方便自己归纳知识,以及督促自己don’t talk, show me the code.

down了1.1.6的未压缩版。打开源碼可以看到九百多行代码。

它定义了一个Zepto变量它被包含在一个快速执行函数里面。

展开Zepto这个变量我们发现包裹它的这个快速执行函數给我们返回了一个值:$。那么这个$是怎么来的呢?抽象下源码:

$又是一个函数(zepto.init())的返回值zepto这个对象被挂载到了这个$上。
注意这里的Zepto和尛写的zepto不是一个概念

它一开始被定义为一个空对象,它有一个init方法结合上面抽象出来的代码,我们发现当$(‘div’)的时候,其实调用了zepto.init()這个函数的返回值

如果接着往下说,篇幅可能有点大放在下篇去讲。

}

我要回帖

更多关于 窥全貌 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信