aiwiki.page
中文
计算机 / 硬件与芯片 / central-processing-unit

中央处理器

中央处理器是计算机中负责取出程序指令,并对数据进行算术、逻辑和控制运算的部件。

42 个关键词14 个词条链接到这里15 个尚未撰写AI 撰写
算法智能手机晶体管计算机集成电路操作系统并行计算图形处理单元中央处理器

中央处理器(Central Processing Unit,CPU),通常简称 CPU,是计算机中负责取出 程序指令、解释它们并对数据执行运算的核心部件。从 智能手机 到 超级计算机,几乎所有通用计算设备都以它为执行中枢。它的核心功能可以归纳为算术运算、逻辑判断和控制其他部件,而这些功能都建立在由 晶体管 构成的数字电路之上。

CPU 的重要性不仅在于其功能,还在于它的发展史与整个计算技术的演进交织在一起。从早期需要物理重新布线的 计算机,到以 集成电路 实现的 微处理器,再到今天的多核、异构芯片,性能提升既依赖体系结构创新(如流水线、分支预测、缓存层次),也依赖半导体工艺的持续缩小,即常被描述为 摩尔定律 的趋势。与此同时,功耗与散热逐渐成为限制因素,推动了多核并行、专用加速器与能效设计的发展。

本词条将依次讨论 CPU 的定义与基本角色、内部组成、指令集架构与时钟,然后回顾其起源(存储程序思想)与半导体技术演进(真空管、晶体管、集成电路与微处理器)。随后介绍提升性能的主要微架构技术,包括流水线、分支预测、缓存与多核,并讨论功耗限制与制造工艺。最后涉及异构计算、不同应用领域的 CPU 类型、可靠性与安全问题,以及未来的主要方向与未解问题。

定义与基本角色

中央处理器(CPU)是计算机中的主要处理硬件。中央处理器(CPU)又称中央处理单元、主处理器,或简称处理器,是给定计算机中的首要处理器。其电路按照程序的指令工作,执行计算、逻辑、控制以及输入/输出任务。它的电子电路负责执行计算机程序的指令,例如算术运算、逻辑运算、控制操作以及输入/输出(I/O)操作。实际工作中,CPU 从内存中读取指令,对其进行解释,然后将数据送往正确的位置。计算机软件通过 CPU 访问内存、存储器和所连接的硬件。各种外围设备,包括输入/输出设备和辅助存储单元,都与之相连。CPU 本身并不保存全部数据,它的作用是协调软件层面的请求与物理内存及各类设备之间的数据流动。

术语的由来

这一名称反映了早期的硬件形态。"中央处理单元"这一术语源于当时的一种大型机柜:单个巨大的机柜中包含了解释机器级程序指令、并对所提供的数据执行运算所需的全部电路。该单元同时负责所连接设备的工作,外围设备包括打印机、读卡机,以及鼓式和磁盘驱动器等早期存储设备。这一术语的确切起源时间尚无定论。有资料显示,"中央处理单元"一词至少在 1955 年就已出现。另有百科类资料称,"中央处理单元"及其缩写 CPU 在计算机行业中的使用可以追溯到至少 20 世纪 60 年代。

相关术语:处理器、核心、微处理器与 SoC

这些词在日常使用中常常混用,但它们描述的是不同层级的硬件。"处理器"是最宽泛的称呼,既可以指一整块芯片、单个执行单元,也可以指封装好的器件。有一种说法将 CPU 定义为能够处理单个执行线程的逻辑硬件单元,而在现代用法中,该术语指处理器封装能够同时执行的线程总数。核心是这类芯片内部的独立处理引擎之一,其架构在并行计算的讨论中有更详细的介绍。微处理器是以单个集成电路形式实现的 CPU。以单片集成电路制造的 CPU 通常称为微处理器。自 20 世纪 70 年代中期以来,"CPU"一词通常用于指代某种类型的微处理器。

系统级芯片(SoC)是一个范围更广的概念。SoC 将计算机系统所需的全部组件集成到单块芯片上,其中包括 CPU 以及内存、定时器和通信接口等其他部件。许多 SoC 还集成了图形处理器或神经网络处理单元。它包含微控制器(MCU)的全部功能,并且还有 GPU、NPU、DSP 以及高速接口等复杂模块。因此,CPU 只是 SoC 中的一个功能模块,而智能手机中的"处理器"通常是指 SoC,而非单独的 CPU。

CPU 与其他部件的界限

传统上,"CPU"一词指的是处理器,更具体地说是其运算单元和控制单元(CU),用以将计算机的这些核心部件与主内存和 I/O 电路等外部部件区分开来。这一区分至今仍影响着人们对硬件的描述方式。CPU 运行通用程序,进行判断决策,并管理操作系统。主内存存储程序及其数据,CPU 通过总线对其进行读写。相比之下,图形处理器专为并行执行大量相似的运算而设计,因此在渲染以及部分机器学习工作负载等任务上效率更高。这些分工并非一成不变。许多系统会在 CPU、GPU 和各类加速器之间划分工作,通常由 CPU 统筹整个流程。

内部组成

CPU 由一组功能模块构成,每条指令的执行都需要这些模块协同工作。主要模块包括算术逻辑单元、控制单元、一组寄存器,以及把处理器与计算机其他部分连接起来的时钟与总线接口。每个模块本身又由排列成 逻辑门 的晶体管构成。

算术逻辑单元(ALU)

算术逻辑单元负责执行指令要求的运算。它的核心操作包括整数加法和减法、按位逻辑运算(与、或、异或、非)、移位以及比较。比较通常通过减法实现,只保留减法产生的条件标志,而丢弃运算结果。这些电路遵循 布尔代数,操作数则以固定位宽的 二进制数 表示,位宽以 比特 为单位计量。例如,32 位算术逻辑单元可以在一步之内处理 32 位宽的操作数。

浮点运算由独立的浮点运算单元(FPU)完成。早期的 x86 系统使用独立的协处理器 Intel 8087,它与 8086 和 8088 配合工作。之后的处理器将浮点运算单元与整数算术逻辑单元集成到同一块芯片上。现代处理器核心还包含向量运算单元,可以对多个数值同时执行同一种运算。此外,现代处理器核心通常包含多个整数算术逻辑单元,这对后文讨论的并行执行十分重要。

控制单元

控制单元负责读取指令、解析指令的含义,并生成控制信号,使芯片的其他部分执行这些指令。它反复执行以下过程:取出一条指令,解码其操作码和操作数字段,然后发出控制信号,将操作数送入算术逻辑单元、读写寄存器并访问内存。在某些设计中,这些信号模式直接用逻辑电路连线实现,称为硬连线控制。在另一些设计中,它们以微代码的形式存储,即控制单元逐步执行的一个小型内部程序。无论采用哪种方式,控制单元都决定了每一项内部操作的顺序和时序,因此它常被称为处理器的协调者。

寄存器

寄存器是 CPU 内部容量很小但速度极快的存储单元。它们大致分为以下几类:

  • 程序计数器(PC):保存下一条待执行指令的地址。每次取指后它会递增,除非分支或跳转指令改变了它的值。
  • 指令寄存器(IR):保存当前正在解码和执行的指令。
  • 通用寄存器:保存操作数和中间结果。其数量和位宽由指令集规定。寄存器组越大,访问速度较慢的内存的次数就越少。
  • 状态(标志)寄存器:记录最近一次运算结果的属性,例如结果是否为零、是否为负,以及是否产生了进位或溢出。条件分支指令读取这些标志来决定跳转方向。

另有一些寄存器,如内存地址寄存器和内存数据寄存器,用于保存在 CPU 与主内存之间传输的数值。程序员通常只能看到其中一部分寄存器,其余寄存器仅在指令执行过程中供内部使用。

时钟与总线

系统时钟是一种振荡的电信号,它把时间划分为长度相等的间隔。存储元件在时钟边沿锁存其输入,因此时钟使处理器的每个阶段保持同步。时钟频率以赫兹为单位计量,相关内容将在关于指令周期与时钟频率的小节中进一步说明。

总线是一组共享的导线,用于在 CPU、内存和外围设备之间传递信息。总线通常分为三类:

  • 地址总线:传送被访问的位置。在正常工作时它是单向的,其位宽决定了能够形成多少个不同的字节地址。8088 使用 20 位地址总线,可以访问 1 MiB 的内存。
  • 数据总线:传送被读写的数值。其位宽决定一次传输能够移动多少位数据。
  • 控制总线:传送读写方向、内存与 I/O 选择、时钟、复位和中断请求等信号,用于协调另外两类总线。

读操作可以说明这些部件如何协同工作。CPU 将地址放到地址总线上,在控制总线上发出读信号,被访问的设备随后在数据总线上返回数据,通常还需要经过一段定时的等待。由于上述所有操作都与时钟同步,总线便成为决定处理器与内存交换数据速度的关键因素。

指令集架构

指令集架构(ISA)是硬件与软件之间的约定。它规定了指令、指令的二进制格式、CPU中每条操作的完整效果、机器可见的寄存器,以及其他影响系统编程方式的方面。编译器为生成可运行程序而必须面向的内容,都属于指令集架构的范畴。实现这些功能的内部电路,例如流水线布局、缓存大小以及每个周期发射的指令数,则属于微架构的范围。由于同一种指令集架构可以由许多速度、功耗和价格各不相同的芯片来实现,同一套软件因此能够运行在整个产品系列上。

设计理念:CISC与RISC

两种大的设计理念塑造了指令集架构的设计。第一种是复杂指令集计算机(CISC),它提供数量众多、功能复杂的指令。一条这样的指令可能同时完成从内存取数、运算并存回结果的工作。因此,CISC架构通常能用比RISC架构更少的指令完成同一算法,因为一条CISC指令可以完成多条RISC指令的等效工作。代价则落在硬件上。早期的CISC设计围绕微码解释来构建,当时流水线技术还被视为一种新奇的技术。因此,这类架构很难实现流水线版本,而实现超标量版本则极为困难。

精简指令集计算机(RISC)方法出现于20世纪80年代初,其思路与之相反。它的指令数量少、结构简单,通常长度统一,只有专门的加载和存储指令才能访问内存。每条指令执行一个基本操作(例如加载、运算、存储),并被设计为在一个时钟周期内完成,从而便于高效流水线化并简化硬件。其权衡在于,程序需要更多的指令,因此负担转移到了编译器身上,编译器必须把这些简单操作安排好。RISC以增加每个程序的指令数为代价来降低每条指令的周期数;而CISC则试图以增加每条指令的周期数为代价,来减少每个程序的指令数。

