本章将讲解CPU的相关知识,涉及电路、逻辑和计算机组成原理,作为我自学CSAPP的第一门笔记,也衷心感谢出视频、博客介绍这部分知识的up主、博主,相关链接都在最后。
1 MOSFET(金属氧化物半导体效应晶体管)
1.1 半导体(N/P型掺杂)
众所周知,半导体的原材料Si,其最外层有4个电子,Si原子之间会形成共价键,是一种稳定结构,几乎不导电。
- N型掺杂,指将磷原子P掺杂进硅Si中,因为P最外层有5个电子,这使得在形成4个共价键的情况下,会有1个不太受束缚的自由电子,因此导电性上升,此时的载流子为电子。
- P型掺杂,同理,将硼原子B掺杂进硅中,因为B最外层只有3个电子,这使得在形成3个共价键的情况下,会有1个空穴,其他的电子可以移动到空穴中,表现为空穴的不断移动,此时的载流子为空穴。
1.2 NP结、耗尽层、二极管
如图我们在一块硅晶体的两边分别进行P型掺杂和N型掺杂。
- 此时,N型掺杂中电子密度高,因为扩散作用,电子会自发地从N型区域向P型区域扩散,并于空穴结合。
- 由于扩散作用,在交界处,N型区域呈现正电性,P型区域呈现负电性,从而形成了N->P的电场,此时电子扩散运动方向和电子受力方向相反,最终会达成一个平衡。
- 达成平衡后,其他的电子将无法跨过电场到达P型区域,在交界处附近形成了一个没有载流子(电子/空穴),且内建电场的耗尽层。
接下来,介绍二极管。
对于这样一个NP结而言,如果外接电源,正极接P,负极接N,那么如图所示,电池所提供的电场与内建电场方向相反,当电池电场足够抵消内建电场时,电子就将自发地按扩散方向流动,从而导通。
相反地,如果正极接N,负极接P,那么,电池所提供的电场与内建电场方向相同,会加剧内建电场的效果时,耗尽层扩大,从而无法导通。
1.3 MOSFET(NMOS/PMOS)
与二极管的原理一致,我们先介绍NMOS。
我们在P型掺杂的肩膀处加入两处的N掺杂,在两处交界处都会形成耗尽层,而二极管只能从P导向N,因此此时对于这样一个结构,无论正接还是反接都无法导通。
此时我们借助电容,因为电容器可以通过电压来控制电场,我们在上层两块N型掺杂区域中间,加入电容器正极 和 绝缘层,P型区域充当电容器负极,那么将会产生正极->负极的电场,当电压足够,电场足够强时,电子会被吸引到N型区域中间,不仅填充了空穴,并且还会有大量的自由电子,其性质类似于N型掺杂,从而连通了两个N型区域,拥有了导电性,中间这个区域被称为N沟道。
这样一个MOSFET被称为NMOS,它具有以下的性质:
- 电压高于阈值电压,可以导通。[高压导通]
- 电压低于阈值电压,不导通。[低压不导通]
如果我们将N型、P型区域调换,并且电容正负极也调换,就会得到PMOS,其性质正与NMOS相反。
- 电压高于阈值电压,不导通。[高压不导通]
- 电压低于阈值电压,可以导通。[低压导通]
利用NMOS与PMOS,并且借助串联、并联的组合,我们就可以通过输入电信号的高低压来得到不同的输出,即各种逻辑电路。
2 逻辑门
2.1 非门
直接上图,非门由一个连接高压VDD的PMOS和连接电压VSS的NMOS组成。
- 当A输入电压为高压时,PMOS不导通,NMOS导通,那么B处相当于直接与低电压VSS相接,输出低压。
- 当A输入电压为低压时,NMOS不导通,PMOS导通,那么B处相当于直接与高电压VDD相接,输出高压。
我们认为高压为1,低压为0,那么这就是一个基础的非门电路实现。
2.2 或门 与门 或非门 与非门
直接上图,非门电路由或非门和非门组成,其对应的电路图、符号、真值表如下。
与门结构上与或门很类似,将PMOS和NMOS的串联、并联方式进行了更改,同样由与非门和非门组成。
2.3 异或门 同或门
这里着重介绍异或门,异或的逻辑为相同为0,不同为1,运算法则为a⊕b = (¬a ∧ b) ∨ (a ∧¬b)。
在实现上,异或门与或门只有输入为(1,1)时不同,异或门的输出为0,因此借助或门、与非门、与门就可以组成对应的异或门,如图所示。
3 加法器Adder 与 减法器 Subtractor
3.1 半加法器Half Adder
对于1位(1 bit)的加法而言,有两个输入和两个输出。
两个输出分别为本位和Sum,进位Carry,简写为S和C。
- S的计算可以通过异或门得到,0+0=0,1+0=1,0+1=1,1+1=0
- C的计算通过与门得到,只有1+1=10的时候存在进位1
3.2 全加法器Full Adder
事实上,除了最低位,加法器应该总共有三个输入,除了本身的输入的加数与被加数,还有低位进位C,具体表如下
电路中S由2个异或门得到,而C由异或门、与门、或门组成,其逻辑表达式和逻辑电路图如下
3.3 行波进位全加法器 / 串行进位全加法器(Ripple-carry Adder,RCA)
使用串行电路,通过1个半加法器和n-1个全加法器组成n位的整数加法器。
行波进位的缺点在于依赖性,进位是串行进行的,必须得到低位的进位才能计算高位的进位,速度慢。
3.4 超前进位全加法器 / 并行进位全加法器(Carry-lookahead Adder,CLA)
RCA慢的原因在于进位C的计算具有高度先后顺序,因此CLA的思路就是空间换时间,利用表达式的展开,将进位所需的计算结果提前全部算出,下图为4位加法中,每一位所产生的进位,其中Gi=Ai·Bi,Pi=Ai⊕Bi,都是在输入A、B的一开始,就可以并行计算得到的结果。
具体的电路如下图
这种加法器的问题在于随着位数的增加,所需要的门电路会迅速增长,对制造工艺和面积要求而言都是巨大挑战,事实上实际的ALU中,往往采用RCA和CLA混合的架构。
3.5 减法器Subtractor
众所周知,计算机的减法是利用补码来表示负数从而实现的,因此我们只需要关注求补电路即可。
补数=反数+1,那么可以使用一个非门和加1的加法器组装得到。具体的求补电路和减法器如图所示
3.6 乘法器Multiplier
最后补张乘法器的图,以后有空在慢慢琢磨。
4 总结
从底层的元件起步,确实开始一点点地感受到计算机的奥妙所在,没有那么云里雾里了。
就是一个下午看了太多内容,不仅这一小部分,还有后面的寄存器、内存、指令程序、CPU设计、多进程等等,感觉脑子要爆炸了,一个下午像是上了半个学期的内容,只好先写一点最简单的部分,巩固一下。
只能说走出舒适区是痛苦的,但也是不得不为的,一会儿打算再看一会儿书,不想盯着视频看了。
——2023.3.12
参考链接:
【硬件科普】带你认识CPU第00期——什么是MOSFET