CPU为什么都是双数的核心双数线程?
CPU本质是在一块指甲盖大小的硅片上用光刻机刻出来的超大规模集成电路。
工程师在设计的时候,一个核心的运算单元、缓存结构、控制逻辑,都是十分复杂的电路网络。
当工程师要把它从一个变成两个、四个、八个的时候,最简单的办法是就是复制粘贴。
但这的复制粘贴不是Ctrl+C那么简单,而是做"镜像对称"。
工程师会把一个核心的设计图直接镜像翻转,然后放在旁边,这样两个核心之间的数据互联路径最短、延迟最低、布线也最整齐。一个核心正着放,旁边的反着放,更好严丝合缝。
所以,当你看到2核、4核、8核这种典型的2的幂次时,那基本就是镜像复制大法一路裂变出来的。
此时有聪敏的知友问了?六核心不是2次幂,怎么排列分布的呢?
6核其实更接近于"2+2+2"或者"3+3"的组合。
很多6核芯片,其实是把一个8核芯片上的两个核心屏蔽掉得来的,或者是由两组"三核集群"拼成的。
而"3"这个奇数在单个集群里其实非常不便,因为三角形布局会导致核心之间的通讯距离不一致,总有一个核心离另外两个更远,延迟就高了。
那厂商肯定白白不会屏蔽好的核心,于是如下:
生产CPU用的硅晶圆,纯度要求99.999999999%,但在原子尺度上想做到完美无瑕几乎不可能。所以工程师设计了一个8核的芯片,光刻出来之后一测试,发现第5个核心有瑕疵、频率上不去,或者缓存有坏块。
难道这块价值几千美金的硅片就直接扔了?这时候厂商的骚操作就来了:屏蔽掉坏的那个,再顺手屏蔽掉一个好的,凑成偶数,当6核卖。
那为啥不屏蔽一个坏的,直接当7核卖?这不就多一个核心给消费者吗?
听起来挺良心的,对吧?但在厂家眼里,这事儿可没那么容易:
首先,但产品线划分就十分不明确。一个8核芯片,屏蔽2个坏核,或者故意屏蔽2个好的,变成6核,这一下就跟自家顶级的8核拉开了性能差距。如果你搞出个7核,性能跟8核差不太多,但价格又卖不上8核的价,那谁还买利润更高的8核?等于是自己打自己。
更关键的是,如果卖7核,意味着市场上同时存在8、7、6、5等多种核心数的产品,供应链、驱动优化、BIOS适配、操作系统调度全得改。
最简单高效的做法就是只做偶数核心。只要坏了奇数个核心,就再屏蔽一个凑成偶数,确保流水线上只产出4、6、8这种标准型号,直接整个制造和销售的链条成本降到最低。
当年AMD当年出过"三核"处理器,把四核屏蔽一个核心,用来打价格战,专打英特尔的双核。
结果因为操作系统和软件对"奇数核"的调度优化极其蛋疼,要么一个核闲着,要么负载分配不均,用户体验并不好。从那以后,整个行业就彻底锁死了"偶数信仰"。