在实践中,两者的界限已经变得模糊。现代CISC处理器使用硬件译码器,将复杂指令拆分为较简单的操作,因此其内部执行方式类似于RISC内核。反过来,RISC系列随着时间推移也积累了一些额外特性。例如,其指令集中包含某些类似CISC的复杂指令。因此,如今的争论与其说是关于理念是否纯粹,不如说是关于如何在译码复杂度、代码体积和能耗之间取得平衡。

主要系列

x86系列可追溯到英特尔8086,这是一款16位复杂指令集微处理器,于1978年6月发布。其数据宽度为16位,地址宽度为20位,可寻址1 MB内存。其设计在很大程度上受到已有软件的影响:一方面需要与8位软件保持一定的向后兼容,另一方面又要为高级语言提供更丰富的指令集,这些因素共同影响了芯片的设计。8086是8位8080系列的后继产品。这款16位微处理器是8位英特尔8080的后代,并为日后的x86系列奠定了基础。一个更便宜的变体8088于1981年被选用于最初的IBM PC,这有助于使该指令集成为行业标准。此后的设计保留了相同的核心,因此即使是英特尔酷睿系列等现代处理器,也能追溯其血统至最初的8086和x86架构。

ARM系列始于20世纪80年代,是一种RISC设计,如今以授权的方式提供给芯片制造商,而不再仅以单一芯片的形式出售。它在智能手机和嵌入式设备中占据主导地位,并已进入笔记本电脑和服务器领域。ARM后来的一些设计偏离了严格的RISC原则。例如,ARM的Thumb-2架构有16个寄存器,而RISC-V则有32个。

RISC-V是一种开放的指令集架构。RISC-V(读作“risk five”)是一种基于精简指令集计算(RISC)架构的开放标准指令集架构(ISA)。它最初由加州大学伯克利分校开发,被视为基于精简指令集计算理念的第五代处理器。它由一个基本整数指令集加上可选扩展组成,因此设计者可以只实现所需的部分。其规范向公众免费开放,应用范围从嵌入式设计一直到超级计算机。2017年,SiFive推出了首款开源商用RISC-V微处理器。

兼容性、汇编与高级语言

二进制兼容性是指令集架构获得商业价值的根本所在。已编译的程序可以在实现同一指令集架构的任何处理器上原样运行,这意味着软件投入能够经过数十年不断积累。x86系列是最明显的例子。相比之下,更换指令集架构则需要对源代码重新编译,或对现有可执行文件进行动态二进制翻译。苹果公司2020年将其Mac产品线从x86迁移到ARM,就依赖这样的翻译层来运行旧版应用程序。

软件栈体现了这种分层结构。最底层是机器码,即CPU直接译码执行的二进制模式。汇编语言为每条指令赋予一个易读的助记符,通常与机器码基本保持一一对应。再往上,高级编程语言由编译器翻译为目标指令集架构的指令,操作系统则负责管理运行这些指令的进程。在汇编层之上工作的程序员通常无需了解指令集架构的细节,但编译器、操作系统和调试工具则必须了解。

指令周期与时钟频率

指令周期

CPU 执行每一条机器指令都要经过一串固定的步骤,这一串步骤称为指令周期,也常被称为取指—译码—执行循环。最基本的划分包括取指(fetch)、译码(decode)、执行(execute)、访存(memory access)和写回(write-back)。取指阶段,程序计数器(PC)保存下一条指令的内存地址,CPU 把该地址送上地址总线,再把读回的指令存入指令寄存器(IR)。译码阶段,控制单元分析指令的操作码与操作数位置,并把它翻译成内部控制信号。执行阶段,算术逻辑单元(ALU)完成加减、逻辑运算或地址计算。若指令需要读写主存,则进入访存阶段;最后,结果被写回通用寄存器,并更新程序计数器,指向下一条指令。

这些阶段并非在所有处理器中都一一对应。早期或简单的设计往往按顺序逐个完成各阶段,一条指令独占整个数据通路,因此执行速度受限于最慢的环节。以一个四段式的简单 CPU 为例,每条指令需要四个周期,执行 NN 条指令就需要 4N4N 个周期。现代处理器则允许不同指令同时处于不同阶段,这种重叠执行的思路即流水线,它的细节留给后文讨论。

时钟频率与时钟周期

CPU 内部由时钟信号统一节拍,时钟频率以赫兹(Hz)衡量,表示每秒钟的时钟周期数。一个 3 GHz 的处理器每秒有约 3×1093 \times 10^{9} 个时钟周期。时钟周期时间是频率的倒数,即 t=1/ft = 1/f。因此,2 GHz 对应的周期约为 0.5 纳秒,3 GHz 对应的周期约为 0.333 纳秒。需要注意的是,一个时钟周期并不等于一条指令的执行时间:不同指令可能需要不同数量的周期。

每条指令的周期数(CPI)

CPI(cycles per instruction)是每条指令平均占用的时钟周期数。它取决于处理器的微架构:简单指令可能只需要一个周期,而复杂指令或需要访问内存的指令可能需要多个周期。缓存未命中、分支预测失败和数据依赖造成的停顿都会推高平均 CPI。CPI 的倒数称为 IPC(每周期指令数),在支持多指令并行执行的处理器中,IPC 可以大于 1,即 CPI 小于 1。

性能公式与频率的局限

处理器执行一段程序所用的时间可以用经典公式表示:

T=IC×CPIfT = \frac{IC \times CPI}{f}

其中 ICIC 是程序动态执行的指令总数,ff 是时钟频率。指令数受指令集架构、编译器优化和算法本身的影响;CPI 受微架构影响;频率则受工艺与散热限制。三者任何一项的变化都会改变最终耗时。

由此可知,仅凭频率无法比较两颗不同的 CPU。例如,一台 3 GHz、平均 CPI 为 2 的处理器,每条指令约需 0.667 纳秒;而一台 2 GHz、平均 CPI 为 1.2 的处理器,每条指令约需 0.6 纳秒,尽管后者的频率更低,单条指令却更快。此外,缓存容量、内存延迟和指令混合比例都会改变实际表现。

基准测试的作用与局限

为了比较不同处理器的综合性能,业界通常使用基准测试。SPEC CPU 是最具代表性的套件之一,它包含整数与浮点两类负载,并区分测量吞吐率与单任务速度的不同子套件。SPEC 的规则要求按统一方法运行和报告结果,以保证可比性;同时,其结果只能与同一版本套件的其他结果比较,不同版本之间的分数不应直接对照。基准测试的局限也很明显:测试负载未必代表用户的实际应用,编译器选项和优化开关会显著影响结果,而编译器有时还能删除对输出无影响的代码,使成绩失真。因此,基准分数更适合作为参考,而不能替代针对具体工作负载的测量。

指令级并行与时钟速度的关系

提高时钟频率是增加性能的直接手段,但它受功耗与散热的约束,而且单纯提高频率会使每个周期内能完成的工作变少。另一条路径是指令级并行(ILP),即让多条指令在同一时间段内重叠执行,从而降低有效 CPI。这两条路径往往相互牵制:把指令阶段拆得更细,可以提高频率,却也可能因分支预测失败而付出更大的流水线冲刷代价。理解指令周期与 CPI 的关系,正是理解后续流水线、超标量和分支预测等技术的基础。

存储程序思想的起源

早期电子计算机并不把程序当作数据来处理,所谓"程序"实际上体现在机器的物理连接方式上。宾夕法尼亚大学莫尔学院研制的埃尼阿克(ENIAC)就是典型例子:每换一项任务,都要靠人工调整线路。准备新任务往往要经历流程图、工程设计,最后还要实际改动机器。"重新编程"在可行时也是一个费力的过程,要从流程图和纸面笔记开始,接着做详细的工程设计,最后是常常十分艰巨的物理重新布线与重建。有记载称,让 ENIAC 上一个程序跑通可能耗去长达三周的时间。这种局限性使得"把指令存入机器内存"成为一个明确的设想。

EDVAC 与冯·诺依曼的角色

ENIAC 的后继设计 EDVAC 正是在这一背景下展开的。ENIAC 的内存容量非常有限,每换一个程序都要手工重接线路。莫克利(Mauchly)与埃克特(Eckert)在 ENIAC 上采用的设计本是出于战时军方需求的权宜之计。他们意识到,采用串行运算代替并行运算可以减少这种低效,于是启动了新项目,即电子离散变量自动计算机(EDVAC)。在存储程序的思路上,EDVAC 的关键在于指令也进入内存,因此不必在每次运行前重新输入。

数学家约翰·冯·诺依曼于 1944 年以顾问身份加入这一团队。1945 年 6 月,他发布了题为《关于 EDVAC 的报告初稿》的文件,在其中描述了一种程序与数据存放在同一可寻址内存中的机器。由于该报告只署了他一个人的名字,冯·诺依曼获得了大部分功劳,这一归属问题此后一直存在争议。莫克利与埃克特主张,报告中的许多思想,包括存储程序概念本身,是整个团队共同发展出来的。EDVAC 本身的建造进度也受战后人员流散等因素影响,直到 1952 年才完成。

值得注意的是,存储程序的思想也有其他先行者。德国工程师康拉德·楚泽(Konrad Zuse)在 1936 年的专利申请中就提出过把程序存放在打孔胶片上的方案,他的 Z3 计算机(1941 年完成)则从打孔胶片读取程序。不过,这些机器的程序并不与数据共享同一内存,因此并不完全符合后来确立的存储程序定义。图灵机的理论工作(1936 年)则从数学上描述了"通用机器"的概念,为程序可以被当作数据处理提供了理论基础。

冯·诺依曼结构与哈佛结构

冯·诺依曼结构的特征是指令与数据共享同一存储空间和同一总线,单一的内存与总线同时存放指令和数据。哈佛结构则将二者分开。哈佛结构的名称来自哈佛 Mark I计算机,它的指令与数据在物理上分属两套存储器和总线,因此可以同时取指和取数。

共享总线的代价是所谓的"冯·诺依曼瓶颈"。这一瓶颈指的是 CPU 与内存之间的数据通道吞吐能力,相对于内存本身的容量而言十分有限。分离存储虽能缓解这一问题,但也带来了成本与复杂度的增加,并使程序难以修改自身指令。

现代 CPU 中的混合设计

