一、CPU的制造技术:纳米级的精密工程
1.1 芯片制造工艺(制程工艺)
现代CPU的制造工艺常被称为“纳米制程”,例如5nm、3nm等,这里的“nm”(纳米)并非指晶体管的实际尺寸,而是表示工艺的综合能力,比如晶体管密度、功耗、开关速度等。
先解释一下常说的3纳米、5纳米、7纳米芯片到底是什么意思。早期制程节点(如90nm以上时代),直接对应PN结晶体管栅极物理长度,
如上图所示,但随技术发展,节点命名逐渐转为等效工艺密度描述,不单是一个栅极物理指标了,而是一种营销术语,是因为所有工艺的改进,
栅极漏极源极这些整体尺寸的变小,在同样大小的芯片上可以塞下更多的晶体管,在数量上相当于栅极变成之前尺寸的3纳米了,
实际上,现在3纳米芯片的芯片,栅极的长度在12-14nm之间,5纳米芯片的栅极长度在21-24nm之间。
如果对PN结晶体管不了解的朋友,建议先看这两篇文章:
1.PN结的组成与工作原理
2.晶体管的组成与工作原理
▍制程演进简史:
1.2 制造流程简述
CPU的制造过程可长达3个月,涉及超过1000道工序,主要包括以下步骤:
Step 1:硅晶圆准备
使用高纯度的单晶硅制造晶圆(Wafer),直径多为300mm。
Step 2:光刻(Photolithography)
通过掩模(mask)和光源将图案投射到晶圆上,形成电路图形。传统使用193nm光源,3nm工艺使用EUV光刻(极紫外,13.5nm),目前只有荷兰的ASML公司可以生产。
Step 3:刻蚀(Etching)
利用化学或等离子体刻蚀工艺,去除多余材料,留下电路图案。
Step 4:离子注入(Doping)
向硅中注入特定杂质(如磷、硼)以控制晶体管导电性。
Step 5:金属互连(Metallization)
在不同晶体管之间形成电路连接,一般采用铜互连,3nm后期可能使用钴、钌等材料。
Step 6:封装(Packaging)
将切割下来的芯片封装到载板上,并引出针脚或焊球供主板使用。
提示:以上制造工艺原理细节感兴趣的朋友,请看往期文章:芯片的制造过程;有更详细的讲解。
1.3 晶体管密度与摩尔定律
摩尔定律在显卡中的体现:
从几亿到几百亿晶体管,GPU 的“密度进化”正是摩尔定律的真实体现。
近年来,人们常说摩尔定律“失效”了,原因包括:
物理极限逼近:晶体管尺寸接近原子级,继续缩小越来越难。
成本急剧上升:先进制程如 3nm 的制造成本是天价。
散热与功耗问题严重:晶体管太密,功耗暴涨,难以控制温度。
所以今天的摩尔定律,不再是“1.5年翻一番”,而可能是 3~4 年才有较大的提升。
2.1 基本组成
CPU通常由以下核心模块组成:
算术逻辑单元(Arithmetic Logic Unit, ALU)
控制单元(Control Unit, CU)
寄存器(Registers)
高速缓存(Cache)
总线接口(Bus Interface)
时钟(Clock)
7. 内存映射单元(Memory Management Unit,MMU)
每一种存储器设备,只和它相邻的存储设备打交道。比如,CPU Cache是从内存里加载而来的,或者需要写回内存,并不会直接写回数据到硬盘, 也不会直接从硬盘加载数据到CPU Cache中,而是先加载到内存,再从内存加载到Cache中。 可以看出,越是速度快的设备,容量就越小。这里一共 10M 的 Cache,成本只是几十美元。而 8GB 的内存、128G 的 SSD 以及 1T 的 HDD, 大概零售价格加在一起,也就和我们的高速缓存的价格差不多。
2.1.7 MMU
内存映射单元(Memory Management Unit,简称MMU),指的是将虚拟地址转化成物理地址的模块。MMU包含了两个模块:
页表查找表(Table Lookup Buffer,简称TLB)和页表遍历单元(Table Walk Unit,简称TWU)。TLB是一个高速缓存,用于缓存页表转换的结果,
从而减少页表查询的时间。一个完整的页表翻译和查找的过程叫做页表查询,页表查询是通过硬件模块TWU自动完成的,但是页表的维护需要软件来完成,且存放在主存中,
因此页表查询是一个耗时的过程。当TLB未命中时,MMU才会通过TWU查询页表,从而得到翻译后的物理地址,这个虚拟地址及物理地址的映射,也会存储在TLB中。
2.2 CPU 的工作流程(取指-译码-执行)
CPU 的工作流程通常分为以下几个阶段:
取指(Fetch)
译码(Decode)
执行(Execute)
访存(Memory Access)
写回(Write Back)
取指 (Fetch) → 解码 (Decode) → 执行 (Execute) → 访存 (Memory Access)→ 写回 (Write Back)
1)取指
取指令(Instruction Fetch,简称IF)阶段是将一条指令从cache或主存中,获取指令到指令寄存器的过程。CPU中有一个程序计数器(Program Counter,简称PC)寄存器,其中保存着将
要执行指令的地址。指令读取是通过将PC寄存器的值,输出给cache或者内存,然后由cache或内存返回该值对应地址中的指令。当一条指令被取出后,PC中的数值将根据指令字长度自动递增。
2) 译码
取出指令后,CPU会立即进入指令译码(Instruction Decode,简称ID)阶段。在指令译码阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,
识别区分出不同的指令类别,以及各种获取操作数的方法。指令有很多种,有进行各种运算的指令、控制下一条命令的指令、对内存进行读写的命令,还有对CPU进行控制的指令。
3) 执行
在取指令和指令译码阶段之后,接着进入执行指令(Execute,简称EX)阶段。此阶段的任务是完成指令所规定的各种操作,实现具体指令的功能。
为此,CPU的不同部分的组件被连接起来,以执行所需的操作。例如,执行一个加法运算,ALU将会连接到一组输入和一组输出。输入提供了要进行相加运算的数值,
而输出求和后的结果。如果加法运算产生一个,对该CPU处理而言过大的结果,在标志暂存器里,运算溢出(Arithmetic Overflow,简称AO)标志可能会被设置。
4) 访存
根据指令需要,有可能要访问主存,读取操作数,这样就进入了访存取数的阶段。此阶段的任务是:根据指令中的地址码,
经过MMU将虚拟地址转化成物理地址,根据物理地址得到操作数,在cache或主存中的地址,并从cache或主存中读取该操作数用于运算。
5) 写回
结果写回(Write Back,简称WB)阶段,一般把执行指令阶段的运行结果数据,写回到内部寄存器中,以便被后续的指令快速地存取。在有些情况下,
结果数据也可被写入相对较慢,但较廉价且容量较大的主存。许多指令还会改变程序状态寄存器中标志位的状态,这些标志位标识着不同的操作结果,可被用来影响程序的动作。在指令执行完毕、
结果数据写回之后,若无意外事件(如结果溢出等)发生,CPU就接着从程序计数器PC中取得下一条指令地址,开始新一轮的循环,下一个指令周期将顺序取出下一条指令。
2.3 CPU中断流程
之前我们的计算机都是单核的,那么我们同时运行多个APP,也就是多个进程,计算机好像也是在并行运行,实际上不是,计算机同时只能运行一个进程,
这就是所谓的CPU中断,CPU根据时钟周期来切换执行,因为时钟周期非常短,通常只有几微秒(现代计算机的时钟周期已经在纳秒级了),根本感知不到,
因此就感觉你在聊微信的同时还在写刷剧,是并行的,但实际不一定是并行的,现在基本上都是多核,但即使是多核,最多一核同时处理一个进程。
CPU中断切换的过程如下:
保存PC:保存当前的 PC 的值到内存的某个位置 修改PC:修改 PC 的值,让执行其他执行流 还原PC:其他执行流执行结束之后,通过将刚才保存的 PC 值恢复到 PC 寄存器 继续原执行流:继续中断前的执行流