新闻  |   论坛  |   博客  |   在线研讨会
分析 | 关于苹果自研电脑芯片的一些猜测
旺材芯片 | 2020-07-20 21:23:27    阅读:7831   发布文章

苹果即将推出的基于ARM的Mac将与ARM原代码一起运行现有的x86软件。它是如何工作的,它有多好?Apple使用了哪些魔术?在与一些现任和前任Apple员工和微处理器设计师进行了交谈之后,他们暗示了某些硬件/软件的折衷,而这也是苹果在仿真方面表现出色的秘密。 


首先,基础知识。据我计算,苹果至少经历了五代不同的处理器。该公司开始于6502,然后是68K,PowerPC,x86,现在是ARM。自大约20年前首款iPod以来,苹果一直将ARM用于其iDevices(iPad,iPhone,iPod等)。与此同时,苹果公司在其Macintosh产品线中淘汰了垂死的68K处理器系列,以换购PowerPC芯片(由其协助设计)。后来,这些技术让位给了基于Intel x86的Mac,大约一年后,他们将再次切换到第一批基于ARM的Mac。这使得一条产品线中的四个完全不相关的处理器系列。在Arm仍然是Acorn / Advanced RISC Machines,Ltd时,苹果就与他们有过交集,因为苹果公司是ARM最早的投资者之一(与VLSI一起)。 
值得注意的是,所有三个体系结构更改都支持上一代的二进制文件。Power Mac可以运行未经修改的68K代码,基于x86的Mac可以运行之前的PowerPC代码,而承诺的基于ARM的Mac则可以运行当今的x86代码。用户将无法分辨出区别。它只是工作。 
这是一个好技巧,因为任何尝试编写二进制翻译器或仿真器的人都会告诉你。哦,看起来似乎很简单,但魔鬼在细节之中。您可以在早期运行80%左右的代码,这会导致错误的成就感。因为剩余的20%大约要花掉你接下来的大部分时间。大多数二进制翻译项目要么被放弃,要么运行缓慢,要么被错误所困扰,要么被无力支持。苹果是少数几个使其可靠运行的公司(包括IBM和旧的数字设备公司)。现在,该公司已经完成了三遍相同的技巧。 
效果如何?足以使苹果公司的仿真击败其他本机运行的系统。 
一些早期的基准测试结果显示了Apple基于ARM的硬件在仿真中运行x86基准代码。这个硬件是苹果的开发人员转换套件(DTK),这是一个专用于开发人员的专用盒子,旨在使程序员早日开始将其x86 MacOS应用程序移植到基于ARM的新硬件上。DTK使用与最新(2020年型号)iPad Pro中相同的A12Z芯片。反过来,A12Z与上一代iPad Pro型号中使用的早期A12X处理器略有不同。实际上,除了GPU的数量外,A12X和A12Z本质上是相同的。A12X具有七个GPU,而后面的A12Z具有八个GPU。(实际上,它们是完全相同的裸片,在A12X上禁用了一个GPU。)两者都以8 + 4“ big.little”布置排列了八个CPU内核,并具有四个大型高性能CPU,四个较小的电源高效的CPU 以及七个或八个GPU。整个群集的时钟约为2.5 GHz。 
值得注意的是,A12一代的iPad Pro平板电脑已经发售了大约两年,因此A12X和A12Z不再是最前沿的产品。A12Z并不是将为明年的基于ARM的Mac提供动力的芯片,但它与我们(或Apple)今天所拥有的芯片已经非常接近。即将面世的A14X将为生产机器提供动力,该A14X将具有12个CPU内核(8个快速和4个慢速)以及内置的TSMC领先的5nm工艺,从而大大提高速度。 
Geekbench将DTK的处理器标识为“ VirtualApple 2400 MHz(4核)”。这告诉我们两件事。首先,它以x86仿真模式运行基准测试。否则,它将报告A12Z为ARM处理器。Geekbench还将操作系统报告为MacOS,仅以x86形式提供(无论如何,现在)。其次,它只使用了芯片的八个CPU内核中的四个,这表明四个低功耗内核根本没有被使用。 
基准分数不错,但在真空中毫无意义。使它们变得有趣的是它们如何与其他计算机堆叠在一起。(根据记录,这些结果被泄露,违反了开发人员在访问DTK之前必须签署的NDA,但这没有理由不认为它们不准确。) 
令人惊讶的是,DTK的x86仿真比某些真正的x86处理器要快。Twitter用户_rogame报告说,它在OpenCL基准测试中击败了Microsoft的Surface Book 3(基于Intel的Core i7-1065G7)。在同一测试中,它还击败了基于AMD Ryzen的HP笔记本电脑。 
令人尴尬的是,DTK还胜过Surface Pro X,这是微软不到一年前推出的基于ARM的Windows笔记本电脑,我们在这里进行了介绍。与DTK一样,Surface Pro也具有ARM处理器,但是与DTK不同,它以纯模式而不是仿真方式运行Windows操作系统和基准代码等所有内容。因此,Apple对运行在ARM上的x86的仿真比Microsoft的本机ARM实施要快。 
(Geekbench的一个错误将Surface Pro X的处理器报告为“ Pentium II / III”,这显然是错误的。它实际上是SQ1芯片,这是微软对高通公司Snapdragon 8cx进行的一项调整。基准是针对SQ1的ARM源代码,而不是翻译或仿真的x86代码。对此你感到困惑吗?) 
对于希望在继续使用旧的Mac应用程序时切换到基于ARM的系统的Mac用户而言,所有这些看起来都不错。那么,苹果如何做到这一点呢? 
苹果是否重新设计了ARM以运行x86二进制文件?是否存在某种x86协处理器或某种硬件加速器来扩展基本的ARM处理器集群?特殊指令,也许吗?可以转换二进制代码的大型FPGA? 
一方面,苹果显然拥有设计自己想要的任何东西的资源,因此它本可以遵循任何这些路径。该公司在这一领域也有丰富的经验,为iDevices创建了接连的处理器系列已有近20年的历史。另一方面,其ARM许可证所允许的限制是有限的,没有Arm的许可,Apple也无法从根本上改变ARM指令集或编码的模型,这不太可能实现。那么,诀窍是什么? 
苹果内部人士告诉我,该公司花了多年的时间来分析其代码并寻找性能瓶颈。它知道MacOS代码的痕迹,以及第三方应用程序的行为。他们也有10年的分析和优化x86二进制文件的经验,因此团队知道痛点在哪里。 
共识是苹果不需要弄乱ARM体系结构,至少不是它的可见部分。相反,该公司可能会优化其微体系结构:实现程序员可见部分的底层电路。所有x86转换都是在软件(称为Rosetta 2)中完成,而不是在硬件中完成。与Transmeta或nVidia的Project Denver等其他x86克隆芯片不同,它没有特殊的x86仿真操作码,没有模仿x86的影子寄存器集,没有协处理器,也没有大量的硬件辅助。
相反,Apple的A14X仍然是常规的基于ARM的处理器,经过优化,可以很好地运行Rosetta 2翻译代码。缓存应该非常大,因为它需要缓存x86代码(作为数据)和Rosetta 2可执行文件的大块。还需要针对未对齐的x86二进制文件以及非ARM指令集固有的融合操作优化芯片的预取逻辑。任务切换至关重要,因为处理器将在执行Rosetta 2和其翻译的代码之间交替切换。 
由于x86指令将转换为相似的序列,因此Rosetta可能会产生某些重复模式,因此获取,解码和调度这些模式将是优先事项。ARM编译器往往会产生某些通用模式,而x86编译器会产生不同的模式,因此,不仅针对常规ARM代码,还要针对这两种类型优化前端逻辑,这一点很重要。在解码和分派阶段融合多个ARM指令将大大提高性能。 
x86架构比ARM支持更多的内存寻址方案,因此Rosetta可能会遇到涉及寄存器到寄存器算术,偏移量和缩放比例的奇数存储器引用。此处的一些硬件辅助将带来性能上的好处。解码路径中一些额外的加法器,移位器或整数乘法器可以帮助实现这一目标。 
苹果芯片是否包括用于加速x86转换的特殊硬件?是的,但不是其他公司尝试过的那种大型硬件仿真机。取而代之的是,该公司采用了苹果公司的典型方法:在软件中尽可能多地执行并优化硬件,以使代码真正运行得很好。软件更灵活,更易于修补和更新,并且通常更强大。 
最后,值得重复的是,早期的基准测试结果全部来自A12Z芯片,这是一款已有两年历史的设计,没有任何这些增强功能。首批基于ARM的Mac仍需要一年的时间,并将基于A14X,该芯片不仅更快,更新,而且从一开始就被设计为杀手级的Rosetta 2引擎。如果Apple决定需要更强大的x86硬件辅助,它总是可以将其设计到A15中。 
苹果具有创造有效的二进制翻译器的独特资格。该公司以前在软件方面做过两次。初步结果表明,即使没有任何硬件辅助,它还是可以轻松完成的。在A14X上运行的Rosetta 2应该更好。 


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客