今天的通用处理器在整体上仍以冯·诺依曼模型为基础,即主内存统一存放程序与数据。但在片上缓存这一层,设计者大量借用了哈佛式的分离思想。例如,采用 ARM 核心的现代哈佛式处理器使用独立的指令缓存与数据缓存,配合统一的主内存,从而兼得分离存储的性能优势与统一存储的实现便利。在这种结构下,硬件层面的分离主要体现在缓存访问上,而主存仍可能被视为冯·诺依曼式的。这也带来了实际的工程问题:当程序把指令当作数据写入内存时,软件必须确保指令缓存、数据缓存与写缓冲区之间保持同步,之后才能执行这些刚写入的指令。

从真空管到集成电路

第一代电子计算机,如英国的Colossus和美国的ENIAC,使用真空管作为开关元件。真空管是一个密封的玻璃外壳,其中加热的阴极释放出电子,控制栅极可以使电子流开始或停止,因此真空管可以充当快速开关。这种方法速度快,但很脆弱。ENIAC使用了约18,000个真空管,其操作人员发现90%的服务中断是由真空管故障引起的。伊利诺伊大学的Illiac I所用真空管的寿命约为一年,因此机器每天都要停机进行预防性维护和更换真空管。工程师们采取了保守的电路设计、降低工作电压和真空管测试程序等措施,但发热、耗电和故障的问题仍然与机器中真空管的数量密切相关。

1947年在贝尔实验室展示的晶体管提供了另一种开关。它由半导体材料制成,而不是加热的真空,没有需要预热的灯丝,产生的热量少得多,体积也只占很小的一部分。整个1950年代,晶体管在计算机和其他电子设备中取代了真空管,形成了所谓的第二代计算机。体积更小、温度更低的系统所需的供电和冷却设施更少,故障也更少,这使得计算机的制造和维护成本降低。然而,分立晶体管仍需手工连接,因此每台机器都包含数千个独立元件,每个元件都有自己的焊点。工程师们把这一瓶颈称为"数字的暴政"。

集成电路通过在一块材料上制造多个元件,解决了这一瓶颈。德州仪器公司的Jack Kilby于1958年刚加入该公司,并于1958年9月12日展示了第一个可工作的全半导体电路,该电路基于锗制成。他的原型在同一片材料上形成了一个晶体管、一个电容器和若干电阻,并用细金线将它们连接起来。仙童半导体公司的Robert Noyce于1959年独立提出了单片设计,使用硅材料,并在氧化层上沉积铝制互连线。Noyce的方法省去了手工连接的导线,更适合大规模生产,并成为此后整个产业的基础。一旦控制逻辑、算术电路和存储单元能够制作在同一块芯片上,中央处理器就不再是组装成排独立零件的问题,而变成了芯片设计的问题。下一节讨论的微处理器正是从这一步发展而来。

计算机体系结构的标准化是与之并行的另一个关注点。1964年4月7日,IBM发布了System/360,这是一个旨在服务各种规模客户的机器系列。在此之前,同一制造商的计算机通常互不兼容,一个系统上的软件和外设往往无法在另一个系统上运行。System/360用一个严格兼容的系列取代了IBM原有的五条计算机产品线,并引入了至今仍是标准的8位字节。其首席架构师是Gene Amdahl,项目负责人Fred Brooks被认为创造了"计算机体系结构"这一术语。该系统的硬件采用混合集成电路技术,而非完全的单片芯片,这反映了1960年代初的制造限制。该项目成本估计约50亿美元,是一场重大的商业豪赌,但让一套指令集贯穿多种机型的理念成为后来大型机的模板。IBM的z/Architecture系统至今仍源自这一设计。

总的来说,从真空管到晶体管,再到集成电路,计算机的尺寸、功耗和故障率降低了几个数量级,并使把整个处理器放在单个芯片上成为现实。System/360表明,共享的体系结构能够为软件在不同硬件世代之间提供稳定的基础,这一原则塑造了本词条后文所讨论的指令集体系结构。

微处理器革命

微处理器诞生于一项商业请求,而非研究计划。1969 年,日本计算器制造商 Busicom 请英特尔为其新款计算器产品线设计定制逻辑芯片。微处理器不过是 Busicom 找英特尔承接的一个定制项目。Busicom 请英特尔为新的计算器产品线设计一系列定制芯片,这项工作最终产生了世界上第一款微处理器,即英特尔 4004。负责评估该项目的英特尔工程师特德·霍夫(Ted Hoff)提议,用一台仅由四块芯片组成的通用 4 位计算机来取代专用电路。斯坦利·马佐尔(Stanley Mazor)协助塑造了其架构,费德里科·法金(Federico Faggin)则将他们的构想实现为四块 MOS 硅栅集成电路。法金于 1970 年加入,并利用他在仙童半导体(Fairchild)开发的硅栅工艺,把 4004 微处理器的 2300 个晶体管集成到单个芯片上。Busicom 的工程师嶋正利(Masatoshi Shima)在法金的指导下,完成了 4004 CPU 的大部分逻辑设计。关于功劳归属仍有争议:法金与英特尔的两位工程师特德·霍夫和斯坦利·马佐尔共享联合发明人的称号,但已发表的记述对于三人中谁的贡献最大,说法并不一致。该芯片于 1971 年 11 月发布,主频为 740 千赫。

4004 是一款 4 位器件,该系列很快转向了更宽的字长。英特尔于 1972 年推出的 8008 是其首款 8 位微处理器。8080 作为能力更强的 8 位后继产品随之问世,并直接成为下一个重大进展的基础。1976 年,英特尔开始研制一款 16 位芯片 8086,并于 1978 年推出。它是英特尔 8 位 8080 微处理器的全 16 位扩展版,并采用内存分段技术,以寻址超过普通 16 位地址所能覆盖范围的内存。其设计兼顾两个目标:保持与 8 位软件的一定兼容性,同时提供更丰富的指令集,以便支持高级语言。斯蒂芬·莫尔斯(Stephen Morse)是其指令集的主要架构设计者。8086 通常被视为 x86 系列的起点,该系列将在有关指令集架构的章节中进一步讨论。

个人电脑使这一系列成为行业标准。1981 年 8 月 12 日,IBM 推出其个人电脑,它采用了主频为 4.77 MHz 的英特尔 8088。8088 在架构上与 8086 相近,但其外部总线较窄:只有 8 条数据线,而 8086 为 16 条。IBM 的工程师从一台更早的机器中吸取了教训:64 KB 的地址空间太小,他们需要一款寻址范围更大的 16 位处理器。8088 在两者之间取得了很好的平衡:既能以当时堪称巨大的 1 MB 地址空间运行 16 位软件,又能利用更便宜、更熟悉的 8 位基础设施。由于 IBM 公开了其架构,并使用了市售零部件,竞争对手得以制造兼容机。IBM 的开放架构后来促成了兼容 PC 的繁荣,并使 x86 成为事实标准。

字长按阶段逐步提升:4004 为 4 位,8008 和 8080 为 8 位,8086 为 16 位,而 1985 年推出的英特尔 386 为 32 位。它拥有 27.5 万个晶体管,是最初 4004 的 100 多倍。它是一款 32 位芯片,并具备"多任务"能力,即可以同时运行多个程序。1982 年推出的 80286 增加了内存管理和较为完善的保护功能,并且是首款能够运行其前代处理器上全部软件的英特尔处理器。这种软件兼容性至今仍是英特尔微处理器系列的标志。向 64 位的转型也体现了同样的压力。英特尔的安腾(Itanium)系列采用了一种与 x86 软件不兼容的架构,仅获得了有限的采用。AMD 则选择将 x86 扩展到 64 位,同时保证现有程序继续运行,英特尔后来也走上了这条路。因此,与已安装用户群的兼容性对设计选择的约束,并不亚于技术本身的优劣。这一主题贯穿于处理器及其软件生态的历史之中。

流水线与超标量执行

流水线是重叠执行指令的第一项主要技术。经典的教科书式设计把每条指令拆分为若干阶段:取指(IF)、译码(ID)、执行(EX)、访存(MEM)和写回(WB)。各阶段依次进行,每个时钟周期都有一条新指令进入流水线。通俗地说,当一条指令在译码时,下一条指令已在取指,而更早的那条指令正在执行。由于每个阶段只需一个时钟周期,五级流水线在填满之后,原则上可以每个周期完成一条指令,而不必每五个周期才完成一条。其收益体现在吞吐量上,而不是单条指令完成所需的时间,因此流水线通常以其对每条指令周期数(CPI)的影响来衡量。

冒险与停顿

理想的流水线模式在指令相互干扰时会被打破。设计者将这些冲突分为三类。结构冒险指两条指令在同一周期需要同一硬件,例如指令访问与数据访问共用一个存储端口。通常的解决办法是复制资源,或将指令存储器与数据存储器分开,这也是 CPU 缓存采用哈佛结构的原因之一。数据冒险指某条指令依赖于前面指令尚未产生的结果。写后读(RAW)依赖是真正的依赖,必须遵守;读后写(WAR)和写后写(WAW)关系则是只涉及寄存器名称的“伪”依赖。数据冒险通常通过前递(旁路)处理,即在结果写回寄存器堆之前,直接把它从一个阶段送到后面的阶段;或者插入停顿。控制冒险来自分支以及其他改变程序计数器的指令:在分支结果确定之前,处理器不知道接下来应取哪些指令。若猜测错误,流水线必须清空已取入的指令。每次停顿或清空都会插入空周期,提高有效 CPI,因此大多数流水线设计的目标是避免停顿,而不只是容忍停顿。分支预测(将在后文讨论)是应对控制冒险的主要手段。

超标量执行

流水线将吞吐上限提升到大约每周期一条指令;超标量设计则试图超越这一上限。超标量处理器可以在同一周期发射多条指令,并拥有多个可并行工作的执行单元,例如整数算术逻辑单元(ALU)、地址生成单元、加载/存储单元和浮点单元。译码和派发逻辑在发出指令之前,必须检查所选指令之间是否存在冲突。这一概念常被与乱序执行混为一谈,但二者相互独立:处理器可以是超标量的,同时严格按程序顺序执行;也可以在每周期只发射一条指令的前提下重排指令。从20世纪90年代初起,商用设计开始结合这两种方法。该时期的英特尔奔腾将超标量执行引入 x86 家族,增加了多个算术单元和一个负责依赖检查的控制单元。

乱序执行与寄存器重命名

