科学家和工程师可以利用长期被遗弃的计算方法
该模拟机械计算机用于预测潮汐。 它被称为“古老的黄铜大脑”,或更正式地称为“潮汐预报器2”。 她曾任职于美国海岸和地质调查局以计算1912年以来的潮汐表,直到1965年她被电子计算机取代后才退休。尼尔·阿姆斯特朗(Neil Armstrong)和巴斯·奥尔德林(Buzz Aldrin)在1969年作为阿波罗11号任务的一部分降落到月球时,这可能是人类工程史上的最大成就[当然,除了第一颗人造卫星和第一个人进入太空,第一个人开放太空,以及自动航天飞机的创建/大约 翻译]。 许多人没有意识到,成功完成阿波罗飞行任务及其前身的重要因素不是美国宇航局用来模拟,甚至在某些情况下甚至用来控制飞行的模拟和混合(模拟数字)计算机。 今天生活的许多人甚至都没有听说过模拟计算机,他们认为计算机从定义上讲就是数字设备。
如果模拟计算机和混合计算机在半个世纪前如此有价值,为什么它们几乎消失得无影无踪? 这是由于1970年代技术的局限性:实际上,开发,构建,管理和维护太困难了。 但是借助现代技术构建的模拟和混合模数计算机不会有这样的缺点,因此,现在在机器学习,机器智能和
仿生电路领域中对模拟计算进行了大量研究。
在本文中,我将重点介绍模拟计算机和混合计算机的另一种应用:高效的科学计算。 我相信,现代模拟计算机可以在解决与生物学,流体动力学,天气预报,量子化学,等离子体物理学和许多其他科学领域有关的方程式时对它们的数字对等物进行补充。 这些异常的计算机可以做到这一点。
模拟计算机是一种物理系统,配置为根据与您要求解的方程相同的方程式工作。 您可以分配与要研究的系统相对应的初始条件,然后允许模拟计算机中的变量随时间变化。 结果,您得到了相应方程式的解。
让我们举一个荒谬的简单例子:带有水和水桶的软管可以看作是执行积分计算的模拟计算机。 调节流入软管的水量,使其与您集成的功能相匹配。 将流量引导到铲斗中。 解决方案将是桶中的水量。
尽管有些模拟计算机实际上使用的是流动流体,但最早的是装有旋转轮和齿轮的机械设备。 其中包括1931年的Vannevar Bush差分分析仪,该分析仪是基于19世纪出生的原理而创建的,主要基于William Thomson(后来成为Lord Kelvin)和他的兄弟James的工作,James开发了用于计算潮汐的机械模拟计算机。 这种类型的模拟计算机长期以来一直用于执行诸如控制战舰上的大炮之类的任务。 到1940年,电子模拟计算机开始用于此目的,尽管与此同时,机械计算机仍继续使用。 形式信息理论之父克劳德·香农(Claude Shannon)于1941年发表了关于模拟计算的丰硕理论研究。
大约在那时,模拟计算机的广泛发展开始于美国,苏联,德国,英国,日本等。 它们由许多制造商生产,例如Electronic Associates Inc.,Applied Dynamics,RCA,Solartron,Telefunken和Boeing。 最初,它们被用于机壳和飞机的开发以及飞行模拟器中。 自然,NASA是主要客户。 但是它们的应用很快扩展到其他领域,包括核反应堆控制。
由Electronic Associates Inc.制造的PACE 16-31R电子模拟计算机于1950年代中期安装在位于克利夫兰的NASA的Lewis Jet飞行实验室(现为Glenn研究中心)中。 这种模拟计算机尤其用于NASA漫画程序,例如Mercury,Gemini,Apollo。最初,电子模拟计算机具有成百上千的电子管,后来被晶体管取代。 首先,通过在特殊面板上手动设置各个组件之间的触点来对它们进行编程。 它们是复杂而奇怪的机器,需要受过专门训练的人员才能启动-所有这些都在其灭亡中发挥了作用。
另一个因素是,到1960年代,数字计算机由于其许多优点而得到了突飞猛进的发展:简单的编程,算法工作,易于存储,高精度,能够在有时间的情况下处理任何大小的任务。 在过去的十年中以及随后的时间里,随着用于集成电路的MOS(金属氧化物半导体)技术的发展,数字计算机的速度迅速提高,这使得将大量带有数字开关的晶体管放置在单个芯片上成为可能。
模拟计算机的制造商很快将数字电路整合到他们的系统中,从而产生了混合计算机。 但是为时已晚:这些机器的模拟部分无法使用当时的开发和生产技术进行大规模集成。 最后一台主要的混合计算机制造于1970年代。 世界转向了数字计算机,不再环顾四周。
如今,模拟MOS技术已经取得了巨大的进步:可以在智能手机的接收和发送电路,复杂的生物医学设备,各种消费电子产品以及组成物联网的许多智能设备中找到它。 使用这种先进的现代技术构建的模拟计算机和混合计算机可能与半个世纪前的现有计算机大不相同。
但是,为什么还要考虑将模拟电子技术应用于计算呢? 事实是,普通的数字计算机,尽管功能强大,但已经可以达到其极限。 数字电路的每次切换都会消耗能量。 以千兆赫兹速度开关的芯片上的数十亿个晶体管会产生大量的热量,必须在达到临界温度之前以某种方式将其清除。 您可以在YouTube上轻松找到视频,演示如何在某些现代数字计算机芯片上煎鸡蛋。
能源效率对于科学计算尤为重要。 在数字计算机中,必须使用一系列离散步骤来近似时间流。 当求解某些复杂的微分方程时,由于算法的原因,需要使用特别小的步骤来保证解决方案。 这意味着这需要大量的计算,这会消耗大量时间并消耗大量能量。
大约15年前,我想:借助现代技术设计的模拟计算机能否提供有价值的东西? 为了回答这个问题,当时由我在不列颠哥伦比亚省领导的研究生,现在是蒙特利尔康考迪亚大学的教授Glenn Cowan设计并制造了单芯片模拟计算机。 它包含模拟积分器,乘法器,函数发生器以及其他
以用户可编程门阵列形式排列的单元 。 各个模块通过大量可调整的电线连接,从而在制造芯片后便形成了触点。
许多科学问题都需要求解耦合微分方程组。 为简单起见,我们考虑两个具有两个变量x 1和x 2的方程。 一台模拟计算机使用一个电路找出x 1和x 2 ,其中流过两条导线的电流遵循相同的方程。 当使用合适的电路时,两条导线中的电流将代表初始方程的解。
为此,我们需要模拟积分器,分支单元,直流电源(总电流需要简单组合导线)。 为了求解非线性微分方程,芯片上的模拟计算机使用连续时间电路来形成可以创建任意函数的模块(粉红色)
事实证明,可以在用户可编程门阵列的基础上创建通用模拟计算机,该用户可编程门阵列包含许多数字控制的模拟元件。 每个水平和垂直灰色条表示几根电线。 当需要更高的精度时,可以将模拟计算机的结果数字化以进行优化。通过数字编程,可以将给定模拟块的输入与另一个模拟块的输出进行组合,从而创建一个由需要求解的方程式控制的系统。 没有使用计时器:电压和电流连续不断地发展,而不是离散的。 这样的计算机可以以一个百分之几的精度解决具有一个自变量的复杂微分方程。
对于某些应用,这种有限的精度就足够了。 如果这样的结果太不礼貌,可以将其送入数字计算机进行澄清。 由于数字计算机的猜测非常准确,因此最终结果可以在短于10倍的时间内实现,从而将能耗降低了相同的数量。
最近,不列颠哥伦比亚省的两个学生郭宁和黄益鹏,Mingoo Seok,Simha Sethumadhavan和我在第二代芯片上创建了模拟计算机。 与早期的模拟计算机一样,我们设备的所有模块都可以同时工作并以一种需要数字计算机并行架构的方式处理信号。 现在,我们拥有更大的芯片,其中包含第二代设计的多个副本,能够解决更大的任务。
我们的模拟计算机的新电路在能源消耗方面效率更高,并且更易于与数字计算机配对。 这样的混合动力可兼得两个方面的优势:用于高速和低功耗计算的模拟,以及用于编程,存储和高精度计算的数字。
我们的最后一块芯片包含了过去用于模拟计算的许多电路:例如,积分器和乘法器。 新电路的关键组件是能够连续计算任意数学函数的新电路。 这就是为什么它很重要的原因。
数字计算机使用的信号仅采用两种类型的电压电平,分别代表值0或1。当然,在这两种状态之间传递时,信号也必须采用中间值。 典型的数字电路在电压稳定在明显表示0或1的电平后会定期处理信号。这些电路使用系统计时器运行,其周期足以使电压在启动之前从一种稳定状态切换到另一种稳定状态。下一轮处理。 结果,这种电路产生一系列二进制值,每个时刻一个。
相反,我们的函数发生器使用我们的方法,我们称之为数字连续时间过程。 它包含永恒的二进制信号,这些信号可以随时更改数值,而不是根据明确定义的小时数更改。 我们构建了从模拟到数字以及从数字到模拟的转换器,以及能够处理连续时间此类数字信号的数字存储器。
我们可以将模拟信号从模拟到数字输入到这样的转换器,并将其转换为二进制数。 该数字可用于查找存储在存储器中的值。 然后,将输出值从数字到模拟输入到转换器。 这种连续时间电路的组合为函数发生器提供了模拟输入和输出。
作者和同事使用现代生产技术将小型功能强大的模拟计算机包装在一起我们使用计算机来解决各种复杂的微分方程,其精度为百分之几。 它不能与传统的数字计算机相比。 但是准确性不是一切。 在许多情况下,近似值足以起作用。 示例性计算(计算精度的故意限制)有时在数字计算机中使用,例如,在机器学习,计算机视觉,生物信息学和大数据处理等领域。 当输入数据本身经常有错误时,这是有道理的。
由于我们计算机的核心是模拟的,因此如有必要,它可以直接连接到传感器和电源驱动器。 高速允许他实时与用户进行计算任务,而在正常模式下这将非常慢。
当然,我们的计算方法有缺陷。 问题之一是特别复杂的任务需要大量的模拟计算单元,这使得芯片大而昂贵。
解决此问题的一种方法是将计算任务划分为多个子任务,每个子任务将由运行数字任务的模拟计算机来解决。 这样的计算将不再是完全平行的,但至少它们是可能的。 几十年前,当混合计算机仍在流行时,研究人员就研究了这种方法。 他们没有走太远,因为这种类型的计算机被放弃了。 因此,这项技术需要进一步发展。
另一个问题是,很难在大型模拟芯片上配置远程电路块之间的任意连接。 联系人网络的规模和复杂性可能变得令人望而却步。 但是,某些科学问题将需要此类连接,以便可以在模拟计算机上解决它们。
此限制可以帮助规避3D制造技术。 但就目前而言,我们的混合设计的模拟核心最适合需要局部连接的情况,例如,模拟一组仅与位于其附近的分子相互作用的分子。
另一个问题是难以实现许多参数的功能,以及相关的偏微分方程处理效率低的问题。 在1970年代,开发了多种技术来解决混合计算机上的此类方程式,我们计划从中断较早发展的地方开始。
同样,该模拟物还具有精度提高的缺点。 数字电路的精度可以通过简单地增加位来提高。 提高模拟计算机的精度需要使用更大的芯片面积。 这就是为什么我们专注于低精度应用的原因。
我提到模拟计算可以加快计算速度并节省能源,我想添加更多细节。 我和我的同事在这种计算机上进行的模拟处理通常需要一毫秒。 用一阶导数求解微分方程所需的能量小于0.1μJ。 具有常规制造技术(65 nm CMOS)的这种芯片将占据平方毫米大小的区域。 具有两个导数的方程需要两倍的能量和芯片面积,依此类推; 解决这些问题的时间保持不变。
对于预算有限的一些关键应用,您甚至可以考虑集成衬底规模-整个硅衬底都可以用作单个巨型芯片。 一个300 mm的基板将允许在芯片上放置超过100,000个积分器,这将允许模拟100,000个成对的一阶非线性动力学方程或50,000个二阶的非线性动力学方程组,依此类推。 这对于模拟大量分子的动力学可能很有用。 解决时间仍将以毫秒为单位,能耗为数十瓦。
只有实验才能确认这种类型的计算机确实有用,并且模拟错误的累积不会阻止它们的正常运行。但是,如果它们起作用了,其结果将超越现代数字计算机的能力。对于他们来说,此命令的某些复杂任务需要大量精力或时间来解决,这可能持续数天甚至数周。当然,为了找到这些问题和其他问题的答案,将需要做更多的研究:如何在模拟和数字部分之间分配任务,如何将大任务分解为小任务,并结合最终解决方案。在寻找这些答案时,我们和其他参与模拟计算机的研究人员可以利用半个世纪前非常聪明的工程师和数学家的工作获得巨大优势。我们不需要尝试重新发明轮子。我们必须将早先获得的结果用作跳板,并进一步扩大。至少我们希望如此,如果不尝试,我们将永远不会知道答案。Janis Cividis-哥伦比亚大学电气工程教授