.

M1Max全面解析,一篇带你看400mm

全网最全M1Max解析,详细深动地阐述了关于M1Max的各类问题。M1Max是怎么做到如此强的性能的同时还能保持这样低的功耗的?M1Max的硬件设计为什么强?以及苹果silicon会取代老牌X86吗?

M1Max艺术加工图

为M1Max立个靶子——i9-HK+RTX+32G双通道DDRMhz(微星GE76,售价+元)。M1Max的CPU性能水平比i9-HK高10%,GPU水平与Max-Q残血版RTX相当,而64G统一内存则不留颜面地把32GDDRMhz内存比了下去。

以下把微星GE76这套配置简称“靶子”。

微星GE76图片源于网络

一.芯片面积、晶体管数量、频率和功耗的协调统一

M1Max的晶体管数量是亿(CPU部分亿晶体管,GPU、IO和其他部分共亿晶体管)。相比之下,靶子CPU部分和GPU部分的芯片面积之和是亿(CPU部分亿,GPU部分亿),M1max的晶体管数量是靶子的两倍多,同时芯片面积也达到了惊人的mm^2。

我们都知道芯片的成本是随着芯片面积的二次方上涨的,同时伴随着面积增加,良品率也会下降,这也就是为什么这次M1Max芯片有这么多版本。甚至有理由认为M1Pro就是M1Max的物理砍半版,为的就是提高良品率。

晶体管数量上去了,性能基本就不弱(只要晶体管是冲着提升性能去用的)。摩尔定律说:集成电路上可以容纳的晶体管数目在大约每经过18个月便会增加一倍,处理器的性能每隔两年翻一倍。其实形容的就是性能与晶体管数量的关系。

苹果M1Max采用台积电5nm制程自然比靶子的CPU10nm和GPU8nm制程好上不少。晶体管数量可以因为密度提升做得更多,功耗也会下降。

影响性能的还有频率,同时频率也会影响功耗表现。所以苹果把提升性能的重担交给大量的晶体管数目,把降低功耗的重担交给了较低的核心频率。频率要提升,芯片电压就得提升,然而电路的动态功耗和频率与电压的平方的乘积成正比,功耗将会三次方上升。因此M1Max选择了3GHz的频率,性能够强,频率适中,功耗够低。

果式对比图

果式对比图

那靶子为什么功耗那么高,整机达到了W左右的功耗?

其实这事基本就因为两点,一是制程落后,晶体管每次翻转带来的功耗更高。二是频率的设计更高,i9-HK设计目标的频率表现就在4GHz往上,直接导致芯片设计者把流水线做深以达到更高的频率表现,此时电压相比M1Max虽然不会太高,但频率却实打实上去了。暂且不说晶体管翻转频率更高,就时钟树来回充放电也十分耗电,功耗相比M1Max高上不少。

GPU方面,RTXMax-Q采用的是8nm制程的三星工艺,基础核心频率Mhz,相比M1Max的MHz还低上不少。此时两者性能基本一致,M1Max的GPU功耗会低10W在70W左右,这就要归功于强大的5nm制程的台积电工艺了。

但是这样想想,RTXMax-Q利用更多的(个)流处理器即更多的晶体管数量和更低的频率即使使用三星8nm的工艺还能与采用台积电5nm工艺的M1Max战平,可想而知堆料加低频率在笔记本平台的正确性了。

二.M1Max的巧妙设计

1.大小核设计。

M1Max采用的是和M1上同款Firestrom大核和icestrom小核,区别在于M1Max相比M1多了四颗大核心,少了两颗小核心。负载低的情况下,小核心处理程序,负载高的时候,大核心加入处理。这样的好处是负载低的时候,小核心利用高能效比的优势达到更加省电、降低发热的效果,负载高的时候,大核心极强的性能带来更加极致流畅的体验。

那么为什么小核心比大核心省电呢?

大核心为了提高那一些性能是费了大功夫的,因此会有额外的能耗开销。举一个可能不是很恰当的例子:Firestrom采用8发射架构,那么每个时钟周期就得调度8个指令,调度需要调度电路吧?调度电路得费电吧?而Icestrom假设采用单发射架构,那么根本不需要调度,这部分电也就省下来了。结果就是大核心处理得比小核心快8倍,但耗电量可不止8倍。这种例子还很多,比如各种大核心里采用的“花里胡哨“的预测电路,“添油加醋”的指令集架构等等。因此有些场景没必要那么快的运行速度,不如就慢点省电。作为用户感受不出来运行速度慢了,反而感受到的是倍增的续航。

十二代酷睿处理器也用上了大小核设计,我们可以期待一下它在笔记本上低负载的续航表现。

2.统一内存。

GPU不怕延迟,显存带宽尽可能大就行。

CPU无所谓带宽,但性能很大程度受到内存延迟的影响。

苹果M1Max采用6Mhz的lpddr5内存,相比普通ddr5内存延迟更高,带宽更大,功耗更低。它俩的需求要同时满足,M1Max的性能才能发挥出来。

惊人的内存带宽

那苹果是怎么解决延迟问题的呢?

(1)苹果直接把内存拉到了M1Max身边,物理距离的下降直接导致lpddr5的延迟劣势不明显了。

(2)缓存做得大。

M1Max单颗Firestrom核心拥有KBL1指令缓存、KBL1数据缓存,12MB的L2缓存,以及共享的64MSLC缓存。SLC是systemlevelcache的简称类似AMD的infinitycache,是CPU、GPU以及一些专用电路所共享的。如此一来,M1Max相当于没有传统的L3缓存,或者说64M的SLC缓存就是L3缓存。