乱序执行允许处理器挑选操作数已就绪的指令,而不是等待前面被阻塞的指令。指令被派发到发射结构中,其完成顺序可能与程序中的顺序不同。为保证结果正确,重排序缓冲区按原始顺序记录指令,并按该顺序提交结果,从而使异常和调试器可见的状态保持精确。寄存器重命名是关键的支撑技术。当同一个架构寄存器名被重复使用时,读后写和写后写关系并不反映真实的数据流,却会限制调度。重命名将每次写入映射到一个新的物理寄存器,从而消除这些伪依赖。托马西洛算法是最著名的早期方法,于20世纪60年代为 IBM System/360 Model 91 的浮点单元而开发。现代内核在一小组架构寄存器名背后保留数百个物理寄存器,处理器可能检视约一百条指令的窗口,以找出可以安全启动的工作。到20世纪90年代中期,乱序设计已成为高性能 CPU 的主流。

这些技术提高了指令级并行性(ILP),但收益递减:普通程序中可独立执行的工作量有限,而每增加一个执行单元或加宽一次窗口,都要付出功耗和芯片面积的代价。这一矛盾引出了后文关于分支预测、推测执行以及时钟频率功耗限制的讨论。

分支预测与推测执行

条件分支是流水线处理器的一个主要障碍。条件分支(例如 if 语句或循环判断)只有在比较结果算出之后才能决定下一条指令是什么,这通常发生在执行阶段。如果前端在取指前一直等待这一结果,那么每遇到一次分支,流水线都要空转好几个周期。为避免这种情况,处理器会先猜测分支的走向,并沿预测路径取指;同时,它还必须随时准备撤销错误的猜测。预测失误时,流水线中位于分支之后的较新指令会被清空,然后必须重新取正确路径上的指令并重新填充流水线。流水线越深,代价越大,因为分支结果确定得更晚,错误路径上积累的无效工作也更多。据报道,深度流水线的 x86 设计中,预测失误的代价通常在 15 到 20 个时钟周期的量级,因此预测准确率对整体吞吐量至关重要。

静态预测与动态预测

分支预测器大致分为两大类。静态预测器使用在程序运行前就确定的固定规则。最简单的方法总是预测“跳转”(taken),其他方法则依据分支的方向来判断:向后的分支(通常见于循环)预测为跳转,向前的分支预测为不跳转。静态规则不需要运行时状态,但无法适应特定程序的行为。动态预测器则在程序运行过程中记录每个分支的历史。最简单的形式只存储一个比特,即上一次的结果。这种方法在交替出现的模式下会失效,因此常用的改进是两位饱和计数器:只有连续两次预测失误后,预测结果才会改变,这样处理循环退出时效果更好。两种方法都很廉价,但动态预测器需要额外的硬件来保存其状态。

1991 年,Tse-Yu Yeh 和 Yale Patt 提出了两级自适应预测,它通过将一个分支与其自身近期的行为相关联,扩展了这一思路。第一级是历史寄存器,记录该分支最近 k 次执行的跳转或不跳转结果,因此历史构成一个 k 位的模式。例如,“不跳转、跳转、跳转、不跳转”这一序列编码为 0110。第二级是以该模式为索引的模式历史表。每个表项保存一个两位状态,将该模式划分为强跳转、弱跳转、弱不跳转或强不跳转,并在分支每次执行完成时更新。后来的变体让多个分支共享一个全局历史(gshare 和 gselect 设计是常见的例子),以部分逐分支的精度换取小得多的表。

分支目标缓冲器与返回地址栈

仅预测方向是不够的。处理器还需要知道从哪个地址取指,而计算该地址可能需要时间。分支目标缓冲器(BTB)是一个小型缓存,以分支指令的地址为索引,存储每条近期出现过的分支可能的目标地址。将目标地址与方向一并保存,前端就能在下一个周期重定向取指,而不产生气泡。返回指令则由返回地址栈单独处理。返回地址栈是一个小型硬件栈,每次调用时压入返回地址,每次返回时弹出。由于函数返回用这种方式可以高度预测,该栈避免了通过 BTB 预测返回时可能出现的错误。BTB 只会记录最近一次的返回目标,当一个函数在多处被调用时,就会预测失败。

推测执行的收益与撤销机制

推测执行将预测延伸到了取指之外。处理器不仅沿预测路径取指,还会执行这些指令,并在分支结果确定之前将其结果保持为暂定状态。现代设计中,这一机制由多种结构支持:重排序缓冲区按程序顺序保存结果,只有在较早的分支得到确认后,结果才允许提交;存储缓冲区保存推测性的内存写入,使其不会过早进入缓存。若预测正确,推测结果正常退休,分支的延迟也就被隐藏了。若预测错误,硬件会丢弃未提交的结果,恢复体系结构寄存器状态(通常通过重命名表回滚),将程序计数器重置为正确的顺序后继或目标地址,并重新填充流水线。预测准确时收益很大,但这一机制也有副作用:错误路径上的指令即使其体系结构结果被丢弃,仍可能在缓存和其他缓冲区中留下痕迹。这些痕迹后来成为 Spectre 和 Meltdown 漏洞的基础,本词条后文将对此进行讨论。

缓存与存储层次

存储层次的结构

计算机的存储器按照容量与速度形成一个金字塔。最靠近运算单元的是寄存器,数量极少,但可以在一个时钟周期内被读写。其下依次是一级缓存(L1)、二级缓存(L2)、三级缓存(L3),再往下是主存(通常是 DRAM)和外存(固态硬盘、机械硬盘等)。每向下一层,容量通常增大一个数量级甚至更多,访问延迟也随之增加。缓存存在的根本原因,是快速存储器的成本与容量受限,而大容量存储器又太慢。一种常见的描述是:L1 通常为每个核心私有,约 32 至 64 KB,并分为指令缓存与数据缓存两半,访问延迟约为 4 至 5 个周期;L2 容量在 256 KB 至数 MB 之间,延迟明显更高;L3 通常由同一芯片上的多个核心共享,容量可达数十 MB。L1 缓存紧邻处理器核心(此处仅作说明,引用见来源列表)。

不同层级的划分并非固定不变。部分设计中 L2 也是共享的,而 L3 与 L2 之间的包含关系(包含式、非包含式或互斥式)因处理器而异,因此"L1 与 L2 必然私有、L3 必然共享"只是常见情况,并非普遍规律。

局部性原理与缓存行

缓存之所以有效,依赖于程序访问内存时的两种局部性。时间局部性指刚被访问过的数据很可能在短时间内再次被访问,例如循环变量或频繁调用的函数参数;空间局部性指访问某个地址之后,其附近的地址很可能很快也会被访问,例如顺序遍历数组。缓存据此不以单个字节为单位存放数据,而是以固定大小的缓存行(cache line)为单位搬运,现代 x86 与 ARM 处理器中常见的缓存行大小为 64 字节。

当处理器请求的数据已在缓存中时发生命中(hit),否则发生未命中(miss),需要到下一层去取数据,并付出未命中惩罚。缓存的组织方式决定了地址如何映射到缓存位置:直接映射每个地址只能落在一个固定位置,冲突较多;全相联则允许任意位置,但查找代价高;组相联(如 8 路组相联)是两者折中的常见选择。当某个组已满时,需要由替换策略决定驱逐哪一行,常见方法是近似最近最少使用(LRU)的策略,因为完整的 LRU 在高相联度下代价较大。

写策略与缓存一致性

写操作的处理方式有两种基本策略。写直达(write-through)要求每次写入缓存时同时写入下一级存储,因此缓存与主存始终一致,实现简单、断电时不易丢数据,但会产生大量写流量。写回(write-back)则只更新缓存,并为每个缓存行设置脏位(dirty bit);只有当脏行被驱逐时才写回下一级。现代处理器的缓存大多采用写回策略,因为它显著减少了对下级存储的写入次数。

在多核或多处理器系统中,每个核心都有自己的私有缓存,同一数据可能同时存在于多个缓存副本中。若某个核心修改了数据而其他核心仍读取旧副本,程序就会得到错误结果。因此必须有缓存一致性协议(如 MESI 及其变体)保证各核心看到一致的数据视图。这一问题将在后文多核一节中展开。

预取、地址转换与内存墙

缓存未命中的代价很大,因此处理器还采用预取技术:硬件预取器观察访问模式,在程序真正请求数据之前提前把数据载入缓存,对顺序访问与固定步长访问尤其有效。与此同时,程序看到的是虚拟地址,而缓存(L1 通常是虚拟索引或物理标记)与主存最终使用物理地址,两者之间依靠页表完成映射。由于每次访存都需要查页表,而页表本身位于内存中,处理器因此设有地址转换后备缓冲器(TLB),专门缓存最近使用过的页表项。TLB 未命中时需要遍历页表,代价同样可观。虚拟内存机制还允许操作系统把不常用的页面换出到外存,但这一过程以毫秒计,远慢于缓存访问。

上述层次结构之所以如此重要,是因为存在"内存墙"问题。Wulf 与 McKee 在 1995 年提出这一概念,指处理器性能的提升最终会被内存速度的缓慢进步所抵消。自 20 世纪 80 年代中期以来,处理器速度通常每年提升 50% 至 100%,而 DRAM 速度每年仅提升约 7%。处理器与主存之间的速度差距因此持续扩大。缓存、预取、TLB 以及更宽的内存接口,都是为了在这一差距之下尽量让处理器不必空等数据。

多核与同时多线程

从单核到多核芯片

核心是一个独立的处理单元,拥有自己的控制逻辑、算术单元和寄存器,能够取指并执行指令流。早期的 CPU 只包含一个核心。在热量成为限制因素之前,提高时钟频率一直是让计算机变快的主要途径。到 2004 年,英特尔的 NetBurst 产品线已达到约 3.8 GHz,但其高频产品遇到了散热和功耗的限制,这促使设计者转而在一块芯片上集成多个性能稍低的核心。

多核芯片于 2005 年进入主流个人电脑市场。AMD 在 2005 年 4 月已经销售面向工作站和服务器的双核处理器。英特尔的 Smithfield(以 Pentium Extreme Edition 840 之名销售)于 2005 年 4 月 16 日问世,Pentium D 则在 5 月推出。关于最早的产品,各方说法并不一致:Smithfield 在同一个晶粒上集成了两个核心,而后来的 Presler 则是在同一基板上封装两个独立的晶粒;通常认为,第一款单晶粒双核桌面芯片是 AMD 的 Athlon 64 X2。几年之内,双核和四核设计已在消费级机器中普及,六到十六核的处理器也成为服务器和工作站的标准配置。

多核并不会自动带来更高的速度。软件必须被拆分为多个线程,而 Linux 或 微软 Windows 等操作系统还要把这些线程调度到不同的核心上。视频编码和渲染等易于拆分的应用受益最大,而许多日常程序则并非如此。

