芯中之数—— 一种展示

2023-06-07 16:31:17陈凯
中国信息技术教育 2023年11期
关键词:体系结构存储器模拟器

陈凯

摘要:为了帮助学生直观地理解计算机底层硬件的工作过程,本文设计了一种简单的数字逻辑电路,可利用这种逻辑电路来解释计算机逻辑架构中运算器、控制器、存储器三者的关系,以及二进制编码在计算机工作过程中所起到的作用。

关键词:计算机体系结构;控制器

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2023)11-0020-05

“一去二三里,烟村四五家。亭台六七座,八九十枝花。”北宋大家邵雍写下的数字诗恰好用到了从一到十的十个数字。代入诗人的视野:从宏观的“二三里路”,到中观的“烟村”和“亭台”,再到微观的“花”;代入诗人的情绪:从洒脱的“一去二三里”,到精细的“八九十枝花”。此数字诗之妙趣可谓无出其右。仔细看诗中数字,二三四五直到十,这些都是数量,而“一去”的“一”却是助词,两类数字属性不同,却达成了数字序列形式上完美的统一。这让笔者联想起计算机机器语言,在那些底层的指令代码中,无论是操作码还是操作数,虽然其表现形式都是一连串的数码,但数码的作用却完全不同,如果不是投入目光到计算机内部组件的运作过程,恐怕很难体会到这些数码的真实用途。那么有没有可能让学生真正了解到计算机底层大致的工作过程,领悟当前硬件的计算机架构和二进制数码形式的机器语言两者间的密切联系?本文试着给出一种教学思路。

一种通用的计算机架构模拟器

“Johnny”是一种通用的计算机架构模拟器,从软件的界面可以看出,左侧栏是存储器,中间栏和右侧栏是中央处理器中的控制器和运算器。可以在模拟器界面左侧输入程序代码,然后运行代码,观察控制器如何根据机器指令的操作码和操作数,命令运算器实现不同的计算动作。以下页图1的程序代码为例,首先执行的是01号指令,代表的含义是从存储器取数到处理器的寄存器,示例中取的是004号空间中的数;然后执行的是02号指令,代表含义是从存储器取数与处理器中的寄存器数做加法,示例中取的是005号空间中的数,于是就执行了数字009和数字008的加法运算;最后执行的是03号指令,代表含义是从处理器中的寄存器存储数字到存储器,示例中存储的地址是003号空间。这个模拟器软件很清晰地将计算机内部处理器芯片根据存储器的程序和数据进行运算的工作流程展现了出来。

但请注意,从模拟器的软件界面中可以看出,处理器芯片中的控制器是一个黑箱。如果想要知道控制器到底是如何根据存储器中的代码实现对应的操作的,就需要进一步将控制器的内部结构展现出来。如图2所示,控制器内部结构是比较复杂的,虽然“Johnny”模拟器可以完整地模拟控制器中数据的变化,但对大部分学生而言,恐怕不是短时间就能理解的。控制器结构之所以如此复杂,是因为控制器必须能实现通用性的程序运行的控制。

如果不考虑计算的通用性的问题,目的仅仅是演示一个简单运算过程中整个计算机体系结构各个部件的作用,就能对控制器的结构进行简化。本文将要讨论的两个重点,其一是设计一种简化的控制器结构,其二是试图循序渐进地剖析控制器的功能。

一种时序控制装置

考虑到学生对算法和高级语言的了解远多于对计算机硬件结构的了解,所以教师可以借助简单的变量赋值语句来类比处理器芯片中寄存器的数据传输和存储。学生从经验出发,应该比较容易在高级语言的赋值语句和硬件寄存器的数据存储动作两者间产生联想,虽然技术事实是后者的硬件电路结构支撑着前者程序功能的实现。例如,a=3,b=4这两句语句可以类比为上页图3所示的数字电路,此电路图可由仿真软件Logisim模拟运行。在图3中,左侧装置演示的是时钟脉冲尚未来到时的寄存器的状态,右侧装置演示的是始终脉冲到来后寄存器的状态。可以看出,数字3和4可以同时存储到寄存器中,而高级程序语言中,数字3和4赋值给变量是有先后关系的。

一种自动的斐波那契数列项生成器

假设变量a和b中已有初始值,且均为1,有以下语句:

a=a+b

b=a+b

如果反复地按顺序执行这两句语句,则会按如下表所示的顺序陆续生成斐波那契数列项:

但如上页图4所示的硬件电路却难以达成类似目标。因为加法器运算后的结果数据,会同时存储到寄存器a和寄存器b中。

為了使电路能像程序代码那样按顺序执行,可以添加两个缓冲控制器,电路图中用小三角形表示。如图5所示,当缓冲控制器的控制端为“1”信号时,数据可以通过,当控制端为“0”信号时,数据无法通过。这样,只要先打开上方缓冲控制器通路,将加法结果存入a寄存器,再关闭上方缓冲控制器,打开下方缓冲控制器,将加法结果存入b寄存器,反复执行这个动作,就能使这个电路生成斐波那契数列项了。图5左图展示了上方缓冲控制器打开时电路运行的状态,可见“1+1”加法运算结果数据存入寄存器a,右图展示了后续下方缓冲控制器打开时电路运行的状态,可见“2+1”加法运算结果数据存入寄存器b。

虽然时钟脉冲是自动产生的,但轮流选中不同的缓冲控制器,却需要人工操作,在这里,希望学生能有所领悟,人工操作的动作本身也就是轮流发送给控制缓冲控制器的“1”信号和“0”信号的动作,其实是可以被预先存储起来的。上页图6所示的电路使用到了一个存储器(注意存储器和寄存器的区别),存储器中用“1”指令代表开启上方缓冲控制器,用“0”指令代表开启下方缓冲控制器。这样,只要从存储器中按顺序取出二进制数字,也就能按顺序执行指令了。

