时序逻辑、时钟与状态机
组合逻辑没有记忆:输出只看当前输入。但计算机要记住状态——寄存器、内存、程序计数器。本章讲记忆如何用反馈构造,时钟如何把连续时间切成离散步,以及"主频"为何在 2005 年后停止增长。
从反馈到锁存器
Section titled “从反馈到锁存器”把两个非门首尾相接( 接回输入),得到一个双稳态电路: 或 都能自我维持——这就是记忆的最小物理形态。给它加上置位/复位输入,就是 SR 锁存器。
锁存器的问题在于电平敏感:使能信号有效期间,输入的任何变化都会穿透到输出。触发器(flip-flop)用主从结构解决:两个锁存器串联、时钟反相驱动——主锁存器在时钟高电平采样,从锁存器在低电平输出,于是数据只在时钟边沿改变输出。工程上记住这个等式:触发器 = 两个锁存器 + 时钟边沿。
时钟:把时间切成离散步
Section titled “时钟:把时间切成离散步”时钟信号让所有触发器在同一瞬间更新。同步设计的关键约束是建立/保持时间:
- 建立时间(setup):数据必须在时钟边沿之前提前稳定;
- 保持时间(hold):数据必须在时钟边沿之后继续稳定一段时间。
一个时钟周期内,信号要走过:触发器输出 → 组合逻辑 → 下一个触发器输入。关键路径(最长的这条延迟)决定最高频率:
即关键路径延迟决定最高频率。流水线(→ 流水线、冒险与乱序执行)的本质就是把长组合逻辑切成几段、插进触发器,用更多级换取更高的频率。
寄存器(一组触发器)+ 组合逻辑构成有限状态机(FSM),是所有控制逻辑的基础:
- Moore 型:输出只依赖状态;
- Mealy 型:输出依赖状态与输入,响应更快。
设计路径与组合逻辑一样机械:画状态转移图 → 列状态表 → 状态编码(one-hot 或二进制)→ 推导转移与输出方程 → 映射为触发器与门。CPU 的控制器、总线仲裁、协议适配器,都是不同复杂度的 FSM。
功耗墙与频率的终结
Section titled “功耗墙与频率的终结”时钟频率的物理上限来自功耗。动态功耗近似为
其中 是开关电容、 是电压、 是频率。提高频率需要提高电压(缩短门延迟),而功耗随电压平方增长。2005 年前后,散热达到了当时封装能承受的极限——功耗墙终结了频率竞赛。产业的应对是把多余晶体管用来造更多核而不是更快的单核,多核时代由此开启,并发编程(→ 并发与同步)从选修课变成必修课。
时钟分配本身也是问题:把同一个时钟送到芯片各处并保持同步(时钟树综合)消耗大量功耗;现代设计大量使用时钟门控(clock gating,闲时停钟)与多电压域。
- 触发器 = 两个锁存器 + 时钟边沿;锁存器电平敏感,触发器边沿敏感
- 建立时间与保持时间是同步设计的硬约束;关键路径延迟决定最高频率
- 流水线 = 把长组合逻辑切段插触发器,用级数换频率
- 功耗墙()终结了频率竞赛,开启多核时代