同时多线程

同时多线程(SMT)是一种与多核互补的技术。SMT 核心可以在同一个时钟周期内运行来自多个线程的指令,利用当前空闲的执行单元。英特尔将其实现称为超线程技术(Hyper-Threading Technology)。该技术于 2002 年随 Xeon 服务器处理器推出,使一个物理处理器在操作系统看来表现为两个逻辑处理器。每个逻辑处理器各自保存一份体系结构状态,例如寄存器内容和指令指针,但二者共享物理执行资源,包括执行引擎、缓存和总线接口。

其目的在于利用那些在线程等待时原本会闲置的资源,等待的通常是来自内存的数据。由于一个逻辑处理器可以借用因另一个线程停顿而空闲的单元,吞吐量得以提升,而硬件成本的增加却很小。收益因负载不同而差异很大:有些任务在启用 SMT 后运行得更快,另一些则因线程争用缓存和缓冲区而变慢。共享执行资源还带来了安全隐患:一个线程有时可以通过测量自身操作的耗时,推断另一个线程的活动,这也是 SMT 成为侧信道攻击研究对象的原因之一。英特尔于 2008 年推出的 Atom 支持双路 SMT,但不采用乱序执行;规模更大的英特尔核心则将 SMT 与乱序执行结合使用。

缓存设计与一致性

每个核心都有自己的私有一级缓存,通常还有私有二级缓存,而三级缓存一般由芯片上的所有核心共享。私有缓存速度快且不存在争用,但会带来一个问题:如果两个核心各自持有同一内存块的副本,其中一个修改了它,另一个就不能继续使用过时的数据。缓存一致性协议正是为解决这一问题而设计的。其中最著名的是 MESI 协议家族,其名称来自它的四种状态。标记为 Modified(已修改)的缓存行只存在于本缓存中,且与主存不一致。Exclusive(独占)表示该缓存行只存在于此处,并与内存一致。Shared(共享)表示多个缓存持有干净的副本。Invalid(无效)表示该副本不可使用。缓存会监听内存总线(即窥探,snoop),当观察到其他核心的读写操作时便相应地改变状态。MESIF、MOESI 等变体则增加了状态,以减少内存流量。一致性通信会消耗时间和带宽,因此增加核心数并不会带来线性的性能提升;共享缓存减少了数据重复,但其本身也可能成为争用的焦点。

共享内存程序还需要锁和原子操作等同步原语,因为一致性机制只保证每个缓存对每一缓存行的视图是一致的,并不保证对多个变量的多步更新是安全的。此类编程错误在数据竞争和同步(计算机科学)条目中有所讨论。

并行加速的极限

增加核心所能带来的理论收益,受到程序中必须串行执行的部分的限制。若任务中有比例为 pp 的部分可以并行化,并在 nn 个核心上运行,则阿姆达尔定律给出的整体加速比为

S(n)=1(1−p)+pnS(n) = \frac{1}{(1-p) + \dfrac{p}{n}}

即使核心数不受限制,加速比也不可能超过 11−p\dfrac{1}{1-p}。若一个程序中有 10% 本质上必须串行执行,那么无论增加多少核心,最大加速比都只有十倍。串行部分包括输入输出、初始化,以及任何必须等待其他步骤完成的环节。阿姆达尔定律假定问题规模固定;古斯塔夫森定律则考虑问题规模随可用硬件增长的情形,这解释了为什么大规模数据并行负载在实践中的扩展性更好。通信开销、锁争用和负载不均衡还会进一步降低加速比。因此,并行计算的研究既关注硬件的增加,也同样重视算法的重构。

功耗、散热与频率扩展的极限

在晶体管不断缩小的过程中,登纳德缩放定律使功率密度大致保持恒定,因此几十年来设计者能够提高时钟频率,而不必让发热量按比例增加。其背后的物理基础是 CMOS 动态功耗关系 Pdyn≈αCV2fP_{\text{dyn}} \approx \alpha C V^2 f,其中 CC 为开关电容,VV 为供电电压,ff 为时钟频率,α\alpha 为每个周期发生翻转的电路比例。由于电压以平方形式出现在公式中,适度降低电压所节省的功耗远多于同等幅度地改变频率。登纳德的理想化规则是每一代工艺中尺寸与电压同时缩小约 30%,因此每一代新晶体管都能在大致相同的单位面积功耗下运行得更快。(这里的基本构件是 互补金属氧化物半导体和 金属氧化物半导体场效应晶体管。)

这一规律在 21 世纪初失效。由于物理限制,供电电压的降幅逐渐放缓,登纳德缩放实际上已经停止。另一个问题是漏电:在 65 纳米以下,漏电流呈指数增长,使得这些规则难以维持。实际上,晶体管即使不进行开关动作也开始白白耗电,而电压也无法再随尺寸同步降低。结果便是所谓由热量主导的“功耗墙”。此后,实际可用的处理器频率大致被限制在 4 GHz 左右,如今主流 CPU 的运行频率一般在 3–5 GHz 之间。

业界的主要应对方式是不再一味追求更快的单核,转而增加核心数量。设计者将工作分散到多个较低频率的核心上,而不是只依赖更高的单核频率。这一策略是并行计算的基础,但它也有自身的上限:随着核心数量增加,总功耗和总发热意味着并非所有核心都能同时以满频率运行。

为了在这些限制之内工作,现代 CPU 会持续调整其运行点,这一技术称为动态电压与频率调节(DVFS)。芯片会根据当前负载迅速调整其速度和供电电压。操作系统中名为调速器(governor)的软件读取温度、利用率等传感器数据,并选择合适的状态。一旦出现过热,热节流会降低频率、减少性能输出,以牺牲速度为代价保护芯片。睿频加速遵循的是相反方向的同一逻辑:标称的基础频率是一个保守值,能够在最坏条件下持续维持;而当热量和功耗还有余量时,CPU 可以暂时超过基础频率运行,并在接近极限时回落。这就是为什么在重度多核负载下,尤其是在轻薄笔记本中,持续性能可能远低于短时基准测试的结果。

影响最为深远的后果是暗硅。暗硅指的是集成电路中,在给定的热设计功耗预算内无法以额定电压同时通电的那部分。由于功率密度急剧上升,使得在保持温度处于安全范围的同时为所有晶体管同时供电变得十分困难,因此在任一时刻,现代芯片中越来越大的一部分都必须保持闲置或以较低速度运行。漏电进一步加剧了这一问题,而在纳米级工艺中,漏电已经主导了功耗预算。

架构师对付暗硅有几种策略。其一是只建造在功耗限制下能够同时工作的门电路数量;其二是通过降低部分电路的时钟频率来“调暗”芯片;其三是利用时钟门控和电源门控来削减空闲模块的动态功耗或漏电功耗;其四是专用化:将多余的晶体管用于 GPU 或神经网络加速器等专用硬件,这些硬件处理特定任务的效率远高于通用核心。这些方法是本文后面将讨论的异构设计的核心,它们也反映出一个根本性的转变:决定处理器能够完成多少计算的限制因素,已从晶体管数量转变为功耗。

半导体制造与工艺技术

现代中央处理器始于一片薄薄的单晶硅圆片。制造商先生长出硅锭,再将其切割成晶圆并抛光。每片晶圆随后要经过数百道工序,逐层制造晶体管和布线。主要操作包括:沉积,即添加导电、绝缘或半导体的薄膜;光刻,即印刻图形;刻蚀,即去除不需要的材料;掺杂,即改变硅的特定区域的电学性质。光刻的过程是:在晶圆上涂覆光敏光刻胶,透过掩模投射紫外光,再显影曝光后的图形,以便对下层材料进行刻蚀或掺杂。刻蚀可分为湿法(化学)刻蚀和干法(等离子体)刻蚀,是将图形转移到衬底中最常用的方法。掺杂通常通过离子注入完成,向硅中引入杂质,使其能够以可控的方式导电,这正是晶体管得以实现的根本前提。将这些步骤重复数十次,即可形成连接数十亿个器件的多层金属互连。成品晶圆随后被切割成单个芯片(die),整个流程可能需要数周至数月。

工艺节点名称,如"7纳米"或"3纳米",是这一领域最容易被误解的部分。在CMOS制造的早期几十年里,这个数字描述的是实际尺寸,通常指金属半节距或栅长,二者大致相等。到了20世纪90年代,这些数值已经开始分化;例如,一个130纳米节点的栅长约为70纳米。据多份行业资料称,自1997年前后起,节点名称已经演变为一种营销标签,不再直接对应任何单一的物理特征。取而代之的是,行业规划者现在依赖更具体的指标。接触栅间距(即相邻晶体管栅极之间的距离)和最小金属间距能提供更多信息。例如,2021年的国际器件与系统路线图(IRDS)预测了一个"3纳米"节点,其栅极间距为48纳米,金属间距为24纳米。由于存在这种差距,仅凭名称比较不同代工厂的两个节点可能会产生误导,而密度数据能更好地反映真实的进展。

随着MOSFET沟道不断缩小,栅极位于沟道上方的平面结构逐渐失去了对电流的控制能力。鳍式场效应晶体管通过将沟道抬升为一根薄的垂直鳍片来解决这一问题,使栅极环绕鳍片的三个侧面。这改善了静电控制,使微缩得以继续。英特尔于2012年推出的首批22纳米消费级处理器采用了这种设计,那个时代的所有14纳米级节点也都依赖它。然而,当鳍宽接近5纳米左右时,沟道宽度的变化开始导致性能波动和载流子迁移率下降。全环绕栅极(GAA)设计正是为应对这一问题:栅极完全包裹沟道。纳米片晶体管堆叠了多层薄的水平硅片,每一层都被栅极材料包围,从而使设计者在单位面积上获得更大的驱动电流。imec等研究机构报告称,大约在2022年至2023年间,多家代工厂开始在3纳米和2纳米逻辑工艺中,从FinFET转向纳米片结构。这一转变复用了许多FinFET的工艺模块,因而便于采用,但也带来了新的集成挑战。

封装正成为另一种微缩手段,因为越来越难以用单一的先进工艺、以可接受的成本制造一个大尺寸芯片。芯粒(chiplet)设计将处理器拆分为多个较小的芯片,这些芯片往往采用不同的工艺节点制造,并集成在同一个封装内。较小的芯片通常良率更高,因为单个缺陷损毁的硅片面积更少;混用不同节点,则可以让设计者只在最关键之处使用最先进的工艺。三维堆叠则更进一步,将芯片垂直放置,并通过短的硅通孔互连,从而缩短导线、提高带宽。这些方法也有各自的代价,包括更复杂的组装、测试,以及堆叠层的散热问题。因此,它们最好被理解为延续微缩所带来的经济与性能收益的途径,而非其替代品。

