今天咱们来说一个很多数码博主们根本不会告诉你的事情。
这件事的来头在于这样的一个回复:
能问出“目前还有什么其他指令集是影响CPU性能的吗?”这样的话实际上就说明了读者开始用心了。
CPU是一个相当复杂的产品,其复杂程度非一般人所能想象。面对选择,很多数码博主们也很难给普通用户来说明白不同的CPU所使用的不同技术的优缺点。面对这样的问题,大家就将原本很复杂的产品参数抽象为了多大频率、几纳米制程、第几代CPU和几个核心这样笼统的“技术表象”。
这种认知虽然在面对日常生活的时候基本够用,但很初级。为什么这样说,咱们先说iN最近看的一本小说的情节:
匈奴的冒顿单于纠结了三十万骑兵,要攻打汉人的土地,在誓师大会上冒顿高呼“草原的男儿们,我们要踏平长城,将南方的土地抢到手中,让汉人为我们放羊,把田地改作牧场”……
作为汉人咱们有没有感觉到一丝不对头?“丫怎么就只知道放牧?”这就是“认知局限性”的问题了。作为当时北方游牧民族他们很难想象盈车嘉穗车水马龙;更难想象软红十丈纸醉金迷。
科技领域的复杂性和广度其实也远远超出普通用户的理解范围,尤其是涉及到CPU技术的详细内容时。普通的用户也和冒顿单于一样只知道土地可以放牧而已。
不服气吗?那么咱们来问几个灵魂拷问的问题:
为什么intel的酷睿CPU会分为i9、i7、i5、i3这几个不同的产品线?他们之间的区别到底是什么?
为什么从12代酷睿开始CPU开始分大小核了?
为什么前两天发布的iPad Pro先于苹果的笔记本和台式机率先使用了M4的CPU?
为什么intel和AMD的CPU封装和核心不一样?
为什么CPU分消费者市场和专业市场?
……
如果这些问题你都不知道正确的答案,那么在数码领域中,你就是一个“冒顿单于”,他虽然能抢下的土地却不会善加利用,而你却可能会因为买到了一个错误的CPU而沾沾自喜。
蹭下热度,咱们先说下苹果为什么将最新的M4 CPU用在iPad上的深层次原因。这是最近iN的小伙伴们和iN讨论的最多的话题。很多人认为苹果过于激进要开发一个性能逆天的产品。而iN认为的更深层次的原因则在于苹果的M4芯片生产线产能不足并且良品率拉胯。
这话怎么讲?你要了解CPU的生成制造的例程。
苹果的CPU一般会分为四个不同的等级在基础版CPU之上还有PRO、MAX和ULTRA三个更高层次的产品。
那么如果要开设一个生产线生产苹果的CPU会怎么做呢?每个不同等级的CPU单独开设一个生产线吗?这样的成本是不是太高了?
实际上任何制造CPU的厂商都会在晶圆上刻蚀最复杂最高端的CPU产品。
在制造的过程中,如果制造出的芯片出现瑕疵,就会屏蔽掉芯片上的一些核心,将芯片降低等级进行销售。
苹果就更极端了,制造一枚M ULTRA CPU在硅晶圆上所消耗的面积是一枚普通M芯片的8倍,当8个M芯片的位置上全部合格的话,就可以生产出一枚 ULTRA,否则这个8 M芯片个面积上的晶圆就会被切割,被切割成一枚 MAX芯片和一枚PRO芯片,以及两枚M芯片,当然了,切割出的两枚M芯片大概率只有一枚是可以使用的,
这是因为在一个晶圆上由于良品率的问题,不得不做出的妥协。不仅仅是这样,一些被废除的单个的die(裸晶)本身也不是坏得彻底,在屏蔽掉某些不合格的电路之后还是可以继续降低档次来使用。例如我们在选择苹果电脑的时候有一个CPU选择的选项:
让用户在购买的时候选择10核处理器还是12核处理器,以及是使用16核图像处理器还是19核图形处理器。这种选择如果倒过来说,这样写:
都是写上12核处理器,只不过有一批残次品坏掉了两个核心,还有都是19核图形处理器,只不过这批残次品坏掉了3个图形核心,如果你愿意买就给你减价2250块钱。
所以瑕疵最多性能最差的CPU就是在生产最高端的CPU时候产生的缺陷品。这些CPU就会迅速的下沉到更低一级的产品中。
例如这次的Ipad Pro
你甚至会发现不同容量的iPad 所配备的CPU核心数是不相同的。
所以在苹果,一块ULTRA生产出来,会依据核心的完好程度来划分核心数,会依据裸晶的好坏被切割成MAX、PRO和基础芯片,这样产品的差异化就被做出来了。
同样在INTEL和AMD则是依据裸晶的好坏程度被划分成了不同产品线的CPU,例如i9、i7、i5、i3,至于CPU的频率指标则通过从最高频率降低到特定频率来规避掉本身就已经在裸晶上存在的缺陷。这样你就应该理解为什么酷睿CPU会分为i9、i7、i5、i3这几个不同的产品线并且在不同的产品线上还会区分那么多的频率了吧?
对于大小核心则是另一个话题——指令
从12代处理器开始,Intel就开始了混合架构的设计,也就是大家俗称的大小核。这实际上就是一个去冗余的过程。
CPU的核心被分为了性能核(大核)和效能核(小核)。从微架构上来说,性能核心采用了Golden Cove微架构:
效能核心则使用了Gracemont微架构
从架构图上我们可以看出这两个核心的不同,但同时我们也可以看到这两个核心及其相近的功能部分。这些极其相近的功能部分其实就是CPU的主要功能。
小核并不是因为小而不具备大核的性能,而是根本没有作出完成大核心所能完成指令的电路。
例如AVX-512指令集,全部的功能都可以在大核上运行,但在小核上只能支持部分功能。
因此,如果在运行游戏的时候开启了AVX-512功能,那么大核的负载会立刻提升,但是小核的负载则完全不会有任何变化。
再例如FP16(Half-Precision Floating Point),也就是16位的半精度浮点数计算只能在大核上运行,而在小核心上没有任何支持。类似的指令有很多,比如AMX、VNNI、TSX……
所以说——什么是指令?
如果从底层编写程序的角度来说,CPU的指令(Instruction)是指通过操作码和操作数定义出来的CPU可以执行的操作类型和操作方式
但如果从CPU的硬件设计角度来说,指令是指一块特定功能的电路以及激活这个电路的一系列电信号。
所以有一个很重要的概念就是——如果要更多的功能就需要更大的芯片面积及更大的功率消耗,最终就是更高的采购和使用成本。那种既要马儿跑又要马儿不吃草的便宜事仅仅存在于想象中。对于CPU来说并不存在便宜又快功耗又低的CPU。
同样也因为各种CPU内部的电路配置不同以及对应的市场需求不同,CPU被分为了消费级CPU和专业级CPU。
也正因为如此,iN一般会告诉朋友,用J1900这类工业CPU做NAS还想要高性能的人不是笨就是傻了。本来便宜的东西也不是这样使用的。
回到今天的话题,怎么选CPU:很简单的一个判断,在价格公道的前提下购买你买得起的最贵的CPU。这是由CPU的制造原理所决定的,只有最高阶的CPU才能最接近当初设计这一系列CPU的最原始设计指标在每代CPU中除了最顶级的那个型号之外,所有的CPU其实都是或多或少的阉割版。
这种阉割并不由商品的组装工艺而决定,并不像是我们买辆车,不必要的配置可以减配,而是仅仅通过屏蔽的方式隐藏了CPU在制造过程中的缺陷。购买的CPU越低端,其实就是CPU本身的缺陷越多。这也是可以解释很多人的一个疑问的原因:
很多人在讨论为什么同一型号的CPU功耗不一样,甚至还派生出了CPU有体质的区别,读懂上面的文章,你应该会理解——在制造过程中缺陷是随机的多种多样的,因此即便是相同型号的CPU由于“坏掉”的部分有差异就会带来“体质”上的区别。CPU的销售型号只是一个标定CPU损坏程度的范围标识而已。
另外,很多人在购买显卡的时候已经学会了问一句这个显卡支持不支持“光追”。其实在显卡上,“光追”最终下沉到电路上的时候就是一组电路,也就是一组指令。但很少有人问所购买的CPU是不是支持AVX-512、是不是支持AV1硬解码、是不是支持AES加速……原因则是CPU的这些指令功能对于普通用户感觉不足。但是如果我们要拿到一个CPU的参数功能表,例如下面这张:
大多数用户根本不知道这些密密麻麻的参数会对自己的系统体验造成多么大的影响。例如在不开启一些功能的时候系统运行是这样的:
注意CPU占用率相当平整平顺。
但如果关闭了一些设置你会发现CPU的占用率立刻飙升:
但是,在普通用户的感觉下,未必能很明确的得知为什么速度慢了,这种现象积累起来就导致用户觉得电脑“一卡一卡”的。这样也就成了很多用户觉得自己的计算机慢的一个主要原因。
有的时候升级一个新的CPU,这个CPU的特性提供了某些功能的直接加速,用户会觉得卡顿的现象得以缓解。但更多的情况下则是一个CPU提供了一些特性但又减少了一些特性,这就让用户觉得换了CPU但系统根本没有明显的速度提高。
出现这样的现象实际上就是用户会不会读CPU的特性表,以及会不会和自己的常用任务相匹配的技能缺失了。
同时,还有一个很重要的要点——现在是一个分水岭时期。很多AI应用开始逐步的由云端转到本地运行。最近几个月iN给朋友的购买建议其实都是在选择带有NPU的处理器。
原因则在于现在个人计算机上NPU的适配应用还是不太普及,但在一些特殊的任务下NPU本身在适合的框架下已经可以突出其存在意义了。
尤其是在一些小机器上,NPU的价值对于AI来说远高于一块中端显卡的价值度。