1. 多核处理器概述:从单核到多核的演进

各位同学,咱们今天聊聊多核处理器。说实话,我入行那会儿,单核还是绝对的主流。那时候大家拼的是主频,谁家频率高谁就牛。但后来呢?频率上不去了,功耗墙摆在那儿,再往上堆频率,芯片能煎鸡蛋了。

为什么会这样?我给你们算笔账。动态功耗跟频率的三次方成正比,频率翻倍,功耗翻八倍。你想想看,这谁顶得住?所以业界开始转向——不拼频率了,拼核数。

1.1 从单核到多核的演进

单核时代,处理器靠指令级并行(ILP)来提升性能。流水线、超标量、乱序执行,这些技术我当年都折腾过。但ILP的天花板很明显,程序里真正能并行执行的指令就那么几条。

我记得2005年左右,Intel的Pentium 4 Prescott核心,频率冲到3.8GHz,功耗飙到130W。结果呢?性能提升微乎其微。从那以后,双核、四核开始普及。说白了,这是被物理规律逼出来的路。

核心观点:多核架构的本质,是用多个相对简单的核心,替代一个复杂到极致的单核。用面积换性能,用并行换频率。

演进路径大致是这样的:

  • 单核→双核:2005-2007年,桌面和服务器开始普及双核
  • 双核→四核:2008-2010年,四核成为主流
  • 四核→众核:2010年后,GPU、AI芯片开始走众核路线,几十上百个核心

1.2 多核架构的驱动力

驱动力其实就三个字:功耗、性能、面积。我一个个说。

第一,功耗墙。前面提到了,频率上不去。你想想看,一个4GHz的单核,功耗可能比两个2GHz的双核还高,但性能呢?双核跑并行任务时完胜。我在项目中遇到过,客户非要追求高频,结果散热方案成本翻了三倍,得不偿失。

第二,应用需求。现在的软件越来越吃并行。视频编解码、3D渲染、科学计算、AI推理,这些任务天然适合并行。你拿单核去跑,用户等得花儿都谢了。

第三,工艺红利。摩尔定律虽然放缓了,但晶体管密度还在涨。多出来的晶体管怎么办?堆核心是最直接的办法。我建议你们关注一下,现在7nm、5nm工艺下,一个芯片上放几百个核心都不稀奇。

避坑指南:我曾经犯过一个错误——以为核数越多性能越好。后来发现,如果软件不支持并行,多核就是摆设。所以做架构设计时,一定要先想清楚目标应用场景。

1.3 多核处理器的分类:同构与异构

多核处理器分两大类:同构异构。这俩概念,我建议你们一定要吃透。

1.3.1 同构多核

同构,就是所有核心一模一样。每个核心的指令集、微架构、缓存大小都相同。典型的例子:Intel的Core i7,所有核心都是x86架构,完全对称。

优点很明显:

  • 编程简单:任务可以均匀分配到任意核心上
  • 负载均衡:操作系统调度起来很轻松
  • 设计复用:一个核心设计好,复制粘贴就行

缺点呢?

  • 能效差:跑轻量任务时,大核心浪费功耗
  • 灵活性低:不适合专用加速场景

我记得做服务器芯片时,客户要求所有核心必须同构,因为他们的软件跑在Linux上,调度器对异构支持不好。嗯,这里要注意,同构虽然简单,但未必是最优解。

1.3.2 异构多核

异构,就是核心不一样。典型的例子:ARM的big.LITTLE架构,大核跑重负载,小核跑轻负载。还有手机SoC,CPU、GPU、NPU、DSP,全是异构的。

我给你们列个表,对比一下:

特性 同构多核 异构多核
核心类型 完全相同 不同架构/不同性能
编程难度 高(需要任务分配)
能效 一般 优秀(按需调度)
典型应用 服务器、桌面 手机、嵌入式、AI

异构架构的驱动力,说白了就是能效比。你想想看,手机待机时,用大核跑系统任务,电池能撑多久?肯定不行。所以用小核跑后台,大核跑前台,这才是正道。

注意:异构架构的编程模型是个大坑。我曾经在项目里,因为任务分配不均,导致大核忙死、小核闲死,性能反而比同构还差。所以做异构设计时,一定要考虑好调度策略。

1.4 我的个人经验总结

做了十几年芯片架构,我最大的感受是:没有银弹。同构有同构的好,异构有异构的妙。关键看你的应用场景。

如果你做通用计算,比如服务器、桌面,同构更合适。因为软件生态成熟,调度简单。但如果你做移动设备、AI加速,异构是必然选择。因为功耗和性能必须兼顾。

最后,我给你们一个建议:做架构设计时,先问自己三个问题——

  1. 目标应用是什么?
  2. 功耗预算有多少?
  3. 软件团队能搞定异构调度吗?

想清楚这些,再决定用同构还是异构。别一上来就堆核数,那是新手常犯的错。

好了,这一章就到这里。下一章我们聊聊缓存一致性,这可是多核架构里的老大难问题。