为什么光速并不会限制芯片面积

为什么光速并不会限制芯片面积

背景

在知乎和B站等一些与“光速”、“CPU”等话题相关等回答和评论区中,有时会遇到这样一种声音:

因为光速太慢,CPU主频又很高(纳秒量级),所以信号在极短时间内只能传播很短距离,故限制了CPU面积只能做很小。

这个说法毫无疑问是错误的,评论区往往也会给出正确的解释,但刨根问底地思考这个问题,也能得出一些之前没用考虑过的东西。

上述说法的基本错误有两点:

  • CPU中信号并不以光速或近光速传播。
  • 在CPU工作的一个周期内,并不需要让信号从跑过整个芯片。

信号的实际传播速度

光速毫无疑问是任何信息传播速度的上限,但电信号传播的速度实际是多少呢?这是一个值得思考的问题。

一般数字电路中,信号的载体是电平这个物理量,电平只有变化才需要传播,否则将会由电路内部的电容来保持。那么我们说传播速度,其实是电平到的变化的传播距离,除以传播时间。

  • 传播距离,即芯片上两个点沿内部实际绕线,走过的的实际距离。
  • 传播时间,说的是起点处电平从000变化到VDD,到终点处,电平从000变化到VDD或从VDD变化到000的时间。

传播距离可以很好确定,但传播时间呢?开始时刻选在何时,电平不可能从000一瞬间变化到VDD,必须在这个变化的过程中挑选出一个点作为起始时刻。一般芯片中做静态时序分析时,信号的传播是以电平变化到0.50.50.5VDD开始计算,到终点变化到0.50.50.5VDD为止。

那么实际问题是,一段包含晶体管、导线的电路,它的输入端加一个迅速从000增加到VDD到电平,如果会引起输出端翻转的话,输出端电平何时到达0.50.50.5VDD。

熟悉电路的应该很快可以断定出来,只要终点处,寄生电容被充足够的电荷,电平就会被抬升到0.50.50.5VDD,为此只要将晶体管抽象为一系列复杂的受控源和无源器件,将导线切割为一段段RLC电路,就可以通过电路分析求瞬态响应的方式求得终点处电容何时能抬升到0.50.50.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项重要操作:降温、升压。

理解这个操作必须回到本质上,信号传播速度,降温和升压都可以提高信号传播速度,从而让芯片整体所有组合逻辑加快,那么频率就可以设置更高。

降温升压对组合逻辑速度的提升,主要是因为对晶体管(电压电压、阈值电压、迁移率等)影响,晶体管电流越大,就能越快对导线电容充电。

欧姆龙FINS(工厂集成网络系统)协议是专为该公司自动化设备间数据交互而设计的网络通信标准。该协议构建于TCP/IP基础之上,允许用户借助常规网络接口执行远程监控、程序编写及信息传输任务。本文档所附的“欧ronFins.zip”压缩包提供了基于C与C++语言开发的FINS协议实现代码库,旨在协助开发人员便捷地建立与欧姆龙可编程逻辑控制器的通信连接。 FINS协议的消息框架由指令头部、地址字段、操作代码及数据区段构成。指令头部用于声明消息类别与长度信息;地址字段明确目标设备所处的网络位置与节点标识;操作代码定义了具体的通信行为,例如数据读取、写入或控制器指令执行;数据区段则承载实际交互的信息内容。 在采用C或C++语言实施FINS协议时,需重点关注以下技术环节: 1. **网络参数设置**:建立与欧姆龙可编程逻辑控制器的通信前,必须获取控制器的网络地址、子网划分参数及路由网关地址,这些配置信息通常记载于设备技术手册或系统设置界面。 2. **通信链路建立**:通过套接字编程技术创建TCP连接至控制器。该过程涉及初始化套接字实例、绑定本地通信端口,向控制器网络地址发起连接请求。 3. **协议报文构建**:依据操作代码与目标功能构造符合规范的FINS协议数据单元。例如执行输入寄存器读取操作时,需准确配置对应的操作代码与存储器地址参数。 4. **数据格式转换**:协议通信过程中需进行二进制数据的编码与解码处理,包括将控制器的位状态信息或数值参数转换为字节序列进行传输,在接收端执行逆向解析。 5. **异常状况处理**:完善应对通信过程中可能出现的各类异常情况,包括连接建立失败、响应超时及错误状态码返回等问题的处理机制。 6. **数据传输管理**:运用数据发送与接收函数完成信息交换。需注意FINS协议可能涉及数据包的分割传输与重组机制,因单个协议报文可能被拆分为多个TCP数据段进行传送。 7. **响应信息解析**:接收到控制器返回的数据后,需对FINS响应报文进行结构化解析,以确认操作执行状态提取有效返回数据。 在代码资源包中,通常包含以下组成部分:展示连接建立与数据读写操作的示范程序;实现协议报文构建、传输接收及解析功能的源代码文件;说明库函数调用方式与接口规范的指导文档;用于验证功能完整性的测试案例。开发人员可通过研究这些材料掌握如何将FINS协议集成至实际项目中,从而实现与欧姆龙可编程逻辑控制器的高效可靠通信。在工程实践中,还需综合考虑网络环境稳定性、通信速率优化及故障恢复机制等要素,以确保整个控制系统的持续可靠运行。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值