当前位置:网站首页> 体育头条 > cba为什么能导电(万字解读为何苹果的M1芯片这么快)

cba为什么能导电(万字解读为何苹果的M1芯片这么快)

更新时间:2022-07-17 10:02:03

新型M1 Mac的真实体验已经开始流行。它们运行很快。真快。但为什么?什么是魔术?

cba为什么能导电(万字解读为何苹果的M1芯片这么快)

图片:苹果

上YouTube,我看到一位Mac用户去年购买了iMac。它已用完40 GB的RAM,花了他大约4,000美元。他难以置信地看着自己的超贵iMac被新的M1 Mac Mini拆毁了,为此他花了700美元。

在一次又一次的实际测试中,M1 Macs不仅超越了顶级的Intel Macs,而且还在销毁它们。人们难以置信地开始问这到底是怎么可能的?

如果你是一个O ˚F那些人,你来对地方了。在这里,我计划将其分解为易于消化的部分,就像苹果公司对M1所做的一样。具体来说,我认为很多人有以下问题:

  • 此M1芯片如此之快的技术原因是什么?
  • 苹果公司是否做出了一些真正具有异国情调的技术选择以实现这一目标?
  • 像英特尔和AMD这样的竞争对手采用相同的技术技巧有多容易?
  • 当然,您可以尝试使用Google,但如果您尝试了解苹果公司所做的工作,除了肤浅的解释,您将很快陷入技术含量高的术语中,例如使用非常宽的指令解码器,巨大的重排序缓冲区(ROB)等的M1。除非您是CPU硬件的极客,否则很多都是“傻瓜”。

    为了充分利用这个故事,我建议阅读我之前的文章:“ RISC和CISC在2020年意味着什么?” 在这里,我解释什么是微处理器(CPU)以及各种重要概念,例如:

    • 指令集架构(ISA)
    • 流水线
    • 加载/存储架构
    • 微码与微操作

    但是,如果您不耐烦,我将简要介绍您需要理解的材料,以帮助我理解M1芯片。

    什么是微处理器(CPU)?

    通常,当谈到英特尔和AMD的芯片时,我们谈论的是中央处理器(CPU)或微处理器。在RISC与CISC的故事中,您可以了解更多信息,这些内容从内存中提取指令。然后,通常按顺序执行每个指令。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    一个非常基本的RISC CPU,而不是M1。指令从存储器沿蓝色箭头移动到指令寄存器中。解码器在那里找出指令是什么,并通过红色控制线启用CPU的不同部分。ALU加减寄存器中的数字。

    一个最基本的CPU是一种设备,它具有许多称为寄存器的命名存储单元和许多称为算术逻辑单元(ALU)的计算单元。ALU执行加法,减法和其他基本数学运算之类的操作。但是,这些仅连接到CPU寄存器。如果要相加两个数字,则必须从内存中获得这两个数字并放入CPU的两个寄存器中。

    这是M1上的RISC CPU执行的一些典型指令示例。

    加载r1,150 加载r2,200 加r1,r2 存储r1,310

    这里r1和r2是我谈到的寄存器。现代RISC CPU无法对不在寄存器中的数字进行这样的操作。例如,它不能在两个不同位置的RAM中添加两个数字。相反,它必须将这两个数字放入一个单独的寄存器中。这就是我们在此简单示例中所做的。我们在RAM的存储器位置150处提取数字,并将其放入r1CPU的寄存器中。接下来,我们将地址200的内容放入register r2。只有这样,数字才能与add r1, r2指令相加。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    一个有两个寄存器的旧式机械计算器:累加器和输入寄存器。现代CPU通常具有十几个寄存器,并且它们是电子的而不是机械的。

    寄存器的概念是古老的。例如,在这个旧的机械计算器上,寄存器是保存您要添加的数字的函数。术语收银机的起源。寄存器是您注册输入数字的地方。

    M1不是CPU!

    但是要了解M1,这是一件非常重要的事情:

    M1不是CPU,它是将多个芯片放入一个大的硅封装中的整个系统。CPU只是这些芯片之一。

    基本上,M1是将整个计算机集成到一个芯片上。M1包含CPU,图形处理单元(GPU),内存,输入和输出控制器,以及构成一台整体计算机的许多其他功能。这就是我们所说的片上系统(SoC)。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    M1是片上系统。这意味着构成计算机的所有部件都放在一个硅芯片上。

    今天,如果您购买芯片(无论是从Intel还是AMD获得的),实际上可以在一个封装中获得相当于多个微处理器的数量。过去,计算机的主板上会在物理上具有多个单独的芯片。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    计算机主板示例。内存,CPU,图形卡,IO控制器,网卡和许多其他组件可以连接到主板上以相互通信。

    但是,由于今天我们能够在硅芯片上放置如此多的晶体管,因此英特尔和AMD等公司开始将多个微处理器集成到一个芯片上。今天,我们将这些芯片称为CPU内核。一个核心基本上是一个完全独立的芯片,可以从内存中读取指令并执行计算。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    具有多个CPU内核的微芯片。

    长期以来,就提高性能而言,这一直是游戏的名称:只需添加更多的通用CPU内核即可。但是部队受到了干扰。CPU市场中有一个参与者偏离了这一趋势。

    苹果并不是那么秘密的异构计算策略

    苹果没有添加更多的通用CPU内核,而是采取了另一种策略:他们开始添加越来越多的专用芯片来完成一些专门的任务。这样做的好处是,专用芯片趋向于使用比通用CPU内核少得多的电流来显着更快地执行其任务。

    这不是全新的知识。多年来,已经在Nvidia和AMD图形卡中安装了诸如图形处理单元(GPU)之类的专用芯片,它们执行与图形相关的操作要比通用CPU快得多。

    苹果所做的只是简单地朝这个方向做出更大的转变。M1不仅具有通用内核和存储器,还包含各种专用芯片:

    • 中央处理器(CPU)-SoC的“大脑”。运行操作系统和应用程序的大多数代码。
    • 图形处理单元(GPU)-处理与图形相关的任务,例如可视化应用程序的用户界面和2D / 3D游戏。
    • 图像处理单元(ISP)-可用于加速图像处理应用程序完成的常见任务。
    • 数字信号处理器(DSP)-处理比CPU更复杂的数学功能。包括解压缩音乐文件。
    • 神经处理单元(NPU)-用于高端智能手机,以加速机器学习(AI)任务。这些包括语音识别和相机处理。
    • 视频编码器/解码器—处理视频文件和格式的节能转换。
    • Secure Enclave-加密,身份验证和安全性。
    • 统一内存-允许CPU,GPU和其他内核快速交换信息。

    这就是为什么许多使用M1 Mac进行图像和视频编辑的人看到这种速度提高的部分原因。他们执行的许多任务可以直接在专用硬件上运行。这样一来,廉价的M1 Mac Mini就能对大型视频文件进行编码而又不费吹灰之力,而昂贵的iMac却让其所有粉丝全力以赴,但仍无法跟上潮流。

    阅读有关异构计算的更多信息:Apple M1预示RISC-V的兴起。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    蓝色中,您可以看到多个CPU内核正在访问内存,在绿色中,您可以看到大量的GPU内核正在访问内存。

    苹果的统一内存架构有何特别之处?

    苹果公司的“统一内存架构”(UMA)有点棘手(我第一次在这里写下来时就错了)。

    为了解释原因,我们需要退后一步。

    长期以来,廉价的计算机系统已将CPU和GPU集成到同一芯片(相同的硅芯片)中。这些都是众所周知的缓慢。过去说“集成图形”与说“慢图形”基本相同。

    这些由于某些原因而变慢的地方:

    该内存的单独区域已预留给CPU和GPU。如果CPU希望让GPU使用大量数据,它就不会说“这里有我的一些内存”。不,CPU必须在GPU控制的存储区域上显式复制整个数据块。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    CPU不需要提供大量数据,但它们希望快速提供数据

    CPU和GPU不希望它们的内存以相同的方式提供。让我们做一个愚蠢的食物类比:CPU希望服务员非常快速地提供他们的数据盘,但是它们却很酷,只有很小的一部分。想象一下一家豪华的法国餐厅,那里的侍者身穿旱冰鞋,可以为您提供快速服务。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    这就是您的GPU想要内存的方式:很大的一部分。多多益善。

    相反,GPU很酷,服务员处理数据的速度很慢。但是GPU需要大量的食物。它们吞噬大量数据,因为它们是巨大的并行计算机,可以并行读取大量数据。想象一下一个美国垃圾食品店,那里的食物需要一些时间才能到达,因为他们正在将整车食物推到您的座位区。

    面对如此不同的需求,将CPU和GPU放在同一物理芯片上并不是一个好主意。如果提供少量法国菜,GPU将坐在那里挨饿。结果是在SoC上放置功能强大的GPU毫无意义。弱小的GPU可以轻易地消耗掉少量的数据。

    第二个问题是大型GPU会产生大量热量,因此您无法将它们与CPU集成在一起,而不会出现自行消除产生热量的问题。因此,独立显卡往往看起来像下面的显卡:具有大型冷却风扇的大型野兽。它们具有专用的专用存储器,旨在为贪婪的卡提供大量数据。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    GeForce RTX 3080

    这就是为什么这些卡具有高性能的原因。但是它们有一个致命的弱点:每当它们必须从CPU所使用的内存中获取数据时,就会在计算机主板上的一组称为PCIe总线的铜走线上发生这种情况。尝试通过超薄的稻草搅打水。它可能很快进入您的嘴,但是吞吐量完全不足。

    苹果的统一内存体系结构试图解决所有这些问题,而又没有老式共享内存的缺点。他们通过以下方式实现这一目标:

  • 没有专门为CPU或GPU保留的特殊区域。内存分配给两个处理器。它们都可以使用相同的内存。无需复制。
  • 苹果使用的内存既可以存储大量数据,又可以快速存储数据。用计算机的话来说,这就是所谓的低延迟和高吞吐量。因此,不需要连接到不同类型的存储器。
  • 苹果降低了GPU的功耗,因此可以集成功能相对强大的GPU,而不会导致SoC过热。而且ARM芯片产生的热量更少,从而使GPU具有比与AMD或Intel CPU在相同硅芯片上的GPU更高的热量预算。
  • 有人会说统一内存并不是全新的。的确,过去有不同的系统拥有它。但是,内存需求的差异可能并没有那么大。其次,Nvidia所谓的统一内存并不是一回事。在Nvidea世界中,统一内存仅表示存在软件和硬件,它们负责自动在单独的CPU和GPU内存之间来回复制数据。因此,从程序员的角度来看,Apple和Nvidia统一内存可能看起来相同,但是从物理意义上来说并不相同。

    当然,这种策略需要权衡。要获得这种高带宽内存(大份量),需要进行完全集成,这意味着您会剥夺客户升级内存的机会。但是,Apple试图通过使与SSD磁盘的通信如此之快以使它们本质上像老式内存一样工作,来最小化此问题。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    Mac在统一内存之前如何使用GPU。甚至可以选择使用Thunderbolt 3电缆在计算机外部安装图形卡。有人猜测这在将来仍然可能。

    如果SoC如此智能,为什么英特尔和AMD不复制这种策略?

    如果苹果公司正在做的事情如此聪明,为什么不是每个人都这样做呢?在某种程度上,它们是。其他ARM芯片制造商越来越多地投入专用硬件。

    AMD还开始在其某些芯片上安装功能更强大的GPU,并逐步采用加速处理单元(APU)向某种形式的SoC迈进,这些处理器基本上是CPU内核和GPU内核位于同一硅芯片上。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    AMD Ryzen加速处理单元(APU)在一块硅芯片上结合了CPU和GPU(Radeon Vega)。但是,不包含其他协处理器,IO控制器或统一内存。

    然而,有重要的原因使他们无法做到这一点。SoC本质上是芯片上的整个计算机。这使其更适合实际的计算机制造商,例如HP和Dell。让我用一个愚蠢的汽车类比来澄清:如果您的业务模型是制造和销售汽车发动机,那么开始制造和销售整车将是不寻常的飞跃。

    相反,对于ARM而言,这不是问题。戴尔或惠普等计算机制造商可以简单地授予ARM知识产权许可,并购买其他芯片的IP,以添加他们认为自己的SoC应该具有的任何专用硬件。接下来,他们将完成的设计运送到GlobalFoundries或TSMC等半导体代工厂,后者今天为AMD和Apple生产芯片。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    台积电在台湾的半导体代工厂。台积电为AMD,苹果,英伟达和高通等其他公司生产芯片。

    在这里,我们遇到了Intel和AMD业务模型的大问题。他们的商业模式基于销售通用CPU,人们只需将其插入大型PC主板即可。因此,计算机制造商只需从不同的供应商那里购买主板,内存,CPU和图形卡,然后将它们集成到一个解决方案中即可。

    但是我们正在迅速远离那个世界。在新的SoC世界中,您无需组装来自不同供应商的物理组件。而是,您从其他供应商处组装IP(知识产权)。您从不同的供应商那里购买了图形卡,CPU,调制解调器,IO控制器以及其他产品的设计,并将其用于内部设计SoC。然后,您将得到一个铸造厂来制造它。

    现在您遇到了一个大问题,因为英特尔,AMD或Nvidia都不会将其知识产权许可给戴尔或惠普,让他们为自己的机器制造SoC。

    当然,英特尔和AMD可能只是开始销售完整的SoC。但是这些包含什么?PC制造商可能对它们包含的内容有不同的想法。英特尔,AMD,微软和PC制造商之间可能会出现冲突,涉及应包含哪种专用芯片,因为这些芯片需要软件支持。

    对于苹果公司来说,这很简单。他们控制整个小部件。例如,它们为您提供了Core ML库,供开发人员编写机器学习内容。Core ML是在Apple的CPU上运行还是在Neural Engine上运行,是开发人员无需关心的实现细节。

    使任何CPU快速运行的根本挑战

    因此,异构计算是原因的一部分,而不是唯一的原因。M1上称为Firestorm的快速通用CPU内核确实非常快。与过去的ARM CPU内核相比,这是一个重大偏差,与AMD和Intel内核相比,ARM CPU内核通常非常弱。

    相比之下,Firestorm击败了大多数Intel内核,几乎击败了最快的AMD Ryzen内核。传统观点认为这不会发生。

    在讨论使Firestorm快速运行的原因之前,先要了解使快速CPU成为核心思想的真正意义。

    原则上,您可以结合以下两种策略来完成任务:

  • 快速执行更多指令。
  • 并行执行大量指令。
  • 上世纪80年代,这很容易。只要增加时钟频率,指令就会更快地完成。每个时钟周期都是计算机执行某项操作的时间。但是,这东西可以说是相当的小。因此,一条指令可能由多个较小的任务组成,因此可能需要多个时钟周期才能完成。

    但是,如今几乎不可能提高时钟频率。这就是人们十多年来一直在努力的整个“摩尔定律的终结”。

    因此,实际上是关于并行执行尽可能多的指令。

    多核还是乱序处理器?

    有两种方法。

    • 添加更多的CPU内核。每个核心独立且并行地工作。
    • 使每个CPU内核并行执行多个指令。

    对于软件开发人员来说,添加内核就像添加线程。每个CPU内核都像一个硬件线程。

    如果您不知道线程是什么,则可以将其视为执行任务的过程。一个CPU具有两个内核,可以同时执行两个单独的任务:两个线程。可以将任务描述为两个单独的程序存储在内存中,或者实际上可以是同一程序执行两次。每个线程需要一些簿记,诸如其中以程序指令序列的线程当前是。每个线程可以存储临时结果,应将其分开保存。

    原则上,一个处理器只能有一个内核并运行多个线程。在这种情况下,它只是暂停一个线程并存储当前进程,然后再切换到另一线程。稍后它将切换回去。除非线程不得不经常停止执行以下操作,否则不会带来很多性能提升:

    • 等待用户输入
    • 网络连接速度慢等数据

    让我们称这些软件线程。硬件线程意味着您可以使用实际的物理CPU内核来加快处理速度。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    线程的问题在于软件开发人员必须编写所谓的多线程代码。这通常很困难。过去,这是最难编写的代码。但是,使服务器软件成为多线程往往很容易。只需在单独的线程上处理每个用户请求即可。因此,在这种情况下,具有很多核心是一个明显的优势。特别是对于云服务。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    具有128个内核的Ampere Altra Max ARM CPU专为云计算而设计,其中许多硬件线程是一个好处。

    这就是为什么您会看到诸如Ampere之类的ARM CPU制造商制造诸如Altra Max之类的CPU的原因,该处理器拥有疯狂的128核。该芯片是专门为云计算的。您不需要疯狂的单核性能,因为在云中,每瓦特具有尽可能多的线程来处理尽可能多的并发用户。

    阅读有关具有许多内核的ARM CPU的更多信息:Apple的服务器是否下一步?

    相比之下,苹果则处于另一端。它们构成单用户设备。大量线程不是优势。他们的设备用于游戏,视频编辑,开发等。他们希望台式机具有精美的响应图形和动画。

    桌面软件通常不会利用很多内核。例如,计算机游戏可能会受益于8个内核,但是像128个内核之类的东西将完全浪费。取而代之的是,您需要更少但更强大的内核。

    乱序执行的工作方式

    为了使内核更强大,我们需要它并行执行更多指令。乱序执行(OoOE)是一种并行执行更多指令但不将该功能公开为多个线程的方式。

    有关替代解决方案,请阅读:超长指令字微处理器

    开发人员不必专门编码其软件即可利用OoOE。从开发人员的角度来看,看起来每个内核的运行速度都更快。请注意,它不是硬件线程的直接替代方法。您要同时使用这两种方法,具体取决于要解决的特定问题。

    要了解OoOE的工作原理,您需要了解一些有关内存的知识。在一个特定的内存位置中请求数据很慢。但是CPU能够同时获取多个字节。因此,在内存中获取1个特定字节所花的时间不会少于在该字节之后获取100个以上的字节。

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    挪威在线商店Komplett.no仓库中的机器人捡取器

    这是一个类比:考虑仓库中的拣货员。可能是上图中的红色小机器人。移动到多个位置遍布各地需要时间。但是从彼此相邻的插槽中拾取物品很快。计算机内存非常相似。您可以快速获取相邻的存储单元的内容。

    数据通过我们所谓的数据总线发送。您可以将其视为内存与数据被推送通过的CPU不同部分之间的一条通道或管道。实际上,当然只有一些铜导线可以导电。如果数据总线足够宽,则可以同时获取多个字节。

    因此,CPU一次执行一整条指令。但是它们被编写为一个接一个地执行。现代微处理器会执行我们所谓的无序执行(OoOE)。

    这意味着他们能够快速分析指令缓冲区,并查看哪些指令取决于哪个指令。看下面的简单例子:

    01:mul r1,r2,r3 // r1←r2×r3 02:加r4,r1,5 // r4←r1 5 03:加r6,r2,1 // r6←r2 1

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    乘法往往是一个缓慢的过程。可以这么说,它需要多个时钟周期来执行。第二条指令将仅需等待,因为其计算取决于知道放入r1寄存器的结果。

    但是,该行的第三条指令03不依赖于先前指令的计算。因此,乱序处理器可以开始并行计算此指令。

    但实际上,我们正在谈论数百条指令。CPU能够找出这些指令之间的所有依赖关系。

    它通过查看每个指令的输入来分析指令。输入是否取决于一个或多个其他指令的输出?所谓输入和输出,是指包含先前计算结果的寄存器。

    例如,add r4, r1, 5指令取决于r1产生的输入mul r1, r2, r3。我们可以将这些关系链接在一起,成为CPU可以处理的详细图形。节点是指令,边是连接它们的寄存器。

    CPU可以分析这样的节点图,并确定它可以并行执行哪些指令,以及在继续执行之前需要在哪里等待多个相关计算的结果。

    许多指令将尽早完成,但我们无法将其结果正式化。我们不能承诺他们;否则,我们将以错误的顺序提供结果。对于世界其他地区,它看起来必须仿佛按照发出指令的顺序执行。

    像堆栈一样,CPU将从顶部弹出已完成的指令,直到找到未完成的指令。

    基本上,您有两种形式的并行性:一种是开发人员在编写代码时必须显式处理的,另一种是完全透明的。当然,后者依赖于CPU上大量用于无序执行魔术的晶体管。对于晶体管很少的小型CPU,这不是可行的解决方案。

    正是出众的乱序执行能力使M1踢屁股上的Firestorm核心和举足轻重。实际上,它比Intel或AMD的任何产品都要强大得多,它们可能永远无法追赶。要了解原因,我们需要深入了解一些技术细节。

    ISA指令与微操作

    以前,我跳过了一些有关乱序执行(OoOE)如何工作的细节。

    加载到内存中的程序由为特定指令集体系结构(ISA)设计的机器代码指令组成,例如x86,ARM,PowerPC,68K,MIPS,AVR等。

    例如,x86指令将一个内存位置24中的数字提取到寄存器中,您可以编写:

    MOV斧头,24

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    86已登记命名ax,bx,cx和dx(记住这些是你在执行操作的CPU内部存储单元)。但是,等效的ARM指令如下所示:

    LDR r0、24

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    AMD和Intel处理器了解x86 ISA,而Apple Silicon芯片(例如M1)则了解ARM指令集体系结构(ISA)。

    但是,在内部,CPU会使用程序员无法看到的完全不同的指令集。我们称这些微操作(微操作或微操作)。这些是乱序硬件配合使用的说明。

    但是,为什么OoOE硬件不能与常规机器代码指令一起工作?因为CPU需要在指令中附加很多不同的信息,才能并行运行它们。

    因此,尽管正常的ARM指令可能是32位(0和1的32位数字),但微操作可能会更长。它包含有关其顺序的信息。

    01:mul r1,r2,r3 // r1←r2×r3 02:加r4,r1,5 // r4←r1 5 03:加r1,r2,1 // r1←r2 1

    cba为什么能导电(万字解读为何苹果的M1芯片这么快)

    试想,如果我们运行指令01: mul和03: add并行。两者都将结果存储在register中r1。如果我们在03: add之前编写指令的结果01: mul,则指令02: add将得到错误的输入。因此,跟踪指令顺序非常重要。订单与每个微操作一起存储。它还存储例如该指令02: add取决于的输出01: mul。

    这就是为什么我们不能使用微操作编写程序的原因。它们包含许多特定于每个微处理器内部的细节。两个ARM处理器内部可能具有完全不同的微操作。

    阅读有关带微操作的CPU的更多信息,如指令:超长指令字微处理器。

    同样,对于CPU,微操作通常更容易使用。为什么?因为他们每个人都完成一项简单的有限任务。常规的ISA指令可能更复杂,从而导致大量事情发生,因此经常转换为多个微操作。因此,“微”这个名字来源于它们完成的小任务,而不是存储器中指令的长度。

    对于CISC CPU,通常只有使用微操作,否则别无选择,否则大型复杂的CISC指令会使流水线和OoOE几乎无法实现。

    阅读更多:为什么要流水线处理微处理器?

    RISC CPU可以选择。因此,例如,较小的ARM CPU根本不使用微操作。但这也意味着他们无法做OoOE之类的事情。


    为什么AMD和Intel的乱序执行不如M1?

    但是您想知道,为什么这有什么关系?为什么要了解为什么Apple在AMD和Intel上占上风呢?

    这是因为快速运行的能力取决于您填充微操作缓冲区的速度。如果缓冲区很大,那么OoOE硬件将可以更轻松地找到可以并行运行的两个或更多指令。但是,如果在选择和执行指令后不能足够快地重新填充指令缓冲区,那么没有足够的指令缓冲区。

    快速填充指令缓冲区的能力取决于将机器代码指令快速切成微操作的能力。执行此操作的硬件单元称为解码器。

    最后,我们了解M1的杀手级功能。最大,最卑鄙的Intel和AMD微处理器共有四个解码器,它们忙于将机器代码指令切成微指令。

    但这与M1完全不同,M1的解码器数量绝对是闻所未闻的:八个。远远超过行业内其他任何人。这意味着它可以更快地填充指令缓冲区。

    为了解决这个问题,M1还具有一个指令缓冲器,该指令缓冲器的容量是业界正常缓冲器的三倍。

    为什么英特尔和AMD无法添加更多的指令解码器?

    这是我们最终看到RISC报仇的地方,而M1 Firestorm内核具有ARM RISC架构的事实开始变得重要起来。

    您会看到,x86指令的长度可以是1–15字节。RISC指令的长度是固定的。每个ARM指令的长度为4个字节。为什么在这种情况下有意义呢?

    因为如果每个指令具有相同的长度,将字节流分成指令以并行馈入八个不同的解码器变得微不足道。

    但是,在x86 CPU上,解码器不知道下一条指令在哪里开始。它必须实际分析每条指令以查看其长度。

    英特尔和AMD处理这些问题的蛮力方法是简单地尝试在每个可能的起点解码指令。这意味着x86芯片必须处理许多错误的猜测和错误,必须将其丢弃。这造成了如此复杂且复杂的解码器阶段,以至于很难添加更多的解码器。但是对于苹果来说,与之相比增加更多的东西是微不足道的。

    实际上,添加更多的东西会导致很多其他问题,以至于根据AMD本身的四个解码器基本上是它们的上限。

    这就是让M1 Firestorm核心进行实质性处理的原因 两次 与AMD和Intel CPU一样多的指令 相同 时钟频率。

    有人可能会说,CISC的指令会变成更多的微型指令,这是对立的。例如,如果每条x86指令变成2微操作,而每条ARM指令变成1微操作,那么四个x86解码器在每个时钟周期将产生与具有8个解码器的ARM CPU相同数量的微操作。

    除非在现实世界中情况并非如此。高度优化的x86代码很少使用复杂的CISC指令,这会转化为许多微操作。实际上,大多数只会转换为1个微操作。

    但是,所有这些简单的x86指令都无法帮助Intel或AMD。因为即使那15个字节长的指令很少见,也必须使解码器来处理它们。这会导致复杂性,从而阻止AMD和Intel添加更多解码器。

    但是AMD的Zen3内核仍然更快吗?

    据性能基准测试,我记得最新的AMD CPU内核Zen3比Firestorm内核快一点。但是这里有一个问题:这仅是因为Zen3内核的时钟频率为5 GHz。Firestorm核心的时钟频率为3.2 GHz。尽管时钟频率提高了近60%,但Zen3勉强能超越Firestorm。

    那苹果为什么不也增加时钟频率呢?因为更高的时钟频率使芯片运行温度更高。那是苹果的主要卖点之一。与Intel和AMD产品不同,他们的计算机几乎不需要冷却。

    从本质上讲,可以说Firestorm内核确实优于Zen3内核。Zen3只能通过吸收更大的电流并变得更热来保持在游戏中。苹果只是选择不做某事。

    如果苹果想要更高的性能,他们只会增加更多的内核。这样一来,他们可以降低功耗,同时提供更高的性能。

    未来

    看来AMD和Intel在两个方面都陷入了困境:

    • 他们没有一个可以轻松实现异构计算和SoC设计的业务模型。
    • 他们传统的x86 CISC指令集又回来困扰了他们,从而难以提高OoO性能。

    阅读更多:英特尔,ARM和创新者困境

    这并不意味着游戏结束了。它们可以提高时钟频率并使用更多的散热功能,可以提供更多的内核,可以增强CPU缓存等。但是,它们都处于劣势。英特尔处于最糟糕的情况,因为它们的内核已经被Firestorm击败,并且它们的GPU薄弱,无法与SoC解决方案集成。

    引入更多内核的问题在于,对于典型的桌面工作负载,使用过多内核会导致收益递减。当然,很多核心都非常适合服务器。

    但是在这里,诸如Amazon和Ampere之类的公司正在使用128核的巨型CPU进行攻击。这就像在同时打败西方和东方。

    但是幸运的是,对于AMD和Intel,Apple并未在市场上出售其芯片。因此,PC用户将只需要忍受他们提供的任何产品。PC用户可能会跳船,但这是一个缓慢的过程。您不会立即离开自己投入大量资金的平台。

    但是,年轻的专业人​​士在没有任何平台上投入太多资金的情况下就可以花光钱,将来可能会越来越多地转向苹果,从而扩大了他们在高端市场的份额,从而扩大了他们在PC市场总利润中的份额。

    原文:
    debugger.medium/why-is-apples-m1-chip-so-fast-3262b158cba2