掘金 后端 ( ) • 2024-04-12 17:25

1.时钟

目前绝大多数的处理器都是被同步时序电路所驱动,目前也有Asynchronous sequential logic(异步时序逻辑),即不需要时钟信号做同步。但是这种异步逻辑电路虽然速度比同步时序电路快,然而设计起来比同步时序电路复杂的多,并且会遇到空翻现象(race condition),所以,现在绝大多数的CPU还是需要时钟做信号同步的。

2.数字系统:用离散量(高低电压表示1和0)表示所有值

3.CMOS原理

我们用晶体管作为电路导通或断开的基本开关

在计算机和大多数现代电子设备中,晶体管通常指的是 MOSFET(金属氧化物半导体场效应晶体管)。MOSFET 由源极(source)、漏极(drain)和栅极(gate)组成,通过在栅极(gate)上施加电压,可以控制从源极(source)到漏极(drain)的电流流动。

CMOS 是“Complementary Metal-Oxide-Semiconductor”的缩写,翻译为“互补金属氧化物半导体”,在 CMOS 技术中,电路由 PMOS(P型金属氧化物半导体)和 NMOS(N型金属氧化物半导体)晶体管组成。

image.png 注意:电路断开是open,导通是close!!!

eg:非门的原理 image.png

eg:与非、或非门的原理,其实就是把P结、N结串并联 image.png

一、组合逻辑电路(combinational logic, cl)

二、时序逻辑电路(sequential logic, sl)

1.延迟

  • Setup Time: how long the input must be stable before the clocktrigger for proper input read(照相机按快门前人需要保持不动的时间)
  • Hold Time: how long the input must be stable after the clock triggerfor proper input read(按下快门后人仍需要保持稳定的时间)
  • “Clock-to-Q” Delay: how long it takes the output to change,measured from the clock trigger(按下快门后直到照片生成出来的时间)

2.时钟的速度限制

关键路径:电路中两个寄存器之间(包括自己到自己)延迟最大的那条电路

clk的周期必须大于关键路径的延迟

image.png

如果clk的周期小于关键路径的延迟,那么正确的输入信号还没有走完路径来到reg,下一个clk就到来了,此时reg接收到的数据是还没更新完的数据,就会产生错误。

clk的最短周期=clk1的clk to Q delay + 组合逻辑delay + clk2的setup time

clk的最大频率=1/clk的最短周期

电路的最大频率则是把每一对寄存器的最大频率都找到后取最小值

3.流水线pipelining(空间换时间)

在critical path中插入寄存器,可以把critical path缩短,从而提高clk的最大频率(类似于一群人排队递水桶和一个人搬水桶的区别)

加入新的reg后,虽然一个数据走完电路需要的的时间变长了(reg带来的延迟)、需要经历的clk数增加了,但是新旧数据切换的时间变得大大缩短,提高了吞吐量(计算速度本质上是要求新旧数据切换的速度,数据在电路中本身走的速度不重要)

ps:

有符号数溢出:

  • 首先,减法就是加其补码,我们只考虑加法。其次,只有正数+正数、负数+负数可能产生溢出。
  • 假设数据为n位,MSB为第n-1位,LSB为第0位,低位进位为C0,其他进位为Cn到C1,
  • 两个正数相加一定没有进位,即第n位一定为0,而一旦第n-1位为1,说明加出来一个负数,则溢出
  • 两个负数相加,第n位一定为1,而一旦第n-1位为0,说明加出来一个正数,则溢出
  • 综上,判断有符号数溢出的条件:Cn xor Cn-1(Cn和Cn-1为最高位的两个1位加法器的进位输出)

无符号数溢出

  • 假设同上

  • 无符号数加法溢出的条件:Cn == 1

  • 无符号数减法溢出的条件:Cn == 0

    证明:假设a-a,a的补码为a各位取反再加1,因此与a相加正好得到0,正好产生进位Cn=1,而如果是a-b且b>a,那么-b的补码只看n-1位到0位,当做无符号数看待,其绝对值是比-a的补码的n-1位到0位的无符号数要小的,因此 b + -b的补码 正好不会产生进位Cn