一种简单的可编程的多功能加法装置

在上面的例子中,存储器里只存储了动作指令,为了增强功能,指令中应包括动作的类别和动作的处理对象,上页图7是个极为精简的处理器的例子,存储器里的指令包括了操作码和操作数。操作码只有一位二进制数,对应两个动作,指令“0”代表向寄存器做加法的动作,指令“1”代表向寄存器存储数字的动作,操作数有两位,可以是“00”“01”“10”“11”,代表数字0到3,为了尽可能简化问题,这些数字会直接存放或加到寄存器中,这和现实中的处理器要根据操作数的地址从存储器中获取数字的行为有所不同。在图7所示的电路中,存储器中的指令是5、1、0、1,它们对应的二进制数是101、001、000、001,其含义是对寄存器存1,对寄存器加1,对寄存器加0,对寄存器加1,在完整执行完所有指令后,得到的结果是3。

当然,也可以另外使用一个存储器专门存储需要进行存储或加法运算的数据,这样,指令中的操作数就表示了指向数据存储器的地址,如上页图8所示。不过就算如此,这个结构和先前的“Johnny”模拟器或者说和当前最普遍使用的计算机体系架构还是有几处不同,在“Johnny”中,指令和数据是存储在一个存储器中的,另外,“Johnny”中可以将运算后的结果存储回存储器。这些功能当然是可以用电路实现的,但会使得系統结构变得非常复杂,对大部分学生来说,重点是理解二进制数是如何在计算过程中起到控制作用的。对于学有余力的学生,可以鼓励自主探索,笔者有几位学生按本文思路,完整地设计出了通用计算机体系结构的数字电路。

计算机体系结构示意图

虽然教师可以将教材上的计算机体系结构示意图直接抛给学生,但这样就剥夺了学生自主思考的机会,考查前面介绍的精简的计算机体系结构电路模型,可以试着绘制此结构的示意图,思考存储器、控制器、运算器三者间的关系是怎样的。绘制的结果可以不设标准答案,不过可以想见,它大概是如图9所示的样子。存储器中指令的操作码传输到了控制器,操作数中的数据或操作数所指向地址的数据传输到了运算器。不过,其实很难说控制器是否对存储器和运算器起到了控制作用,因为控制器实际上只是根据存储器发来指令的操作码开通或关闭数据传输的通路而已,所以图9中将控制线条画成虚线。

很容易想到,稍微复杂一些的计算机体系结构,应该具有将运算器结果重新存储到存储器中的能力,再加上人机交互的输入和输出模块(简单推理可知,为了能输入和修改程序,人和存储器交互较之与运算器交互更为方便,这里不进一步展开讨论),整个计算机体系结构示意图就成为如图上页10所示的样子。这个示意图和广为流传的以存储器为中心的现代计算机体系结构示意图已经非常相近了。

芯中之数,数中之心

本文使用仿真软件演示了一个精简的计算机体系结构是如何搭建起来的,考虑到笔者其实是使用了实体计算机中的仿真软件模拟出了可运行的虚拟的计算机,那么就能引出一个有趣的问题,计算机是不是能经由计算而判断出自己能否完成某些特定的任务呢?乍一想,只要计算机将自身程序在模拟环境中运行一下,就能得出判定结论了,但这其中存在一个逻辑上的陷阱,计算机为了模拟运行自身程序,就需要额外用到那些实现模拟的程序。如果再追问:计算机是否能判断那个模拟自身程序的程序完成任务呢?为了回答这个问题,就必须把这个实现模拟自身程序的程序也放置到某个实现模拟的程序环境中,这样就陷入到无穷倒退的窘境之中了。假设人的头脑的工作方式和计算机是相近的,那么当人在自问能否完成任务的时候,答案可能只是头脑所模拟出来的虚假的自我程序所做出的。当然,人的头脑的工作方式是否和计算机类似,这还是一个悬而未决的问题,然而,只从结果上看,人工智能的能力已经超过许多人类了。以下是向人工智能对话软件ChatGPT提出的问题:

“北宋时期,邵雍的数字诗《山村咏怀》按顺序用到了从一到十这10个数字。第一个问题,你能否也写一首短诗,其中用到从一到十按自然数顺序排列的数字?第二个问题,数字诗中的‘一所起的作用和其他数字所起的作用是不同的,让人联想到计算机机器语言指令中,二进制数码所起的作用是不同的,你能否具体举例说明呢?”

人工智能给出几乎是满分的回答:“如一个16位计算机指令,其中前四位代表操作码,后12位代表地址码,操作码表示不同的操作,而地址码则指示了操作数在内存中的位置。因此,在计算机中使用二进制数码,其具体作用与其所处的上下文密切相关,需要根据具体情况加以理解。”

本文最后就以人工智能写的数字诗来结尾,笔者做了两处修改,把原诗中的“六合之内”改为“六合位定”,把“一剑锋利出”改成“一剑定乾坤”,这极少数的修改,可以算是人的创造力较人工智能占优的不严谨的证明吧。

“一生为二二生三,三生万物森。四海潮涨五岳高,六合位定七星璀。八方风雨九州阔,十年一剑定乾坤。”

猜你喜欢
体系结构存储器模拟器
了不起的安检模拟器
静态随机存储器在轨自检算法
盲盒模拟器
划船模拟器
基于粒计算的武器装备体系结构超网络模型
作战体系结构稳定性突变分析
基于DODAF的装备体系结构设计
基于云计算的航天器控制系统自组织体系结构
动态飞行模拟器及其发展概述
存储器——安格尔(墨西哥)▲
环球时报(2014-06-18)2014-06-18 16:40:11