为什么光速并不会限制芯片面积
背景
在知乎和B站等一些与“光速”、“CPU”等话题相关等回答和评论区中,有时会遇到这样一种声音:
因为光速太慢,CPU主频又很高(纳秒量级),所以信号在极短时间内只能传播很短距离,故限制了CPU面积只能做很小。
这个说法毫无疑问是错误的,评论区往往也会给出正确的解释,但刨根问底地思考这个问题,也能得出一些之前没用考虑过的东西。
上述说法的基本错误有两点:
- CPU中信号并不以光速或近光速传播。
- 在CPU工作的一个周期内,并不需要让信号从跑过整个芯片。
信号的实际传播速度
光速毫无疑问是任何信息传播速度的上限,但电信号传播的速度实际是多少呢?这是一个值得思考的问题。
一般数字电路中,信号的载体是电平这个物理量,电平只有变化才需要传播,否则将会由电路内部的电容来保持。那么我们说传播速度,其实是电平到的变化的传播距离,除以传播时间。
- 传播距离,即芯片上两个点沿内部实际绕线,走过的的实际距离。
- 传播时间,说的是起点处电平从 0 0 0变化到VDD,到终点处,电平从 0 0 0变化到VDD或从VDD变化到 0 0 0的时间。
传播距离可以很好确定,但传播时间呢?开始时刻选在何时,电平不可能从 0 0 0一瞬间变化到VDD,必须在这个变化的过程中挑选出一个点作为起始时刻。一般芯片中做静态时序分析时,信号的传播是以电平变化到 0.5 0.5 0.5VDD开始计算,到终点变化到 0.5 0.5 0.5VDD为止。
那么实际问题是,一段包含晶体管、导线的电路,它的输入端加一个迅速从 0 0 0增加到VDD到电平,如果会引起输出端翻转的话,输出端电平何时到达 0.5 0.5 0.5VDD。
熟悉电路的应该很快可以断定出来,只要终点处,寄生电容被充足够的电荷,电平就会被抬升到 0.5 0.5 0.5VDD,为此只要将晶体管抽象为一系列复杂的受控源和无源器件,将导线切割为一段段RLC电路,就可以通过电路分析求瞬态响应的方式求得终点处电容何时能抬升到 0.5 0.5 0.5VDD。
以上分析和光速关系不大,因此这个信号传播时间更重要的是取决于导线的性质、晶体管的性质,它实际上是远远慢于光速的。
但为什么有些刻板印象中电信号传播速度就是近光速呢?回到对电磁现象最精确的理论——电动力学中,再考虑上述过程,可以这样分析:当起始点的电平升高,这意味着电场强度发生了变化,这个变化的场强将以光速沿电路传播,因此信号变化这个事件确实是光速传播的。
但导体对这个影响的回应并不是立刻就完成的,它需要电荷的移动来影响电场,并建立新的静电平衡。电荷移动重建稳态的过程并不是光速那样快的。这个电场和电路中物理实体相互影响的过程,被抽象为电容电感等。难怪教科书中RC电路的含时解叫瞬态响应,这个名字很贴切,不仅是电路响应电压变化的过程,也是电荷响应电场变化的过程。
以上分析还未考虑晶体管器件,事实上,晶体管的高度非线性特点,开关后对电场的响应将有极大区别,因此晶体管开启后,它驱动的电路将被它的电场变化主导,而非最初已经传播过来的电场,因此晶体管本身就对传播延迟贡献很大。
从数字电路静态时序分析的角度来说,普遍情况下,晶体管对信号的传播更慢,导线更快一点,当然也非绝对,如果导线很多或很长,其寄生电容巨大,也可能导致信号在导线上充电耗费更大的时间。
总而言之,信号的传播速度远远不如光速,至少低光速数个数量级。认同这个结论,就自然的想到下一个问题,信号传播速度这么慢,这么高频率怎么保证信号传到目的地的。
芯片的频率被什么限制
这个问题算是很基础的问题,数字电路中实际电路往往是“寄存器——组合逻辑——寄存器”这样的链路,组合逻辑没有存储功能,它执行实际运算,寄存器负责存储中间结果或最终结果,时钟来时,它立刻释放寄存的结果,并寄存新的值。
先说结论,限制芯片频率的是这种寄存器和组合逻辑链路中,组合逻辑消耗的最大信号传播时间(也受寄存器本身建立保持时间、时钟抖动、时钟布线等影响,但这些影响因素贡献一般不会超过组合逻辑延时)。
假设时钟是理想的、寄存器也是理想的,一个2GHz的CPU,每0.5ns发射一个脉冲,对于结构“寄存器A——组合逻辑B——寄存器C”而言:
- 0时刻收到第一个脉冲,寄存器A释放寄存的值给组合逻辑B处理
- 0.5ns后收到第二个脉冲,如果B计算数据超过了0.5ns,那么意味着此时C此时需要的数据没有被准备好,整个电路就无法执行正常功能了;如果B计算数据时间小于0.5ns,这意味着C此刻可以收到正确数据来寄存。
以上分析可知,如果组合逻辑时间过长,时钟必须降频,否则有计算出错的风险。实际上可以得出一个结论,时钟频率决定的周期,这个时间只需要保证信号从一个寄存器传播到它相邻的寄存器即可。而电路中往往寄存器不会距离很远。
芯片面积被什么限制的
这个问题最贴近现实的回答是成本。芯片制备工艺在如此精细的环境中,很容易在晶圆上产生一些缺陷点,而数字电路一般不会设置什么冗余,一个晶体管或导线如果位于执行计算逻辑、重要控制逻辑、存储逻辑的链路上,它的损坏将导致整个芯片失效。
这种情境下,如果制造一个晶圆大小的巨大芯片,几乎很难避免缺陷的发生,那么几乎肯定变废片,除非一遍遍流片,用大数定律去赌有一次运气很好,整个晶圆毫无缺陷,那么才能得到一块成品芯片。这样肯定成本爆炸了,同理,芯片切的越小,良品率将越高,因为晶圆上总有大片面积是没有缺陷的。
为什么可以超频
这是一个和前面几个问题有所相关的问题。芯片的正确性,主要表现在频率能否满足最大组合逻辑延迟,那么为什么CPU可以超频呢。
超频,即主动提高CPU工作频率,有时是因为CPU设计者在设计电路中频率就给的比较保守,比如最高能跑到3GHz,但标准频率只给到了2.5GHz,因此超频到2.8GHz当然也能正常工作。
但也有人超频到远远超出设计频率,这往往需要2项重要操作:降温、升压。
理解这个操作必须回到本质上,信号传播速度,降温和升压都可以提高信号传播速度,从而让芯片整体所有组合逻辑加快,那么频率就可以设置更高。
降温升压对组合逻辑速度的提升,主要是因为对晶体管(电压电压、阈值电压、迁移率等)影响,晶体管电流越大,就能越快对导线电容充电。