这个问题非常好,我在高中学习物理时就想过这个问题。
因为高中物理力学有一类题目是计算机械做功效率,对于电机类设备通常会以物体实际上升的距离乘以他的重量得到有效功,然后除以电机本身消耗的功率,就可以计算出一台电机的实际工作效率。
再来看看题主的题目
其实要回答题主这个问题,我们可以先探讨另外一个问题: CPU 的做功效率究竟是多少?
换句话说, CPU 究竟做了哪些功,我们又实际需要 CPU 做的「总功」中的哪些「有效功」?
先来看一本非常著名的数字电路与计算机组成原理领域的科普书籍【 编码:隐匿在计算机软硬件背后的语言 】
我非常推荐所有对 CPU 或者数字电路感兴趣的同学都应该去拜读一下这本经典科普读物, 在这本书中,作者用非常通俗易懂的方式告诉读者——计算器或者计算机究竟是如何在一瞬间得出计算结果 。
其实就是将我们通常用的十进制加法先使用「编码」方式转换到二进制,这样方便使用电路的「接通」和「断开」状态来表示数字,然后接着只需要用画真值表的方式找规律(就像小学数学找规律一样)找出加法实际上是 「在二进制下做 XOR 异或运算和 AND 与运算」 这个规律,接着我们再同样用「编码」的逆运算,即「解码」的方式把二进制转换回到我们人类易懂的十进制表示法。这就是为何电子计算机可以极快地运算的原因。
好了,我们来整理一下思路,电脑做运算实际上有三个步骤——十进制编码到二进制、XOR 异或和 AND 与运算,二进制解码回十进制
这时候可能有人会说:计算机做运算好麻烦啊,居然要三个步骤,我小学背过 99 加法表,我只要一步就能得到结果。但是你别忘了,电信号传播是非常快的,电信号在编码解码电路以及 XOR、AND 等门电路中是 以接近于光速的速度传播 (实际速度受到电路中介质的影响,在电磁学中通常是通过关注介电常数以及导电面积和体积等方式来研究讨论电子器件状态的转换速度),所以虽然电脑步骤多,但是它每一个步骤都可以做得比我们人类快。
好了,讲完了加法器,在书中作者又描述了如何使用电磁继电器和单刀单掷开关这种我们在初中就见过的实物来搭建一个简易计算器。因为这些物品相对于晶体管,集成电路芯片来说更加廉价易于获得,更让我们普通人感到亲切。
好了,关于【编码】这本书的内容就说道这里。下面来讨论题主的正题,CPU 在计算的过程中究竟将电能转化成了什么能,CPU 工作效率究竟应该如何计算呢?
我们先来看一个使用电磁继电器组成的计算机,它的工作效率是什么,它在计算又将电能转换成了什么能。
由于加法器中的 XOR 异或门用电磁继电器搭建还是有点复杂,所以我打算用 AND 与门来分析
AND gate 又叫 与门,简单来说就是当两个输入都同时为 1 时,输出才为 1,否则就输出 0。
在初中我们学过串联电路,所以很容易想到只要将两个电磁继电器串联,就能实现我们的目的。
电磁继电器这个器件,实际上是通过给绕在圆柱筒上的线圈通电(也叫通电螺线管),然后会产生一个轴向的安培力(大学物理电磁学中的 Biot-Savart Law 毕奥-萨伐尔定律会更进一步探讨安培力的细节),这个力量其实是通电螺线管产生的磁场中的磁力,会吸引电磁继电器上端的小铁片往下运动,因此接通电路。
从以上的工作原理可以看出,电磁继电器组成的计算机中,计算的本质就是电能转换为磁场,磁场和铁片互相吸引产生了机械能的传递,最终接通了电路,也就完成了一个 AND 逻辑的运算(这种运算叫做布尔逻辑运算,我们小学学过的四则运算在数字电路领域通常称作算术运算)。
但是请注意这里还有一些细节没有讨论到。
首先就是通电螺线管本身就是一些导线(严格来说是漆包线),漆包线的电阻其实并不小,根据初中学过的焦耳定律,电流流过电阻会发热,因此这里我们为了完成一个逻辑运算,还额外做了其他功,将一部分电能转化成了内能(热能)。
另外一个细节是: 这个电磁继电器组成的计算器的计算速度究竟是多少呢?换句话说,这个电磁继电器的小铁片每秒钟可以上下摆动多少次? 因为我们讨论计算速度时,本质上就是在讨论 每秒钟可以给这个电磁继电器提供多少次不同的输入,然后又得到多少次不同的输出 。首先,作为一个中学生,我们可以想到的是铁片本身是固定在某个转轴上,这个转轴并不是绝对光滑,而是会有一定的摩擦阻力,它限制了我们的电磁继电器的状态切换速度,并且摩擦本身还会发热,这里又无形中将一部分电能转换出来的机械能又间接转换成了内能。
但是当我们再长大一点,在大学学习了电磁学这门课,我们可能会学到一个知识叫做 RL 电路,R 是 Resistance 电阻,L 是 Lenz(为了纪念发现楞次定律的 Lenz 先生),因此我们通常称电感为 L。RL 电路在电流方向发生改变的时候,根据楞次定律,会对电流产生阻碍,这里不探讨楞次定律的具体细节,我们只要知道有这么一个定律的存在,导致通电螺线管里面的电流无法快速变化就对了。
关于电磁继电器的部分我们就讲完了。但是电磁继电器只是三大计算步骤的第二步
即「运算」步骤,一个计算器只运算还没用,它还得以某种方式将运算结果输出给我们人类,让我们人类可以理解或者容易读取,这种方式有很多,例如我们可能会点量几个白炽灯,但是白炽灯一是费电,二是白炽灯只能输出发光和熄灭两种状态,也就是我们只能以二进制的方式去读取计算结果。如果我们想直接读取十进制的计算结果,可能有人会想到用数码管,它长下图这个样子,相信大部分人应该都见过吧
这些数码管本质上就是一系列的 LED 发光二极管组成,只不过他们按照一个阿拉伯数字 8 的方式排列,这是因为 8 这个方式排列,可以点亮其中任何或者全部的 LED 来显示阿拉伯数字的 0 到 9。
所以电磁继电器的小铁片最终应该是要连接到这些数码管上,根据不同的数字点亮其中不同的 LED 发光二极管,这样我们就能很容易地看出计算结果是多少了。 而我们最终希望看到的这个 LED 灯的显示状态,才是我们想要的算术结果,也就是说这个数码管中的 LED 灯消耗的电能以及转换出来的光能才是我们真正需要的东西,它就是整个计算器中的「有效功」,而那些线圈发出来的热,铁片摆动的机械能都并不是我们需要的效果,反而它们发出来的热量会影响我们使用计算设备的用户体验,例如手机发热让我们握持手机时感到难受,因此那些做功可以归结为「无效功」。
总结一下,所有从电磁继电器的线圈流过的电流和加在电磁继电器线圈两端的电压做工其实都是「无效功」,而小铁片两端连接的那个灯泡,或者上述例子中的 8 位数码管做的功是「有效功」。
对应 BJT 三极管中,控制端也就是 Gate 栅极和 Source 源极之间做功也是「无效功」,受控端也就是 Drain 漏极和 Source 源极连到外面的输出电路做功都是有效功。
对应 MOSFET 金属氧化物半导体场效应晶体管中,控制端也就是 Base 基极和 Emit 发射极之间做功也是「无效功」,受控端也就是 Collect 集电极和 Emit 发射极连到外面的输出电路做功都是有效功。
之所以说受控端上的设备做功为有效功,是因为 我们目的就是让 CPU 这个控制器控制输出电路通电工作。例如我们需要用 CPU 接通一个电风扇工作,那么我们希望的是 CPU 本身不消耗太多功率(甚至是完全不要消耗任何功率),但是风扇本身吹出来的风是我们需要的东西 。
但是这个世界不是完美的,无论是电磁继电器,BJT 三极管,还是 MOSFET 金属氧化物半导体场效应晶体管,它们的控制端不是理想的绝缘体,受控端也不是理想的超导体,Gate 和 Source 之间一定会有漏电流,Drain 和 Source 之间也一定会有电阻,这些称作寄生参数,它们产生的能量损耗还远大于高赞答案中提到的「兰道尔原理」中修改一个 bit 需要的最低能量,这也是为什么现在的 CPU 用起来那么烫还那么费电的原因。
好了,关于电磁继电器与电磁继电器式计算器的故事讲完了。我们已经彻底弄清楚了由电磁继电器组成的计算器在运算过程中究竟都做了哪些功,因此题主的问题
也就有了答案,在这里,这个由电磁继电器组成的「青春版 CPU」是 将电能转换成了机械能进行运算,又转换成了热能释放到了空气中,最后解码电路又将运算结果转换成了光能显示给了我们看 。这些光能以电磁辐射的方式发射到空气中,也会以光子的形式打在我们的眼球上,最后由我们的大脑接受并且理解这个计算结果。并且我们还额外学习到了如何计算「电磁继电器组成的计算器」的工作效率。
但是故事还没有讲完,从电磁继电器到电子管、BJT 三极管、MOSFET 互补金属氧化物半导体场效应晶体管,再到我们现在的 ASIC 超大规模集成电路,这仅仅不超过半个世纪的时间,运算电路是如何快速演进,它们又是如何改变了我们的生活。我也许会在不久的将来继续完成这方面内容的科普写作,敬请期待。
最后再抛给各位一个小问题:电磁继电器的工作效率还能继续优化吗?我们可以尝试着挑战一下电磁继电器工作效率的极限!!
提示:
运算电路部分,我们只是需要电磁继电器产生一个接通和断开的操作,这个操作其实并不需要那么长那么大的通电螺线管和小铁片,也许一个指甲盖那么大的小铁片也能接通和断开电路, 但是指甲盖那么大的小铁片还是太大了,我们可不可以用一毫米,一微米,甚至一纳米的铁片呢?我们知道世界上最小的物质是电子,更进一步,我们可以直接用世界上最小的物质来控制电流通断,这样就能极大降低需要驱动电路通断而产生的电磁场强度,也就可以降低功耗。 后来的科学家按照这个思路发明了 BJT 晶体管和 MOSFET 场效应管,它们这些电子器件可以在微观世界中通过电子这种极小的物质产生非常微弱的电场,来控制电路的通断,达到用最少的功耗来控制电路的目的。
解码电路部分,我们眼睛看数码管真的需要那么大一只数码管吗?也许一个指甲盖那么大的数码管我们也能看清嘛,毕竟我们还是初中生,并没有老花眼,即使是很小的物体我们也能看清楚。即使我们想给家里有老花眼的爷爷奶奶外公外婆炫耀一下自己做的「青春版 CPU」,我们也可以给他们配一副老花镜或者放大镜嘛。再更进一步,我们的数码管亮度其实也并不用非常亮,我们只需要让它发出一丁点微弱的光芒,我们拉上窗帘盖起被子也能看清的那种亮度就够了。这可以为我们节约不少电能呢!可是发光二极管可以无限变暗吗?好像并不可以,因为二极管内部的 PN 结必须要大于 0.7 V 才能够导通,而要让这个 PN 结发光,也必须要达到一定导通电流,如果用数码管或者 LED 并不能让我们继续挑战低功耗计算器的极限,我们可能需要更换其他能够读取计算结果的方式,例如我们可以使用超低功耗的液晶屏,E-lnk墨水屏等。 但是观测运算结果的设备消耗的功耗并不能无限降低,因为当输出设备的功耗降低了,意味着我们需要用更昂贵更先进的观测手段来观察这一非常微弱的状态变化,这样做得不偿失,所以工程师需要在观测设备和输出设备之间寻找一个平衡。 目前看来像液晶屏这类输出设备就是比较平衡的做法,肉眼就能看清,因此对于观测设备的成本要去为 0,液晶屏要产生人眼能够看清的亮度也不会消耗太多功耗,所以总得来说运算电路驱动液晶屏输出运算结果是目前性价比最高的解决方案。
好了,提示已经给了这么多,剩下的就靠各位发挥想象吧。
希望你们看完这些内容之后能对电子工程这个领域产生更多兴趣,将来能利用这些科学技术为我们全人类带来更加美好的生活!