显现隐藏的计算需求
2022-04-02陈凯
陈凯
在对一些技术产品的习以为常的使用中,人们往往容易忽视那些已然成熟的技术成果在成为如今的样子之前,需要突破哪些技术上的瓶颈,而人类的思维,又在这些突破过程中起到某种作用。在信息技术教学中,教师们相对熟悉的,往往是与某种实际需求达成有关的活动设计,如综合使用算法程序、数据库、电子开发板、单片机、传感器、芯片等软硬件的单元进行有创造性的设计制作,但却容易忽视这些软硬件单元本身作为一种技术成果,在其功能实现的过程中所蕴藏的思维方法上的价值。这一点可以通过分析文献数据库中一线教师提供的教学活动设计案例的种类得到验证。
一种简单的过程和控制系统框图如图1所示。相对于从内存中调取指令的单片机或电子开发板,一个单一功能的芯片更容易对应“输入——处理(计算)——输出”的过程。
数字逻辑芯片接收的输入值是一个或若干个开关量(0或1),而输出值是逻辑运算后的一个开关量。例如,一个非门芯片的作用就是将输入开关量的数值取反,输入0则输出1,输入1则输出0。对类似于这样简单功能的技术产品,如何挖掘出其功能之所以能够实现的背后所隐藏的技术思想?笔者试图借助一系列可亲自动手的设计和实践体验活动,引导学生逐渐发现为实现一个计算(即便是非常简单的计算)过程而必须解决的问题。
● 基于多米诺骨牌的计算装置
使用一组多米诺骨牌就可以实现部分逻辑运算,图2和图3分别是实现或和与这两种逻辑运算。
在教学中,可以使用多米诺骨牌模拟器来代替真正的多米诺骨牌。围绕多米诺骨牌如何摆放来实现逻辑计算,有着相当大的创意空间,如怎样使得与门运算更为稳定?怎样实现其他逻辑运算?等等。不过,笔者希望通过特定的问题使学习者更贴近计算本身的需求:这样一个用多米诺骨牌实现的装置,同样对应着“输入——处理(计算)——输出”这样简单的过程和控制系统框图,可以视之为一种计算装置,那么它存在哪些缺点和优点?关于装置的缺点,比较容易得到的回答有以下这些:这种计算装置搭建起来非常麻烦,占地很大,运行起来也常常不稳定,更糟糕的是,计算只能做一次。该种计算装置的某些缺点十分隐蔽,在笔者的课堂上,学生们如果仅仅是观摩了多米诺骨牌运算过程,而没有亲自动手去实现各类运算,是很难自主地发现那些与计算需求有关的缺陷。例如,若没有异或门的协助,用多米诺骨牌很难实现非门的运算,这样就使得骨牌运算的通用性受到了限制(后文会提到如何用异或门协助进行非运算),这是因为每块骨牌从竖立的状态变为躺着的状态是很容易的,但反过来却几乎没有可能;又如,在运算过程中,多个输入信号的传输有着时间同步上的需求,以图3所示的简单的与运算为例,如果从输入1和输入2获取到的信号(被逐个推倒的多米诺骨牌)不同步,就很容易使得骨牌倒下的力量无法推倒那一组紧密结合的骨牌墙,从而造成与运算的失败。读者如有兴趣,可在网络上搜索其他结构的用多米诺骨牌来实现逻辑运算的设计方案,但这些方案中也都存在因为信号不同步可能造成运算失败的问题。
这样的计算装置除了好玩,还有什么优点呢?从计算的需求看,它确实存在着某种优点,但这往往需要和其他计算装置进行对比后才能显现出来。
● 基于电键和灯的计算装置
在一些中学物理教材或通用技术教材中,会借助简单的电路来说明与、或、非三种基本的逻辑运算。使用电键的串联和并联结构,就能演示出逻辑上的与运算和或运算,借助电键和一种近乎短路的电路结构,就能演示出非运算。图4给出了这三种电路结构,可以看出,这种计算装置相对多米诺骨牌的计算装置有多个优点:搭建简单;可重复使用;能较容易地实现非运算;输入信号不需要保持时间上的同步,如为实现与运算,可以先合拢一个电键,然后无论延迟多少时间再合拢另一个电键,运算结果都是正确的。
然而,教学活动的重点不是搭建电路,而是将各种计算装置作为评估的对象,综合分析它们的能力。在这里存在着看似理所当然,却很值得发问的现象:①在过程和控制系统中,人们通常使用芯片、单片机等硬件设备来完成数字逻辑运算;②通过用不同方式来组合电键,就能实现数字逻辑运算。那么,芯片、单片机等硬件的计算,与通过组合电键来实现的计算,两者间有怎样的不同?或者说,为什么前者是必要的?
将图1稍加扩展为如下页图5所示的框图,便可显现出借助组合电键实现计算功能的局限性。一个采用短路结构来实现非门的电路,可以用电键的断开代表输入开关量0,灯的点亮代表开关量1;反之,可以用电键的闭合代表输入开关量1,灯的熄灭代表开关量0。虽然如此,但由于输入数据的物理行为与输出数据的物理行为不同,这种计算装置无法实现计算结果向另一个电路的传递。为了实现不同电路间信号的传递,可以设想灯的状态能继而影响另一个电路中的开关的状态(如下页图6),但如何实现这种设想却存在很大的问题(这其实也是促使继电器计算装置出现的原因)。在先前的多米诺骨牌计算装置中,就不存在类似的问题,借助重力作用,多米诺骨牌倒下的信号可以轻易地从一个骨牌计算系统传递给另一个骨牌计算系统。下页图7描绘了借助异或门的结构实现非运算的多米诺骨牌摆放方式,图中的异或门的实现来自网站(https://www.harrycodes.com/blog/domino-compute)的设计,笔者在此基础上进行了扩充,将第一个异或门实现非运算的结果传递给第二个异或門,并再一次进行非运算。如果骨牌倒下的时间精准,那么这个装置所实现的就是将输入数据进行两次非运算,重新还原为自身的运算过程。
● 基于齿轮的计算装置
人类很早就发现,可以借助齿轮的传动来实现某种运算,如古希腊的安蒂基西拉机器被推测是一种用于天象运算的齿轮计算机,中国汉代有利用齿轮来计算里程的机械装置等。下页图8是一个用齿轮实现或运算的简单装置,左侧和下侧的输入1和输入2是两个带有马达的齿轮,马达顺时针旋转(正转)作为开关量1,逆时针旋转(反转)作为开关量0,上方有一个带马达的齿轮,总是正转,中间为不带马达的传动齿轮,右侧为不带马达的输出齿轮。假设马达功率都相等,则当输入1或输入2中有一个齿轮或两个齿轮都顺时针旋转时,则输出齿轮也是顺时针旋转。只有当输入1或输入2齿轮均逆时针旋转时,输出齿轮才逆时针旋转。这样就相当于实现了或运算,如要实现与运算,只要将上方齿轮设置为总是反转即可。在物理沙盘软件Algodoo中可以模拟齿轮计算的效果。
不妨总结一下使用齿轮进行运算的优势,齿轮组可以轻易实现非运算,也能重复进行运算,这都优于多米诺骨牌计算装置。齿轮组也具有将计算的结果以一致的物理行为几乎完整地传递给另一个齿轮组的能力,这就优于用电键组合而成的计算装置。
但是图8所示的齿轮组计算装置也存在缺点,尽管人们规定了输入马达的旋转方向,但这个装置一旦运行起来,对于一个旁观者,他所看到的所有齿轮的旋转方向必然是一致的。这是因为在齿轮组中,作为输入的齿轮会受到其他齿轮,包括作为输出的齿轮的反馈影响,这就使得如图8所示的齿轮计算装置难以将输入的信号分配给几个系统作组合逻辑的协同计算。若想让齿轮计算机可以稳定地进行更复杂的计算,就需要额外增加使信号(能量)实现单向传递的连杆或擒纵等机构。
● 从计算需求的角度审视芯片
我们可以将数字逻辑芯片看成一个实现计算的黑盒子,作为人类创新思维的一种成果,它已然解决了如下问题:能够以相近的复杂度实现各种逻辑运算;能够使输入信号和输出信号以某种一致的物理状态来表达数据;能够将一个系统的信号近乎无损地传递给另一个系统;能够做到输入信号和输出信号隔离(在有需要的时候),实现信号传递的单向性。
在课堂上,实施一个非门芯片功能验证实验是容易的(如图9),但将这个芯片作为一个技术产品来应用,还需从计算需求的角度对其加以审视,后者的思维深度要高于前者。学习者若仅面对一个现成且完整的过程与控制系统,便难以体会一些技术成果在功能实现过程中思想方法上的突破。只有将不同类型的计算装置(无论是先进的还是简陋的)作对比性的审视,一些隐蔽的计算上的需求才能真正地被显现出来。