那么话不多说,这篇我们来聊一聊,这次的芯片到底有何不同,以至于让那么多人说苹果不讲武德。
在这之前我先解释,我只是一个打算机专业的学生,从来就没有自诩自己是什么专家学者,我写博客也只是为了做一些大略的科普,把自己知道的一些知识分享给大家。如果文章中有什么缺点的地方,还请各位读者示正。
首先,我们要先摆脱一个认知误区,M1 芯片不是一块 CPU,而是一块专为 Mac 设计的 SoC 芯片。CPU 只是 M1 芯片的一个组成部分。

所谓 SoC 芯片,指的是系统级芯片(System on Chip),也称片上芯片,是一个将电脑或其他电子系统集成到单一芯片的集成电路。 SoC 集成的紧张包括处理器(CPU,GPU 等)、基带、各种接口掌握模块、各种互联总线等,其范例代表为手机芯片。举个例子,CPU 公司将自己的所生产的 CPU 设计卖给其他公司,而其他公司就根据该 CPU 自己添加上所须要的各种外设掌握器,这便是 SoC。
以是大略来说:SoC 便是一块集成了 CPU、GPU 等多种构造的芯片。因此,千万不要大略的认为 M1 芯片便是 CPU。
官网有一张图,就很好地解释了 M1 芯片的组成身分。如下图所示,苹果称其为统一内存架构(Unified memory architechture),即通过 Fabric 高速总线将中心处理器、图形处理器、神经网络引擎、缓存、DRAM 内存全部连接在一起。因此,M1 芯片的强大,绝不是靠一个刁悍的 CPU 支撑的,而是浩瀚性能强大的部件结合苹果精良的设计共同努力的成果。
3. 统一内存架构(UMA)
通过上一段内容,我们知道了 M1 芯片的强大光靠一颗强大的 CPU 是不足的,毕竟苹果也没办法打破物理定律,纯挚通过设计让 CPU 的性能提升数倍。很明显苹果采取了其他的技巧来弯道超车,而「统一内存架构」便是个中之一。
我们知道,处理器在处理任务时,他要做的事情很大略便是取东西和算东西,也便是上一篇文章中提到的“吸收指令+运算数据”。
和上篇文章一样,我们还是以打工人为例,取东西便是打工人搬砖,算东西便是打工人砌砖,你砌砖砌得再快再好,砖搬的慢,砌砖的速率也不会快。反过来也是,如果砌砖的慢,搬砖的块,就会有砖堆积。
因此空想状态下,搬砖的速率和砌砖的速率该当是同等的,这样就不用等对方。对付 CPU 来说也是同样的道理,如果双方的速率不一致,就会造成性能摧残浪费蹂躏。
因此,为理解决上述问题,苹果供应了一个办理方案,便是统一内存架构。
3.1 UMA 做了什么?那么 UMA 到底做了什么?
我们电脑里面有很多 PU(Processing Unit),即处理单元(处理器),我们常见的有 CPU(Central Processing Unit,即中心处理器)、GPU(Graphics Processing Unit,即图形处理器)和 NPU(Neural network Processing Unit,神经网络处理器)。他们都须要取东西、算东西,但是在 UMA 涌现之前,他们只能通过 CPU 来分配东西,而 CPU 还要事先从内存中取数据。显然,这种事情办法的效率很低,况且,不同的处理器对付数据的运算速率也是不同的,为了做到时序同步,一定程度上不利于硬件性能的发挥。
而且,每个处理单元作为一个独立的个体,各自处理的数据包格式也不一样。不同 PU 之间通信的措辞都是不一样的,统一数据格式时也须要花费韶光,如果这样通信效率还高那才有问题。就像来自不同国家的打工人一起打工时,都说各自的措辞,通过翻译才能进行沟通,这听起来效率就很低。
当然了,以上只是大略的举一些例子,真实情形肯定是比这更加繁芜的,但纵然是这样,我们也能感想熏染到有很多本来不应该存在的步骤延误了很多韶光。以是,为理解决上述这些问题,苹果给出了几个办理方案。
3.1.1 PU 直接访问内存没有 UMA 之前,须要先将数据从内存中取出,然后由 CPU 优先处理、分配,如下图所示
有了 UMA 之后,这些处理单元可以直接访问内存,再也不须要通过 CPU 去获取一些数据了,如下图所示
通过这样的设计办法,这个 PU 们不须要再和 CPU 同步语速,也不用什么乱七八糟的事情都先去找 CPU 干涉干与一遍,这样就省下来一大笔韶光了。
3.1.2 Apple-designed package虽然办理了取数据时的时序问题,但是各处理单元的通信问题仍旧没有得到办理,这里就要提到苹果所做的另一个办理方案了——Apple-designed package。
通过 Apple-designed package,各单元处理数据时的数据包格式统一了,他们之间的沟通不再须要翻译了,哪怕都说的是“阿巴阿巴阿巴”也都能明白各自说的是什么了,这就又省下了一部分韶光。
3.1.3 高度集成
无论是拆解图还是实例图,都解释苹果这次的高度集成,是直接将内存放到了处理器的阁下,这极大的缩小了内存和处理器之间的物理间隔,取数据的速率自然就会更快了。
千万别鄙视了这点物理间隔的减少,目前的打算机都属于冯诺依曼构造,而该构造最大的一个隐患便是:在内存容量指数级提升往后,CPU 和内存之间的数据传输带宽成为了瓶颈,缘故原由之一就在于内存和 CPU 的物理间隔过大。虽然现在 CPU 和内存的速率越做越快,但是他们之间的间隔却无法改变,而传输数据的速率-光速也无法改变。
我们可以来做一个大略的数学题,i9-7980XE 是一颗 18 核 36 线程的民用 CPU,这颗 CPU 最大睿频 4.4GHz,假设该 CPU 在一个时钟周期内实行一条运算指令,那么该 CPU 实行一个指令须要的韶光是 0.000000000227273 秒,即 0.22ns(纳秒),那么在这段韶光内,光所跑的间隔是 0.0681819 米,四舍五入就约即是 7 厘米。以是说如果 CPU 和内存之间的间隔超过 7 厘米,CPU 岂不是要多等一会才能连续收到指令了。这还是一次只取一条指令的情形,如果数量多了呢?
以是物理间隔的缩小,自然可以让 CPU 取数据的速率更快一些,这也是 M1 芯片性能提升的关键一点。
3.2 超大缓存上面说的这些也都只是让 CPU 取数据时可以更快一些,但是 CPU 和内存之间的数据传输带宽成为瓶颈不单单是由于物理间隔的缘故原由,最根本的缘故原由还是由于 CPU 太快了,很难做到和内存同步。以是我们得把打算机常常用到的数据导入 cache,也便是缓存,避免打算机去内存要东西,更不应该让打算机去硬盘要东西。
3.2.1 什么是缓存缓存便是数据交流的缓冲区(称作 Cache),是存贮数据(利用频繁的数据)的临时地方。其实在很多地方都用到了缓存,比如当用户查询数据,首先在缓存中探求,如果找到了则直接实行。如果找不到,则去数据库中查找。
CPU 也同样设计了一个这样的存在,是一个用于减少处理器访问内存所需均匀韶光的部件。他的事情事理是:当处理器发出内存访问要求时,会先查看缓存内是否有要求数据。如果存在(命中),则不经访问内存直接返回该数据;如果不存在(失落效),则要先把内存中的相应数据载入缓存,再将其返回处理器。
还是拿搬砖这个例子来加深理解,如果我正在砌砖,就算搬砖的人把砖搬过来了,我也来不及砌,光让他在那站着等也不好,以是就让他把砖放到脚边(缓存),这个砌砖的每次就不用跑去搬砖的那里拿砖了,只须要从脚边(缓存)拿砖就好了。
以是,我们知道缓存紧张是为了填补 CPU 和内存之间的读写速率差异而涌现的,因此理论上,在一定范围内,缓存自然是越大越好。
3.2.2 M1 芯片的缓存设计M1 芯片同样也是这么设计的,只是苹果为 M1 芯片带了超大的缓存,这个缓存有多大呢,我们来做个大略的比较。(以下数据摘自维基百科和 CPU - Z)
L1 表示一级缓存,L2 表示二级缓存,即一级缓存的缓存。一级缓存还分为一级数据缓存(Data Cache,D-Cache,L1d)和一级指令缓存(Instruction Cache,I-Cache,L1i),分别用于存放数据及实行数据的指令解码,两者可同时被 CPU 访问,减少了 CPU 多核心、多线程争用缓存造成的冲突,提高了处理器的效能。一样平常 CPU 的 L1i 和 L1d 具备相同的容量。
这个比拟结果非常明显,尤其是在二级缓存,虽然在 M1 芯片中,二级缓存是共享的,但这 16MB 的缓存还是比 i9-10900K 的二级缓存大了不少。虽然 i9-10900K 的三级缓存有 20MB,但是也只是比 M1 的二级缓存大了 4MB,并且三级缓存的速率是比二级缓存慢得多的。
而且,可别忘了,基于苹果这次的高度集成,DRAM 内存和处理器直接通过 Fabric 高速总线连接在一起,这样使得集成的内存可以近似看做是一个超大容量的 L3 缓存,苹果用捐躯扩展性换取吞吐量的策略,给 M1 芯片带来了更高的带宽与更低的延迟。当然了,缓存也并不是越大越好,一方面是制作的难度,另一方面缓存命中率也是评价缓存性能的一个主要指标。如果缓存过大,命中率就会低落,如果这样就会有些得不偿失落了。
实在 M1 芯片之以是可以塞入这么大的缓存,和其制作工艺是有很大的关系的,相较于 10nm、14nm,M1 芯片采取台积电最前辈的 5nm 工艺制成,晶体管越小,单位面积内可塞入晶体管的数量就更多,这样就让苹果可以为 M1 芯片设计更大的缓存。这一部分详细我们下一节来说。
现在再回过分看我们一开始所说的:“所谓统一内存架构,便是通过 Fabric 高速总线将中心处理器、图形处理器、神经网络引擎、缓存、DRAM 内存全部连接在一起。”这不仅仅是大略的将各单元连接在一起,而是苹果这么多年在移动端 SoC 精良实践履历的结晶,是只属于苹果自己独享的 moment。
以是说,这么一套搞下来,哪怕 M1 芯片的 CPU 芯片的物理性能没有得到提升,性能也不是最强大的,但 UMA 的设计架构也会给 M1 芯片带来综合性能的提升。
况且,谁说 M1 芯片的 CPU 就弗成了呢?
4. 制程&晶体管数量Apple 官网对付 M1 芯片有如下的先容:
M1 也是 Apple 首款采取前辈 5 纳米制程打造的个人电脑芯片,封装了惊人的 160 亿个晶体管,其数量为 Apple 所有芯片之最。
这里我将两个主要的数字加粗标注了出来,第一个数字是刚才提到的 5 纳米制程,第二个数字是 160 亿个晶体管。
4.1 5 纳米制程指的是什么?当我们阅读一个和芯片有关的文章时,常常会看到诸如 5nm、7nm、14nm 这些词,例如华为的“末了一款”麒麟芯片,麒麟 9000 便是 5nm 工艺制程,那么这个 5nm 指的到底是什么呢?
说实话,这一块内容水太深了,我自己也不是从事半导体领域的,很难阐明清楚,这里就只能大略的解释一下。
引用知乎的一张图,在上图所示的晶体管构造中,电流从 Source(源极)流入 Drain(漏级),Gate(栅极)相称于闸门,紧张卖力掌握两端源极和漏级的通断。电流会损耗,而栅极的宽度则决定了电流利过期的损耗,表现出来便是手机常见的发热和功耗。宽度越窄,功耗越低。而栅极的最小宽度(栅长),便是 XX nm 工艺中的数值。
大略来说便是,Leakage Path 越小,电流损耗越小,总体来看便是功耗越小。宏不雅观来看,随着 Leakage Path 越小,晶体管之间的间隔就越小,单位面积内可以塞入的晶体管数量就越多,整体的运算性能就越强。
最近,AMD 猖獗 yes 的缘故原由和其工艺制程的提升有很大关系,而这次 M1 芯片所采取的是目前市情上最前辈的 5nm 工艺制程,性能强也是猜想之中的事情了。
4.2 为什么晶体管数量越多,运算性能越强?晶体管就可以算作一个小开关,有通断两种状态。你可以理解为通是 1,断是 0,那么一个晶体管的一次开,或者一次关,就供应一个 2 位的数据:0 或者 1。用无数个 0 或者 1 就可以代表所有的数据。这也便是为什么电子时期信息被称为数字化。实在便是把所有的信息用数字来表示。而数字,可以用电脑来处理。电脑是没法直接处理人类的信息的。这便是打算机采取二进制表示数据的的缘故原由。
以是我们要理解,是由于电路的这个特性才让先辈们选择二进制作为机器的措辞,而不是由于二进制大略以是采取二进制的。 这里提两个小问题:人为什么要利用十进制?生活中有没有利用其他进制计数的例子?欢迎在评论区留下你的想法。
一个晶体管一次只能表示一个 0,或者 1。那么一大堆晶体管同时事情呢?
大略的说就像是一个大的存放开关的工厂,每个晶体管便是一个开关,关的时候表示 0,开的时候表示 1,晶体管越多,开关也越多,在处理同一个问题的时候走的线路也就越多。这就像是你以前学初中物理时的并联电路,之路越多流利的线路也越多。同样,CPU 的晶体管越多,单位韶光内可以流过的电流的岔路支路也就越多,反响在宏不雅观上便是你在一颗 CPU 上能同时处理的数据也就越多,机器也就越快。
不过晶体管越多芯片性能越好这一点并不是绝对的,只是相对来说,晶体管多了之后,可设计的空间就更大了,剩下的就要看厂商能否利用好这部分设计空间了。
5. M1 真的完美吗?那么问题来了?说了这么多 M1 芯片的优点,又是采取了 UMA 架构,又是最前辈的工艺制程,他是一个完美的芯片吗?我想未必。
5.1 扩展性比较上面的先容让你对 M1 芯片的统一内存架构有了一定理解,也知道这样的架构对付性能的提升有很大的帮助。
只是将内存这样焊去世在一块 SoC 芯片上,对付后期想要硬件扩展的用户来说,无疑是不可能的。
而且虽然 M1 的 GPU 的性能很强,但也是相对手机上的 GPU 来说的,和桌面级的 GPU 比较还是有很大的差距的,毕竟体积摆在那了,这对外接显示器或者玩游戏的用户来说也是很难熬的。同样的,外接显卡也是用不了的,不过该当也不会有人用 Mac 玩游戏吧。
Mac 当然可以玩游戏,这里挖个坑,下次我们来窥伺一下未来——云游戏。
5.2 兼容性从 x86 架构迁移到 ARM 架构,苹果是下了很大决心的,也是布局已久了。为了不让用户担心运用生态会涌现较大的变革,苹果给出了三种不同运用的办理方案,分别是「Universal 通用运用」、「Rosetta 2 转译运用」以及「原生 ARM 运用」。个中,Universal 是横跨 ARM 和 X86 平台的运用,目前往后部分开拓者将自家软件转向 Universal,例如 Adobe 的 Lightroom,Photoshop 则会在明年更新。这里不得不感慨一下苹果的号召力,apple silicon 一出,各大厂商都在快速跟进,估计隔壁某厂要倾慕哭了。
如果新运用没有适配 Universal,那你也可以通过 Rosetta 2 转译运用,那些原生的 X86 编译运用可以通过苹果供应的 Rosetta 工具,转译成可以在 ARM 平台直接运行的运用,虽然会丢失一些性能,但是可以极大提升兼容性。目前从各种兼容性测试视频来看,Rosetta 2 的完成度非常高,并不像隔壁某厂,推出的是一个半成品。
如果说,上面两种办理方案还是无法知足你的需求,那么你还可以依托苹果建成依旧的 App Store 生态,直接运行原生 ARM 运用,它们能够直接在 macOS、iOS 和 iPadOS 上运行,相称于苹果打通了小屏到大屏的紧张设备。
即便曾经 macOS 的软件生态还不完善,但在 iOS 险些已经没有了这个问题,也使得搭载 M1 芯片的 Mac 产品并不须要太过担心没有足够的运用可以利用。
而且,从这次更新的 macOS Big Sur 也可以看出,苹果也是故意让这三真个风格更加统一。无论是系统界面还是图标样式,都在往 iPad 和 iPhone 上统一。
那么为什么同样的软件在迁移的时候会有兼容性的问题?这已经和本文要先容的 M1 没什么关系了,考虑到篇幅问题,我们之后再说。
那么到底 M1 版 MacBook 能兼容什么软件、不能兼容什么软件?
一个个软件测试,工程量非常大,而且软件们也处于一直的更新换代中。好在 GitHub 上涌现了一个关于 M1 版 MacBook 的兼容性测试项目“DoseitARM”。在这个项目中,可以看到开拓工具、影音工具、图形图像工具、剪辑工具等各种生产力软件的兼容性测试。各种软件的兼容性又被分为几种不同的情形,分别如下:
他的地址是 :https://github.com/ThatGuySam/doesitarm
有兴趣的读者可以长期关注该项目。
6. 末了对付财大气粗的苹果来说,未来无疑将会长期进行大量的投入来对 M 系列芯片进行迭代,并且其自有生态也担保了能够反哺 M 系列芯片的研发。希望海内的企业也可以像苹果一样有属于自己的芯片,未来值得期待!
如果你以为我的文章对你有所帮助,不妨点个赞关注我,就当是给我的一点鼓励了,你们的鼓励会让我更加努力做好分享,感谢支持 。