缓存做得越大,数据越有可能从缓存中直接读出,减少访问内存的次数,自然也没内存延迟什么事了。

但缓存做大难道就是简单堆料吗?

缓存越大,电路在缓存中查找所需数据的时间就越久,延迟会变得难看。但是M1Max的核心频率低,直接导致更大一级的缓存可以在和靶子几乎相同的时钟周期数内读回需要的数据。所以这么大的缓存还就只能是在低频率的苹果芯片上才能发挥正面效果。

(3)Firestrom核心ROB(重排序缓冲)数量多。

CPU分成前端和后端两个部分,前端需要尽可能为后端提供要处理的指令,后端则尽可能完成这些指令。但是需要的数据没有从内存中取出来,后端也就无法完成指令,但是这不妨碍前端继续读取和解码指令,没做完的指令就可以在ROB中存放。ROB数多意味着当“卡壳”出现时,前端可以继续满血运行直到数据被成功从内存读回。数据读回之后,后端就开始拼命执行之前等待数据的指令,直到基本清空ROB。苹果说Firestrom是8发射,但其实不止8发射,最大宽度应该是11发射。8发射是个平均值,更宽的后端为的就是更快地清空ROB,以接受下一轮“卡壳”。

话说回来,统一内存也没什么,无非是CPU和GPU以及其他专用电路的内存可以共用。AMD和Intel带核显的芯片一直是这么做的,区别在于——M1Max的核显实在是太强了。并且GB/s的内存带宽非常给力,完全不输当前的独立显卡的显存。显存的带宽会极大影响GPU性能,尤其是面对像M1Max这样的超强的GPU核心。

苹果是怎么做到GB/s的内存带宽的呢?

首先,lpddr5本身是bit的位宽,相比ddr4类型的64bit位宽已然翻倍。M1Max又采用了四通道的四颗内存芯片,基本是之前Intel和AMD同类型设备内存带宽的8倍左右。因此就造成了靶子的最大内存带宽是50GB/s,而M1Max是GB/s。

但是就这还不够,难道内存堆料就完事吗?远不够,M1Max里还有目测将近(1/8芯片面积)70亿晶体管用在了IO上,为的就是接受这么大的内存带宽。70亿晶体管什么概念?又是一个Intel的i9了。

这样一来,苹果M1Max的显存比目前显存最大的独显(应该是48G)还要大不少。内存和显存像这样动态地融合了,要内存有内存要显存有显存。更重要的是显卡要的数据直接从内存读取就行了,不用像传统独立显卡那样再从内存拷贝到显存中。这是一种非常高效的动态复用做法,灵活、省成本、省功耗。

3.专用电路。

发布会上苹果各种强调新款M1Max可以7条8K视频、32条4K视频流畅播放(具体不记得了),相比前一代渲染快了几倍几倍,视频导出多快多快……其实主要就是视频专用电路的功劳。

MediaEngine媒体处理引擎

怎么理解专用电路这个事情呢?打个比方,把CPU想象成3D打印机,把专用电路想象成塑料注模。CPU能做专用电路的事情,即3D打印机啥都能打印但是速度奇慢,而注模效率相比之下就高非常多。

所以现在M1Max为了追求效率开始使用各种媒体处理电路、神经网络加速电路和T2加密电路等等。专事专办,效率奇高。

结果也就是看视频的时候M1Max功耗在0.05W基本不耗电,而靶子(用核显)在3W,加上显示屏功率3W,60Wh的电池最多坚持10小时。也就是没有插电的M1Max的MacBookPro几分钟内就导出完视频还没来得及掉电,靶子已经苦苦导出半小时了,风扇狂转在找充电器。

那为什么其他厂商不这样做呢?这就是苹果软硬结合的本事了,这个部分不详细展开了。简单想想intel12代大小核架构直接选择硬件调度,win11帮不上忙就能看出来为什么别的厂商难做了。

三.架构问题

总是有听说什么ARM架构是精简指令集,X86是复杂指令集,所以ARM功耗比X86低,但X86能干的事比ARM多,ARM是玩具X86才是生产力……之类的言论。

首先什么是指令集?

指令集就是指令的集合,用于描述硬件的工作方式。指令有算数指令、跳转分支指令、读写指令、特权指令等等。指令集从类型上分,可以分成精简指令集和复杂指令集。从指令长度上分,可以分成变长指令(长度不一)和定长指令。

RISC-V指令集图卡图片来源于网络

那,指令集会影响性能吗?

会,指令集的先进与否能很大程度影响处理器性能。X86架构属于老牌架构,虽然一直在跟随硬件性能修改指令集内容,但是为了兼容性不得不一直兼容着早期的指令集,这也就是“X86税的由来”。X86把很多雷踩过了,ARM就少犯错。在当今硬件性能上看,采用精简指令和定长指令更有利于性能的发挥,而X86时代则不是这么回事。这属于“时代变了”。

指令集的好坏还有很多因素,从一定程度上影响功耗和性能。X86指令集确实不占优。

但说ARM是玩具就很反智。

ARM并不会比X86能干的更少,只是目前MacOS软件生态不全,造成了这样的错觉。

这篇文章不是相信所以看见,而是看见所以相信,因此不排除有想当然的成分。芯片肯定没有我看到的那样简单,mm^2下肯定还藏着数不尽的秘密。有误的内容希望大家纠正,简略的部分欢迎大家补充完善,我会持续更新的。




转载请注明:http://www.abachildren.com/xgyy/1395.html