异构计算与专用处理单元

现代处理器很少仅由相同的通用核心构成。设计者越来越多地在同一块芯片上集成不同类型的计算单元,而它们之间的分工已成为系统设计的核心问题。

大核与小核

一种常见做法是在同一芯片上混合不同规模和性能的核心。ARM 的 big.LITTLE 架构将高性能的"大核"与省电的"小核"配对,使高强度任务能够快速运行,而轻量的后台任务则耗电更少。在最早的量产设计中,Cortex-A15 充当大核,Cortex-A7 充当小核。例如,Exynos 5422 SoC 集成了两种类型各四个核心,其中 A15 集群配有 2 MB 的 L2 缓存,A7 集群配有 512 KB 的 L2 缓存。

硬件本身并不决定收益,调度才决定收益。早期实现采用集群迁移(cluster migration),即整个工作负载在集群之间整体迁移;后来的实现采用全局任务调度(Global Task Scheduling),操作系统可同时看到所有核心,把高优先级或计算密集型线程放到大核上,而把低强度或受内存限制的线程分配给高效核心。在 Linux 中,这种异构多处理(HMP)模型会根据线程近期的 CPU 利用率,将其"向上"或"向下"迁移。动态电压频率调整(DVFS)仍在每个集群内部工作,未使用的核心则可以被完全断电。错误调度代价高昂:把轻量任务放到大核上会浪费能量,而把重负载任务放到小核上则会降低响应速度。因此,移动 SoC 高度依赖调度启发式算法,以及操作系统对每个核心能力的了解。

集成于CPU旁的GPU与NPU

大多数消费级 SoC 还集成了图形处理单元(GPU),并且越来越多地集成神经网络处理单元(NPU)。三者的优化目标各不相同。CPU 为对延迟敏感的顺序任务而设计,负责运行应用逻辑和操作系统。GPU 执行大批量的相似操作,例如像素着色和矩阵乘法,也可以通过 CUDA 等编程模型运行通用并行代码。NPU 则是专用的张量引擎:它包含大量乘加单元阵列,利用本地存储使权重和激活值靠近运算单元,通常以低精度(如 INT8 或 INT4)工作以节省功耗。

由于 NPU 只支持神经网络算子的一个子集,模型通常会被划分到不同单元上运行:受支持的层在 NPU 上执行,不受支持的层则回退到 GPU 或 CPU。这种回退会产生数据传输,并可能使延迟难以预测,因此划分方式与各单元的原始速度同样重要。NPU 通常适用于端侧推理,例如语音识别、图像增强和小型语言模型,在这些场景中,持续能耗比峰值吞吐量更重要。大规模训练通常仍依赖数据中心的 GPU 或 TPU。

延迟与吞吐量

CPU 与 GPU 的区别最好理解为延迟与吞吐量之间的权衡。CPU 将大量晶体管面积用于分支预测、大容量缓存、推测执行和乱序调度,以便一个或少数线程能够快速完成。GPU 则将大部分面积用于算术通道、寄存器堆和内存带宽,依靠数千个线程来掩盖内存延迟。对于并行性充沛的工作负载,例如分子动力学或稠密线性代数,这种设计能提供高得多的总体吞吐量。以串行步骤、不规则分支或小规模内核为主的工作负载则几乎得不到收益,而且阿姆达尔定律限制了整体加速效果:如果任务中有十分之一是串行的,再多的加速器也无法缩短这部分时间。指针密集型数据结构、操作系统工作以及有严格响应时间要求的请求处理,通常仍留在 CPU 上完成。

主机与加速器的协同及卸载开销

在异构系统中,CPU 充当主机(host)。它负责准备数据,在加速器上启动内核或推理图,并处理结果和控制流。卸载任务可以腾出 CPU 去处理其他工作,但并非没有代价。数据必须被搬运到加速器的内存中,内核必须被启动,结果还必须被送回。对于通过 PCIe 总线连接的独立 GPU,这些传输开销可能主导小任务的运行时间。集成式 SoC 通过让 CPU、GPU 和 NPU 共享统一的系统内存来降低这一成本,数据无需在彼此独立的存储池之间复制,不过同步和缓存一致性仍会带来额外开销。因此,高效的异构编程依赖于批量化处理工作、让数据常驻于加速器上,以及将数据传输与计算重叠进行。忽视这些开销,是加速器"纸面上更快、实际中却更慢"的常见原因。

异构化也是一个更广泛的趋势。区分大核与小核、区分 CPU 与加速器的同一逻辑,使得单颗芯片能够在有限的功耗预算内,同时满足性能、续航和响应时间等多样化的需求。

应用类型与市场分化

同一种 CPU 架构很少只以一款产品的形式出售。不同市场对功耗、价格、延迟和吞吐量的要求差异很大,因此厂商通常会基于同一设计推出一系列芯片。主要市场包括台式机和笔记本电脑、服务器和数据中心、移动及嵌入式设备以及微控制器,超级计算机则构成专门的顶层市场。

台式机、笔记本和服务器处理器

台式机和笔记本的 CPU 注重响应速度:通常只有一位用户、几个应用程序,并且要求较强的单线程性能。消费级旗舰产品采用性能核与能效核混合的布局,核心数可达约 24 个,其内存控制器通常支持两条 DDR5 通道。以双通道桌面平台为例,理论内存带宽约为 95 GB/s。服务器 CPU 则以规模换取峰值频率。AMD 的 EPYC 9754 最多拥有 128 个核心,而支持 12 通道的 EPYC 9554 理论带宽约为 461 GB/s。服务器和工作站产品还支持 ECC 内存,它能够纠正可能导致系统崩溃或存储数据损坏的位错误。英特尔和 AMD 的主流台式机芯片一般不支持 ECC,这一平台区分是厂商有意实施的。此外,服务器主板通常支持多路插槽,并提供多得多的 PCIe 通道,用于连接存储控制器和网卡。

移动及嵌入式设备

智能手机、平板电脑和单板计算机通常使用应用级核心,例如 ARM 的 Cortex-A 系列。这些核心包含能够运行 Linux 或 Android 的内存管理单元。在这一市场中,电池续航、密闭机身内的散热以及单位成本是设计的主要考量。因此,移动系统级芯片会将 CPU 核心与图形处理和神经网络加速单元集成在同一块晶片上,并常常混合使用高性能核心和高能效核心。智能手机是最典型的例子,但同样的逻辑也适用于机顶盒、路由器和工业网关。实时嵌入式应用则属于另一类:Cortex-R 核心面向制动控制器等安全关键任务,在这些场景中,可保证的响应时间比峰值吞吐量更重要。

微控制器

微控制器将一个小型 CPU、存储器和外设接口集成在单个芯片上,主要用于传感器、电机控制和简单的无线节点。ARM 的 Cortex-M 系列是其中最普及的例子。该系列的设计注重低功耗、低成本和可预测的中断处理;ARM 文档记载 Cortex-M3 和 Cortex-M4 的中断延迟固定为 12 个周期。Cortex-M 核心通常只提供可选的内存保护单元,而非完整的虚拟内存,因此一般运行裸机固件或小型实时操作系统,而不是通用操作系统。这些类别之间的界限并不清晰:一些厂商将类似微控制器的小型芯片称为微处理器,同一厂商也可能在同一产品线中同时销售微控制器和应用处理器。

超级计算机与加速器配置

在高性能计算中,CPU 通常充当主机的角色。它运行操作系统、调度作业,并将数据转送给承担大部分运算的加速器。2025 年 11 月发布的 TOP500 榜单中,共有 255 套系统采用加速器或协处理器技术,高于六个月前的 237 套。榜单上排名第一的 El Capitan 结合了 AMD EPYC 处理器与 Instinct MI300A 加速器。截至 2025 年 6 月,按数量计算,采用加速器的机器占榜单的 46.4%,但它们贡献了榜单总峰值性能的 86.2%,这表明最大型的机器在多大程度上依赖加速器。具体配置各不相同:Summit(2018 年)每个节点配备两颗 IBM POWER9 CPU 和六块 NVIDIA V100 GPU,而一些较新的系统则将英特尔至强主机与 GPU 搭配使用。在这些设计中,主机的内存带宽和 PCIe 连接性决定了数据能以多快的速度抵达加速器。

产品等级与变体

在同一架构之下,厂商会推出许多变体,它们在核心数、目标频率、缓存容量、内存通道数、PCIe 通道数、ECC 支持、多路插槽能力以及是否集成显卡等方面各不相同。服务器产品通常从通过严格稳定性测试的晶片中挑选,厂商借此为较高的售价和更长的支持周期提供依据。消费级产品线主要通过频率和核心数加以区分,而 Threadripper PRO 等工作站产品线则增加了内存容量和通道数,以满足专业用途。因此,同一种核心设计可能出现在入门级笔记本、企业级服务器以及云计算实例中,其间的差别主要在于平台特性,而非核心本身。

可靠性、安全与验证

CPU 既会受到物理干扰的影响,也可能存在设计缺陷,仅靠软件无法完全掩盖这些问题。软错误是电路状态的瞬时改变,而不是永久性的物理损坏。放射性衰变产生的 α 粒子,以及宇宙射线簇射产生的中子(中子通过俘获而生成不稳定同位素),都可能在存储单元或触发器中沉积足够的电荷,使所存储的位发生翻转。供电电压降低会缩小逻辑 0 与 1 之间的余量,存储密度提高则让单位面积内的存储单元更多,这两种趋势都使现代处理器更容易受到影响。标准的应对手段是在缓存和寄存器堆中使用奇偶校验位和纠错码(ECC)。ECC 能够纠正单个翻转位,并能检测部分双位错误,但无法纠正所有多位错误模式,而且部分内部逻辑根本不在其保护范围内。若错误无法恢复,处理器可能停止继续推进,这就是为什么航天器等关键系统有时会在多个处理器上运行同一计算并比对结果。

