Apple M1:体系结构,新闻和功能

自从 Apple 宣布放弃 英特尔 Apple Macintosh的CPU使用自己设计的处理器(所谓的Apple Silicon),网络上充斥着有关x86体系结构结束以及ISA体系结构如何优越的启示性消息。 ARM。 但是,Apple的M1架构是什么样的?与PC相比,它又如何呢?

在这个网站上,我们讨论了所有类型的处理器,但是通常它们都是与x86寄存器和指令集兼容的处理器,但是由于最近几个月与Apple M1的争议,我们决定在其架构上写一篇文章。

苹果M1架构

Apple M1不是CPU,而是SoC

苹果M1

首先要记住的是,Apple M1不是 中央处理器 像英特尔的 AMD公司,但这是一个完整的SoC,除了CPU之外,还包括一系列不同类别和实用程序的专用单元,它们是:

  • CPU,这将是我们稍后在本文中讨论的。
  • GPU,用于处理图形。
  • 图像处理单元或ISP。
  • 数字信号处理器或DSP,用于解压缩音乐文件以及进行非常复杂的数学运算。
  • 神经处理单元,专用于AI的处理器。
  • 视频编码器和解码器,用于播放和存储电影。
  • 数据加密单元,确保安全。
  • I / O单元管理外部外围设备以及发送给它们的信息。
  • 大型末级缓存,这对于统一内存必不可少,称为系统级缓存

如果我们要讨论所有这些单元,则需要一本书,这就是为什么我们要专门讨论CPU,以回答有关PC中CPU的性能问题。

当硬件没有多样性时,更容易优化程序

内装电脑

将PC与其他平台区分开来的一件事是,每个组件都有一千种不同的产品,因此,以M1开头的Apple电脑最终创建了数量惊人的配置,除 内存 和存储在Apple SoC上。

这允许什么? 好吧,它基本上允许将应用程序优化为单个配置,这与在市场上已有多年使用寿命,甚至在发布XNUMX年后仍具有优化代码的控制台中所发生的变化没有什么不同。 另一方面,在PC中,选择时的多功能性意味着根本无法优化任何东西。

在PC中,当我们执行程序时,所有内容都将移交给CPU,但是可能会有一部分代码能够以比CPU更专业的单元来执行,这很好,但是其中的硬件种类繁多PC会对代码进行优化,以便使用其他硬件单元来加速Sisyphus的程序。

统一内存

苹果M1 + RAM

苹果公司针对PC的秘密武器之一是统一内存,但首先我们必须阐明统一内存并不指的是不同的元素在物理级别共享相同的内存,而是统一内存意味着所有SoC元素以相同的方式理解内存。

也就是说,当 GPU 修改一个内存地址,此数据将直接为同一内存地址的其余Apple M1元素修改。 在使用统一内存的PC和派生体系结构中,甚至有必要使用DMA单元将数据从分配给一个单元的RAM空间复制到另一个单元,这会增加执行代码时的延迟并降低各方之间协作的可能性。

因此,得益于M1的统一内存,macOS开发人员可以选择以比CPU解析速度更快的单元来运行某些代码。

Apple M1的高性能CPU:Firestorm

ARM笔记本电脑

苹果M1尽管是多核CPU,但实际上使用两种不同类型的CPU。 一方面,一个高性能但性能较差的内核称为Icestorm,而另一个高性能但性能较差的节能内核称为Firestorm,这是我们要处理的,因为它们是Apple所使用的内核。经受住x86的考验。 高性能。

我们将在Firestorm内核中进行研究,在Apple M1中总共有四个内核,Apple决定在PC中使用这些高性能内核,并且已经在PC上实现了高性能。高性能内核,在对所有CPU通用的主题进行评论之前,先了解其性能的原因。

CPU上的解码器故障

CPU NPU渲染

在指令周期第二阶段的第一阶段,要做的是将指令转换为微指令,这些指令要简单得多,但很容易在芯片中实现。 由于微指令不代表动作,因此它本身并不是完整的指令,但是其中的一些组合会形成更复杂的指令。

因此,在内部,没有CPU可以按原样执行程序二进制文件,但是每个CPU都有一个将指令转换为微指令集的过程。 但是事情并没有就此结束,在现代处理器中,执行是乱序的,这意味着程序不是按照顺序的顺序执行,而是按照执行单元可用的顺序执行。

因此,一旦解码器将指令转换为微指令,解码器要做的第一件事就是将它们放置在我们所谓的重排序缓冲区中,在重排序缓冲区中,它们以列表的形式放置在不同执行单元将要执行的顺序中是。 按程序正确顺序的位置旁边的即可使用。 因此,程序将更有效地运行,并且指令将不必等待执行单元释放,然后按程序的正确顺序写入结果。

Apple M1 Firestorm核心的秘密武器:其解码器

速度钟楼

指令解码阶段是指令周期的第二阶段。 在任何并行工作的处理器中,解码器都需要能够同时处理多个指令并将其发送到要解决的适当执行单元。

M1的优势? 具有能够同时处理8条指令的解码器这一事实,使其在这方面成为最宽的处理器,因为这使它可以并行处理更多的指令,因此还允许Apple放置更多的指令。 但是苹果之所以能够做到这一点,是由于与x86相比,ARM指令集的特性,尤其是在解码方面。

ARM x86

ARM指令具有固定大小的优点,这意味着在二进制代码中,每个位数都是一条指令。 另一方面,x86的大小可变。 这意味着该代码在成为微指令之前必须经过多个解码器。 结果呢? 好吧,事实上,专用于解码指令的硬件部分不仅占用了更多的空间并消耗了更多的内存,而且在相同大小下可以解码的同步指令更少。

在这里,我们进入了M1的巨大优势。 英特尔和AMD CPU有多少个完整的解码器? 好吧,平均只有四个,只有一半。 这使M1的Firestorms能够同时执行两倍于Intel和AMD CPU的指令。

Apple M1对比Intel和AMD

苹果M1 vs英特尔vs AMD

执行两倍的指令并不意味着要解决两倍的指令,基于ARM的内核的对应之处在于,它们需要更多的单指令周期,因此需要时钟周期才能执行程序。 因此,具有相同宽度的x86将比ARM强大得多,但是就尺寸而言,它将需要更多数量的晶体管和非常复杂的处理器。

随着时间的流逝,AMD和英特尔都将提高其处理器的IPC,但受到x86指令集及其解码器的复杂性的限制。 并不是说他们不能制造一个带有八个解码器的x86 CPU,而是如果它存在,那么它太大了以至于无法在商业上使用,他们必须等待新节点出现之后才能增加每个内核的IPC。