|||
别忘了模拟计算机 (180212)
闵应骅
本人在前面的博客中多次提到过模拟计算机,它虽然是曾经被人遗弃的计算机,但当数字计算机碰到瓶颈问题的时候,容易使人回想起模拟计算机的好处。刚出炉的IEEE Spectrum 2018/02月号上发表哥伦比亚大学the Edwin Howard Armstrong Professor,(电气工程讲席教授,这里所说的讲席教授是指由特定个人或公司每年给他提供一定经费的杰出教授),IEEE Fellow,Yannis P.Tsividis的长文,“Not Your Father’s Analog Computer”。
一台模拟计算机是由你想要解的方程支配的物理系统。你给出初始条件,模拟计算机的变量随时间变化,其结果就是该方程的解。用一个浅显的例子,把一根管子和一个水桶看作一台模拟机,它就可以做积分。调整管子的水流如被积函数,水流入水桶,积分值就是水桶中的水量。当然,早期的模拟计算机都是用机械,包括轮子和传动装置,主要是为了计算潮汐,如后面的图1所示,我们可以叫它机械模拟计算机。
到了1950年代,出现了电子模拟计算机。电子模拟计算机用成千上万电子管,后来用晶体管,通过面板用线编程。后面的图2示出电子模拟计算机PACE 16-31R,它是由Electronic Associates Inc.生产,于1950年代安装在克利夫兰的NASA路易斯飞行推进实验室,用于NASA的阿波罗计划。1969年阿波罗的首次登月应该说是工程史上最伟大的成就,它用的是模拟与模数混合的计算机。NASA用它做模拟,甚至参与控制。
半个世纪前,模拟计算机如此重要,但现在差不多被人遗忘,原因是限于1970年代的技术,其设计、建造、操作和维护太困难了。直到数字计算机出现,直接编程、算法操作、容易存储、高精度和处理不同大小问题的能力就把模拟计算机打垮了。MOS集成电路的出现使大量晶体管开关集成在一个小芯片上。于是,模拟计算机生产厂家把数字电路引入系统,成为数模混合的计算机。但为时已晚,最大的数模混合计算机出现在1970年代。
今天的MOS技术已经大大进步了,在手机的接收和发送器里、在复杂的生物医学装置里、在各种消费电子设备里、在物联网的各种智能设备里都大量出现。如果数模混合计算机也能使用,情况就和半世纪前完全不同了。
为什么要用电子模拟去做计算呢?因为传统的数字计算机正在逼近它的极限。费电、发热,热到可以油炸鸡蛋。大型微分方程的计算中还要同时计算已经使用的能量,这就延长了计算时间,浪费了能量。
15年前,该文作者的博士生研制了一个模拟计算机芯片。在一个芯片上,包含模拟积分器、乘法器、函数发生器和其他电路模块,布局成可编程门阵列的形式,即各模块嵌入线海中,以便在芯片生产后可以形成各种连接。
数字编程可以把模拟块的输入连到另一个块的输出,从而创建一个系统,体现你要解的方程。不需要时钟,电压和电流是连续变量,不是离散分步。这个计算机可以解复杂的单变量方程,其精度可以达到百分之几。对于某些应用来说,这个精度已经够用了。如嫌不够,可以把近似输出送到数字计算机精确化。这时,数字计算机从一个非常好的初始解开始逼近,速度可提高10倍,而且很容易达到节能所需的数量级。
现在,在哥伦比亚大学,两个学生,Ning Guo和Yipeng Huang(这两个学生我估计是中国人,所以列出他们的名字)和两位老师和该文作者创建了第二代单芯片模拟计算机。如后面的图3所示。所有模块同时工作,数字部分要求高度并行结构。这种芯片复制多个在一个芯片上就可以解大型问题。
这种新的设计更有效使用能源,很方便与数字计算机相连。这样形成的混合计算机把二者结合起来了:高速低耗的模拟近似计算和编程、存储、高精度的数字计算结合了起来。
他们最近的芯片不但包括模拟的积分器和乘法器,而且包括计算任意数学函数的新电路。
数字计算机只认高低两个电位,作为0和1。0和1之间的转换过程靠时钟把它避开。数字电路的单输出输出一个0和1的序列,每一个时钟出一个。而他们用一个所谓连续时间数字,它不同于异步数字逻辑,它是一个无时钟二进制信号,它可以在任何时刻改变。他们已经建造了模数、数模转换器和数字存储器来处理这种连续时间的数字信号。
他们可以把模拟信号送到模数转换器,变成二进制数,存入存储器。其输出送到数模转换器。这种连续时间电路得到可编程的模拟输入、模拟输出的函数发生器。
他们已经用他们的计算机计算微分方程,精度达到百分之几。和数字计算机比起来这精度不高,但对许多实际应用已经足够了,譬如机器学习、计算机视觉、生物信息学和大数据挖掘,因为其输入信息本身就是近似的。
由于他们的计算机基本是模拟的,它可以直接连接传感器和执行机构,而其速度可以达到实时交互。
当然,他们的办法还有问题。一个问题是当问题比较复杂的时候,需要许多模拟模块,使芯片变大,而且昂贵。一个解决办法是把问题分解为较小的几个问题。另一个问题是并不是芯片上随便两个电路块都可以连起来,否则线网过于复杂和膨大。三维制造技术也许能帮忙。但目前还没有解决。
对某些应用,不计成本的话,我们可以考虑整块硅片集成。一个300毫米的硅片可以集成10万个积分器,从而模拟10万个耦合的一阶非线性动态方程,或者5万个二阶非线性动态方程。例如模拟大型分子阵列动态变化时可能就用得着,耗时毫秒级,耗电约几十瓦。
实验表明,这种计算机是可行的,模拟误差的叠加而至累积也可能相互补偿。如真能实现,许多特性是今天的数字计算机不能比的。同样的问题在数字机上可能需要几天或几个星期。当然,许多问题尙待研究,譬如怎么分解任务到模拟和数字部分;怎么把大问题分解为较小的问题,然后综合出结果。
我不知道,我国在这个方向是否有所安排?我觉得这是值得探讨的。不要以为只有新名词才能创新,老名词解决新问题也是创新。但是,在国内高校和科研单位,搞计算机的人比较少出身电子工程的,跳出数字计算机的圈子对他们不太容易。所以,跨学科的交叉研究看来非常必要,各领域的人可以取长补短,一起来创新。
图1 机械模拟计算机
图2 电子模拟计算机
图3 数模混合计算机芯片
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-25 12:41
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社