2018 年 1 月,研究人员公开披露了 Meltdown(熔断)和 Spectre(幽灵)这两类漏洞,其根源都在于推测执行。为了提高吞吐量,CPU 会预测分支的走向,并提前执行指令。预测错误的结果会在体系结构层面被丢弃,但它们可能在缓存中留下痕迹。攻击者可以借助 Flush+Reload 等计时测量方法,推断哪些内存位置被推测性地访问过,从而读取程序本不允许访问的数据。Meltdown 利用乱序执行,使非特权程序对内核内存的加载操作在权限检查生效之前就已推测性地进行,该漏洞被编号为 CVE-2017-5754。Spectre 则通过误导分支预测器,使受害程序推测性地读取越界数据;其变体包括 CVE-2017-5753 和 CVE-2017-5715。微软的安全公告指出,这些问题对 AMD、ARM 和 Intel 的 CPU 都有影响,但程度各不相同。此后的研究,例如 MeltdownPrime 和 SpectrePrime 攻击,表明多处理器系统中的缓存一致性协议也可能成为类似信息泄露的通道。

漏洞的缓解工作进展并不均衡。Windows 上针对 Meltdown 的修复措施称为 KVA Shadow,它为用户模式和内核模式分别维护独立的页表,使用户代码难以映射内核内存,但这会带来性能损失。Spectre 更难处理,因为它存在于 CPU 推测执行机制的设计之中,而不是某个单独的软件缺陷中。因此,防御措施需要组合多种手段:编译器改动以限制推测路径,微码和固件更新以改变预测器的行为,以及工作负载隔离,例如在云环境中为不受信任的租户专门分配独立的核心。核心的权衡在于,许多缓解措施正是通过禁用或限制那些让现代处理器获得速度优势的优化来实现的。因此,每一项限制都会带来可测量的性能代价,运营者必须权衡:为了达到某种程度的安全,愿意牺牲多少吞吐量。

验证是可靠性的另一半。在芯片流片之前,设计者会使用随机或定向输入进行大规模仿真,接着运用形式化方法尝试证明设计中选定部分的正确性,最后在真实运行条件下进行流片后测试。形式化验证的优势在于它能够考虑所有可达状态,而不是抽样检查,但其成本会随设计复杂度迅速增长,因此通常只用于最关键的部件,例如流水线和指令派发的控制逻辑。即便如此,仍会有漏洞被遗漏。Intel 和 AMD 会发布勘误表,列出已交付产品中的已知缺陷及其规避方法,其中许多问题后来通过微码得以修正。对开源设计的学术验证,包括对一款基于 RISC-V 的核心及其安全扩展进行的形式化检查,也屡次发现了真实存在的漏洞,这表明要获得完全的保证,目前仍然遥不可及。

未来方向与未解问题

晶体管微缩已经放缓,过去每一代新工艺节点几乎自动带来的性能提升,现在必须从别处寻找。业内人士认为,芯粒(chiplet)设计和堆叠正是对这种放缓的回应。过去芯片制造商不断缩小晶体管,并在单个芯片上塞进更多器件,结果产生了规模极大的单片式片上系统设计。当前的思路则是把大型设计拆分成较小的裸片。芯粒可以并排组装在2.5D封装中,也可以在3D结构中垂直堆叠,并共享统一的互连。垂直连接依赖硅通孔(TSV)和混合键合。例如,英特尔的Foveros技术用硅通孔连接分别制造的裸片,使核心、缓存和I/O可以各自采用最合适的晶体管技术。在研究环境中,混合键合的连接间距已经从约10微米降到1微米。由于堆叠缩短了导线,它也有助于应对内存墙问题:数据在处理器与内存之间需要移动的距离更短,从而降低了延迟和能耗。

挑战依然存在。堆叠的裸片会产生热量,而内层的热量很难导出;键合层数越多,良率越低。3D设计的测试与标准化仍是活跃的研究课题。成本也是一个制约因素:封装技术只有在降低单位计算成本时才有价值,而其经济性会因裸片尺寸和工艺节点而异。

指令集架构也在发生变化。RISC-V是一种开放、免版税的指令集架构,已经从学术项目走向商业产品。一份行业报告统计,迄今基于该开放指令集架构制造的核心超过130亿个;另一份市场分析则称,RISC-V的增长已接近每年出货25亿个核心。两个数字衡量的是不同的东西(一个是累计量,一个是年度量),不应直接比较。该架构在嵌入式和物联网设备中应用最为广泛,数据中心应用仍在起步,但具有战略意义。RISC-V国际组织计划中的服务器平台规范预计将于2026年底正式批准。由于指令集开放,大学和小公司无需支付授权费即可设计和教授处理器,这降低了芯片设计的入门门槛。RISC-V能否在通用计算领域取代x86和Arm,目前仍不确定。

一个更长远的问题是通用硬件与专用硬件之间的平衡。CPU几乎可以运行任何程序,但它把相当多的能量消耗在控制逻辑上,而固定功能的加速器可以避免这种消耗。将CPU与GPU、NPU及领域专用处理器搭配的异构系统是一种解决思路,RISC-V的模块化特性也让设计者能够围绕通用核心构建此类加速器。然而,每增加一种专用化,软件复杂度就随之上升,芯片能够高效处理的任务范围也随之缩小。系统能在多大程度上吸收专用化而不致使软件生态碎片化,仍是一个悬而未决的设计问题。

其他计算范式也在探索之中。光子和神经形态方法旨在降低数据移动的能耗,并利用神经网络中的并行性。一篇近期综述列出了几项主要障碍:低阈值光子非线性计算、集成芯片的规模、光电协同与软硬件协同的兼容性,以及应用场景不明确。光学系统在边界处也需要电信号转换,模数与数模转换以及内存访问常常成为能耗和延迟的瓶颈。因此,一些研究者主张将光子和铁电元件与电子器件结合成混合系统,而不是完全取代电子器件。光子计算历史上多次受挫。20世纪80年代,光学神经网络吸引了大量研究,但到90年代,由于实际集成困难以及对复杂网络理解不足,一些主要研究者放弃了这一路线。光子与神经形态硬件能否从实验室演示走向通用系统,目前仍未解决。

