问题从哪儿来
为什么我们看到的 CPU 核心数几乎总是 4、8、12、16,而不是 7、11 或 13?这背后究竟是严格的技术限制,还是一种延续多年的行业默契?
先看制造与对称性
技术原因确实存在,而且不止一个。
首先是芯片布局和制造良率。CPU 核心在硅片上通常按照对称的网格排列,比如 2×2、2×4、4×4 这样的结构。这种布局更容易设计、验证和再生产。如果突然做一个 7 核心的处理器,设计人员就不得不面对一个核心无处安放的布局难题:是排成 3×3 空出两个位置,还是做成非对称结构?
非对称结构不是不能做,但它会带来一连串后续问题。比如缓存访问路径不均匀、部分核心离内存控制器更远、功耗分布不平衡等。这些都是芯片设计里要尽量避免的不确定性。
双通道、四通道内存也偏好偶数核心。 当内存控制器把数据分发到不同核心时,2 的幂次方数量会让地址映射、缓存分片和互联网络更加自然。8 核心、16 核心恰好可以整齐地划分多个内存通道和缓存组,而 7、11、13 这样的数量会让很多整除关系变得别扭。
历史路径依赖同样重要
为什么行业最终稳定在 4、8、12、16 这些数字上?一个关键节点是多核心早期的“双核包”策略。
当年 AMD 和 Intel 在从单核转向多核时,优先选择在一个基板上封装 2 个、4 个核心。之后的设计也基本沿着 2、4、6、8、12、16 这样的路径演化。6 核心虽然不完全是 2 的幂,但 2×3 的布局仍然能保持正方形或长方形网格,设计成本可控。
一旦软件生态、操作系统调度器和主板 BIOS 都围绕这些核心数进行优化,后续的处理器就很难突然跳到一个孤立的奇数配置上。即便有厂商愿意做 7 核,散热器、供电设计和服务器机箱的标准话术也早就被偶数核心占满,市场教育成本太高。
软件调度才是真正的隐形门槛
真正让奇数核心“不划算”的,是操作系统和编译器多年形成的假设。
现代操作系统的任务调度器通常默认对称多处理模式,也就是把任务均匀地分给每个核心。8 个核心里跑 8 个线程,每个核心分到一个线程,负载均衡几乎不需要额外计算。如果在 7 核 CPU 上跑同样的 8 线程任务,调度器就会面临一个不断变化的尾差:总有某个线程需要等待,而某些核心却要处理两份工作。
虽然调度算法可以处理这种非对称情况,但这会引入额外开销。在数据中心场景下,一点点调度延迟都会被成千上万台服务器放大。
所以这是技术限制,还是行业惯性
两者都有。
技术限制决定了早期选型更容易朝着对称、偶数、2 的幂方向走;行业惯性则让这些数字逐渐成为“理所当然”。考虑到制造、互连、内存通道、软件调度和产品线的整体成本,厂商自然会继续选择 4、8、12、16,而不是冒险做一个 7 或 11 核心的产品。
换句话说,没有哪条物理定律禁止 7 核 CPU,但在实际工程与商业环境里,做出来既不经济,也不优雅。
|