参考来源

  1. Central processing uniten.wikipedia.org
  2. Central processing unit (CPU)britannica.com
  3. The central processing unit (CPU): Its components and functionalityredhat.com
  4. Central processing unit - Citizendiumen.citizendium.org
  5. Central processing unit - New World Encyclopedianewworldencyclopedia.org
  6. How to Select the Right CPU or SoC for your Embedded Projectqt.io
  7. MCU Vs SoC Vs MPU Vs CPU: What Is The Difference?reversepcb.com
  8. Reading: The Central Processing Unitcoursesidekick.com
  9. Difference between CPU, MPU, MCU, SOC and SOPCpcb-hero.com
  10. Differences between CPU, MPU, MCU, SOCpcb-hero.com
  11. Instruction Register - GeeksforGeeksgeeksforgeeks.org
  12. OS 00: Into the CPU - Registers, ALU, and Control Unit Explained - DEV Communitydev.to
  13. Memory deviceimage-ppubs.uspto.gov
  14. Ultra low power ASIP architectureimage-ppubs.uspto.gov
  15. Level detector circuit for microcomputer devicesimage-ppubs.uspto.gov
  16. EECE 485 : DIGITAL INSTRUMENTATION FOR MECHANICAL SYSTEMSpeople.ece.ubc.ca
  17. What is a Computer Bus? - GeeksforGeeksgeeksforgeeks.org
  18. kindatechnical()kindatechnical.com
  19. Buses CPU: Architecture & Control Busstudysmarter.co.uk
  20. Energy efficient processing deviceimage-ppubs.uspto.gov
  21. Complex Instruction Set Computer Architecture - an overviewsciencedirect.com
  22. Speculative instruction queue and method therefor particularly suitable for variable byte-length instructionsimage-ppubs.uspto.gov
  23. RISC vs CISC - GeeksforGeeksgeeksforgeeks.org
  24. Microprocessor employing branch instruction to set compression modeimage-ppubs.uspto.gov
  25. RISC-V Overview. RISC-V is an open standard instruction…medium.com
  26. Intel 8086en.wikipedia.org
  27. Intel 8086 - CPCWikicpcwiki.eu
  28. x86 Processors: An Overview and Historycratecode.com
  29. On this day 46 years ago, the Intel 8086 brought us the x86 architecturexda-developers.com
  30. Understanding RISC-V: The Open Standard Instruction Set Architecturewevolver.com
  31. What is RISC-V?synopsys.com
  32. Engineering:Intel 8086 - HandWikihandwiki.org
  33. Home - RISC-V Internationalriscv.org
  34. RISC-V Instruction Set Architecture Extensions: A Surveyieeexplore.ieee.org
  35. Instruction cycleen.wikipedia.org
  36. Basic performance metrics: CPU time, CPI, MIPSuvm.edu
  37. 5.7. Pipelining: Making the CPU Fasterdiveintosystems.org
  38. SPEC CPU®2017 Overview / What's New?spec.org
  39. Von Neumann architectureen.wikipedia.org
  40. Vonneumann's first computer programamphilsoc.org
  41. The Stored-Program Concept Explained - Kronecker Walliskroneckerwallis.com
  42. ENIAC to EDVAC: First Computers - Kronecker Walliskroneckerwallis.com
  43. How does a Von Neumann architecture differ from a Harvard architecture?tutorchase.com
  44. Harvard vs. Von Neumann Architecturescribd.com
  45. An Illustrated History of Computers Part 4cs.kent.edu
  46. Harvard architectureen.wikipedia.org
  47. Von Neumann vs. Harvard Architecture: Key Differences and Applicationsawjunaid.com
  48. ENIAC - CHM Revolution - Computer History Museumcomputerhistory.org
  49. Computer - ENIAC, Electronic, Computingbritannica.com
  50. ILLIAC Ien.wikipedia.org
  51. Electronic Computers Within The Ordnance Corps, ENIACftp.arl.army.mil
  52. Jack Kilbyen.wikipedia.org
  53. History of the Integrated Circuit: Kilby, Noyce, Fairchild and Intelkovaragrid.com
  54. Jack Kilby - Magnet Academynationalmaglab.org
  55. IBM System/360 - Engineering and Technology History Wikiethw.org
  56. The IBM System/360ibm.com
  57. Iconic consoles of the IBM System/360 mainframes, 55 years oldrighto.com
  58. IBM 360: The Definitive 2026 History Of System/360 Compatibilityquantumzeitgeist.com
  59. Chipping in on history: Federico Faggin, co-inventor of the microprocessor, still setting the reclosaltosonline.com
  60. Intel's Microprocessor - CHM Revolutioncomputerhistory.org
  61. Intel 4004 microprocessor : oral history panel with Ted M. Hoff and Stan Mazor - 102657974 - CHMcomputerhistory.org
  62. Say Happy 50th Birthday to the Microprocessor, Part 2eejournal.com
  63. Federico Fagginebsco.com
  64. graphsearch.epfl.chgraphsearch.epfl.ch
  65. graphsearch.epfl.chgraphsearch.epfl.ch
  66. The IBM PC Turns 45: The Intel 8088 That Made x86 a Standardcloudnews.tech
  67. Intel 8088en.wikipedia.org
  68. The IBM PC, 41 Years Agoos2museum.com
  69. 0% found this document useful (0 votes)scribd.com
  70. The Chip that Changed the World - Newsroom - Intelnewsroom.intel.com
  71. Birth of a standard: The Intel 8086 microprocessor turns 40 todaypcworld.com
  72. The Intel ® 8086 and the IBM PCintel.com
  73. Pipeline Hazards - Algorithmicaen.algorithmica.org
  74. Pipelininggeeksforgeeks.org
  75. Optimizing compiler having data cache prefetch spreadingimage-ppubs.uspto.gov
  76. Pipeline Hazards: Causes, Examples & Impactvaia.com
  77. Pipeline Processing in Computer Architecturecards.algoreducation.com
  78. Instruction schedulingen.wikipedia.org
  79. Out of Order Execution and Register Renamingcs.uaf.edu
  80. Spring 2018 :: CSE 502 Out-of-Order Execution & Register Renamingcompas.cs.stonybrook.edu
  81. Distributed instruction queueimage-ppubs.uspto.gov
  82. (PDF) An out-of-order superscalar processor on FPGA: The ReOrder Buffer designresearchgate.net
  83. A Comparative Analysis of Branch Prediction Schemescs.ucdavis.edu
  84. Originally published in Proc. 24th Ann. Int’l Symp.american.cs.ucdavis.edu
  85. Branch Prediction - an overviewsciencedirect.com
  86. Simplicity Scalesarxiv.org
  87. Measuring Software Performance on Linuxarxiv.org
  88. Method and apparatus for implementing a set-associative branch target bufferimage-ppubs.uspto.gov
  89. Optimized binary adders and comparators for inputs having different widthsimage-ppubs.uspto.gov
  90. Fast branch misprediction recovery method and systemimage-ppubs.uspto.gov
  91. CPU Cache Memory Hierarchy: L1, L2, L3 Caches and Cache Coherency Explainedawjunaid.com
  92. (PDF) Approaches to addressing the memory wallresearchgate.net
  93. What Is CPU Cache? L1, L2, and L3 Explained - Security Boulevardsecurityboulevard.com
  94. CPU Cache Hierarchy: L1, L2, L3 Explained - TechComparetechcompare.app
  95. What Is a CPU Cache? L1, L2, L3 & How It Worksacemagic.com
  96. CPU Cache Explained: L1, L2, L3 and Performancecloudspress.com
  97. Write-Back Policy - an overviewsciencedirect.com
  98. Programmable address-based write-through cache controlimage-ppubs.uspto.gov
  99. What Is Write-Back?techtarget.com
  100. What is the memory wall in computing?ayarlabs.com
  101. Pentium Den.wikipedia.org
  102. Dual Core Era Begins April 18 2005phys.org
  103. Microprocessor History Multi-core designs - Exhibition - PANASYSpanadisplay.com
  104. Pentium D — Grokipediagrokipedia.com
  105. graphsearch.epfl.chgraphsearch.epfl.ch
  106. Intel Technology Journalintel.com
  107. Hyper-Thread tuning guide for End to End video AI workloadintel.com
  108. Simultaneous multithreadingen.wikipedia.org
  109. What Is Simultaneous Multithreading in a CPU? - ScienceInsightsscienceinsights.org
  110. Directory-based coherency system for maintaining coherency in a dual-ported memory systemimage-ppubs.uspto.gov
  111. Dynamic cache coherence protocol based on runtime interconnect utilizationimage-ppubs.uspto.gov
  112. A 20-Year Retrospective on Power and Thermal Modeling and Managementarxiv.org
  113. Dennard Scaling - an overviewsciencedirect.com
  114. Understanding Dennard scaling - Rambusrambus.com
  115. Lecture 15: Moore’s Law and Dennard Scaling William Groppwgropp.cs.illinois.edu
  116. How Dynamic Voltage and Frequency Scaling Works - Engineer Fixengineerfix.com
  117. Dynamic Voltage Scaling (DVS): Definition, ICs, Benefitsersaelectronics.com
  118. CPU Power Management: Dynamic Voltage and Frequency Scaling (DVFS) Explainedawjunaid.com
  119. Dark siliconen.wikipedia.org
  120. A novel power model for future heterogeneous 3D chip-multiprocessors in the dark silicon agelink.springer.com
  121. Dennard Scaling: The Hidden Law that powered the Computing Revolution (until it didn’t)sourav-k-paul.medium.com
  122. DarkGates: A Hybrid Power-Gating Architecture to Mitigate the Performance Impact of Dark-Silicon in High Performance Processorsarxiv.org
  123. Dark Memory and Accelerator-Rich System Optimization in the Dark Silicon Eraarxiv.org
  124. Semiconductor Device Manufacturing Process, Challenges and Opportunitiesrenesas.com
  125. Six crucial steps in semiconductor manufacturingasml.com
  126. The Basics of Microlithographylithoguru.com
  127. Semiconductor Fabrication: How Are They Manufactured? - Halocarbonhalocarbon.com
  128. Semiconductor process technology; History, trends and evolutionrenesas.com
  129. Nodezerotoasiccourse.com
  130. 14 nm processen.wikipedia.org
  131. 22 nm processen.wikipedia.org
  132. 3 nm processen.wikipedia.org
  133. 2 nm processen.wikipedia.org
  134. Protection of high-K dielectric during reliability anneal on nanosheet structuresimage-ppubs.uspto.gov
  135. Complementary Field-Effect Transistor (CFET) Demonstrationmys.mapyourshow.com
  136. Entering the nanosheet transistor eraimec-int.com
  137. Ten Things to Know About big.LITTLEdeveloper.arm.com
  138. Revisiting Conventional Task Schedulers to Exploit Asymmetry in ARM big.LITTLE Architectures for Dense Linear Algebraarxiv.org
  139. Compiler Enhanced Scheduling for OpenMP for Heterogeneous Multiprocessorsarxiv.org
  140. System and methods for scheduling software tasks based on central processing unit power characteristicsimage-ppubs.uspto.gov
  141. CPU vs GPU vs TPUs vs NPUssplunk.com
  142. GPU vs CPU Inference: Speed, Cost & Scalegmicloud.ai
  143. Understanding Throughput-Oriented Architecturesm-cacm.acm.org
  144. GPU architecture: How NVIDIA GPUs execute parallel workloadsmedium.com
  145. What Is an NPU? Neural Processing Units Explainedunite.ai
  146. Context-Driven Performance Modeling for Causal Inference Operators on Neural Processing Unitsarxiv.org
  147. Neural processing uniten.wikipedia.org
  148. Microcontroller vs Microprocessor: The Real Differenceswevolver.com
  149. Arm Cortex Processor Family: The Complete List and Comparison Guidegsasindia.com
  150. Arm Cortex A, R, M Explained: How to Choose the Right Processorproculustech.com
  151. Highlights - November 2025top500.org
  152. Top500 Supers: Even Accelerators Can’t Bend Performance Up To The Moore’s Law Linenextplatform.com
  153. New GPU-Accelerated Supercomputers Change the Balance of Power on the TOP500top500.org
  154. Desktop CPU vs. Server CPU: Architecture Differences Explained for 2026 (Xeon, Threadripper, EPYC)newegg.com
  155. Server vs. Desktop CPUs: What are the differences?cgdirector.com
  156. Server CPUs vs. Desktop CPUs: Key Differences You Need to Knowlinkedin.com
  157. Cosmic Ray Bit Flips and the Hidden Risk at Scale - csidecside.com
  158. Method and apparatus for preventing soft error accumulation in register arraysimage-ppubs.uspto.gov
  159. Method and apparatus for detecting multi-hit errors in a cacheimage-ppubs.uspto.gov
  160. Processor register error correction managementimage-ppubs.uspto.gov
  161. Spectre (security vulnerability)en.wikipedia.org
  162. Meltdown and Spectre Side-Channel Vulnerability Guidancecisa.gov
  163. Mitigating speculative execution side channel hardware vulnerabilitiesmicrosoft.com
  164. MeltdownPrime and SpectrePrime: Automatically-Synthesized Attacks Exploiting Invalidation-Based Coherence Protocolsarxiv.org
  165. Spectre and Meltdown: Powerful Reminders of Side Channel Attacks - Infosecurity Magazineinfosecurity-magazine.com
  166. RemembERR: Leveraging Microprocessor Errata for Design Testing and Validationcomsec.ethz.ch
  167. Optimizing Verification Quality in High-Performance Processor Design with Formal Methodsmedium.com
  168. Formal ISA Verification for Custom-designed Processorssynopsys.com
  169. Comprehensive Formal Verification of Observational Correctness for the CHERIoT-Ibex Processorarxiv.org
  170. Survey of Verification of RISC-V Processorslink.springer.com
  171. Chiplet Interconnect Technology: Piecing Together the Next Generation of Chips - IMAPS 3D InCites Content Platform3dincites.com
  172. RISC-V in 2026: AI, Automotive, and China Drive Adoption - Next Waves Insightnextwavesinsight.com
  173. RISC-V Architecture: What Engineers Need to Know in 2026alpinumconsulting.com
  174. ANNUAL REPORT 2025 w w w . r i s c v . o r griscv.org
  175. Integrated photonic neuromorphic computing: device, architecture, chip, algorithmarxiv.org
  176. Neuromorphic photonic computing with an electro-optic analog memorynature.com
  177. 3D Stacking For Performance And Efficiencysemiengineering.com
  178. Thermal Analysis of a 3D Stacked High-Performance Commercial Microprocessor using Face-to-Face Wafer Bonding Technologyarxiv.org
  179. Chiplets: piecing together the next generation of chips (part I)imec-int.com
  180. Is 3D chip technology the next growth engine for performance improvement?arxiv.org
  181. Energy Efficient Computing Systems: Architectures, Abstractions and Modeling to Techniques and Standardsarxiv.org
  182. Heat transfer enhancement for three-dimensional integrated circuit chipsimage-ppubs.uspto.gov
  183. Photonic and optoelectronic neuromorphic computingpubs.aip.org