随机存取存储器的直观体验
2018-03-26陈凯
陈凯
当人们看到“随机存取存储器”或者是“RAM”这样的词语时,头脑中浮现出来的画面是怎样的呢?也许是如图1所示的样子。
这当然没有错,如果要为自己的计算机添加内存条,那么只要找到和图片中差不多的物件,安装到主板相应位置即可。然而,若说起“随机存取存储器”,头脑中所浮现的画面仅仅像图1所示的样子,那又如何解答以下问题:随机存取存储器存储的究竟是什么?如何读取或写入信息?“随机”一词又是什么意思?笔者经常会考虑,究竟怎样做,才能让应用背后的技术更简单直观地在教学过程中呈现出来?
按生产工艺和性能不同,“随机存取存储器”分好几种,本文选取常用也相对简单的动态随机存取存储器(缩写为DRAM)进行说明,用EWB电路模拟软件来模拟存储器读写过程,EWB软件既可以绘制电路,也可以实施电路的模拟运行,当然大家也可以使用其他的电路模拟软件来实施文中的例子。为了尽可能简单直观地说明问题,笔者对文中的电路做了极大的简化,希望能做到形不似却神似。
● 电容与存储
考虑以下场景:Alice带领探险队进入某大规模地下迷宫执行神秘任务,她要根据向导Bob给自己留下的“指路神器”来辨识方向,每遇见一个岔路,就按下“指路神器”的按钮,以灯亮表示走左侧岔路,灯不亮表示走右侧岔路。由于害怕队伍中有敌人派来的奸细,所以只有到岔路口才能读取信息。问题是,Bob如何将方向信号保存到“指路神器”中呢?最简单的“指路神器”可以用一系列电键、电容、发光二极管组装而成,假设Alice只会碰到两次道路分岔的情况,那么Bob可以提供两套设备,并预先作了如图2所示的操作。
因为电容可以存储电荷,所以电容中是否存储有电荷就可以用来表示信息。图标表示的就是用来存储信息的电容。为了将“左转”信息存储在一号装置的电容中,Bob将一号装置的电键闭合一段时间后再断开;为了将“右转”信息存储在二号装置的电容中,Bob将二号装置的电键一直处于断开状态。Alice拿到“指路神器”时的状态应该是如下页图3所示的状态。
注意,不到读取信息的时候,电键[0]和[1]都必须是断开的,因为一旦合拢电键[0]或[1],就等于把电容中原有的信息覆盖了。默认情况下,发光二极管都是不亮的,当遇到第一个岔路时,Alice合拢电键[A](如下页图4),这时一号装置的发光二极管会亮一段时间,直到电容放电完毕后才重新变暗,于是她就知道要走左侧岔路了。
而合拢电键[B],二号装置的发光二极管始终都不会亮,于是她就知道要走右侧岔路。然而,现实总是没有理想那么丰满,电容虽然可以临时存储进电荷来代表信息,但电容的电荷会随着时间的流逝而逐渐丢失,也就是通俗所说的漏电。EWB软件中的电容太“完美”了,较难演示漏电,于是笔者就用了一个高阻值的电阻来模拟电容漏电的过程(如图5)。
在模拟实验时,可以先用5秒左右时间,闭合电键[3]给电容充电,然后断开。因为电容中的电会在几秒内漏完,所以只有及时合拢[C]才能读出电容中的信息。这个例子已经比较直观地演示了RAM中最基本的存取信息的过程。
如果用实际的电容操作实验就会发现,几微法的电容在断电后信息维持时间还是相当长的,但在内存条中,电容的电容值很小,维持时间非常短,所以使用中要定时实施“刷新”动作,才能维持住电容中的电荷量,断电超过一定时间后,RAM中的信息就会丢失。由于定时刷新电路比较复杂,这里就不作展开了。
● 存取动作的控制
想象一个魔幻的场景:假设Alice还持有一個神奇动物记录器,她的一项任务就是在规定时间里,统计地下迷宫中某种神奇动物的行为特征,如果遇见该动物在活动,则往电容存储1,如遇见该动物在睡眠,则往电容存储0。不过Alice是个十分专注又缺乏时间观念的探险家,常常不在规定时间里进行记录。因此,Bob设计了一个带有“允许”开关的记录装置,Alice的助手Carol负责打开或关闭这个“允许”开关,只有在“允许”开关合拢的情况下,Alice才能完成信息记录动作。于是整个电路图变成了如下页图6所示的样子。
图6中多了许多零件,尤其值得注意的是多了场效应晶体管,以来表示。这个电路的作用是通过场效应晶体管控制外界是否有往电容存储信息的权限。例如,电键[P]闭合表示允许写信息,电键[D]闭合表示执行写入数值1的动作,于是信息1就被存储到电容中。为了检验数值1是否被存入电容,可以先把电键[D]和[P]断开,然后闭合电键[R],如发光二极管短暂点亮,则说明数据被写入。即便不讲解电路的原理,也能在比较短的时间里,演示信息存储和读取的整个过程,或者可以直接让学习者在模拟软件中亲自操作一下。
当然,在RAM电路中,并不是通过电键来控制读写信息的时间顺序,而是依赖一个时序电路来控制整个流程,大家也许注意到了,每次读取信息时,电容的电荷都会丢失,所以还需要借助一个回写电路,将读取的信息重新写入电容中。
● 存取地址的控制
想象一个稍微复杂点的场景:Alice要借助一套装置统计地下迷宫中四种神奇动物的行为特征——或许是因为看见神奇动物的兴奋让她变得比较健忘吧,当初究竟为什么要选择她来执行这项任务呢?
需要探查的四种神奇动物编号从零号到三号。如遇见动物在活动,则往相应电容中存储1,遇见动物在睡眠,则往相应电容中存储0。例如,看见零号动物在活动,则往零号电容存储1,看见二号动物在睡眠,则往二号电容存储0。虽然看上去需求并不复杂,但为了实现指定存储元件的地址定位工作,就需要用到逻辑门,若将电路图完整绘制出来,占用的篇幅也是相当可观的,好在可以将具体的电子元件在逻辑层面进行封装,这样就可以在基本符合事实的情况下解释定位过程了。地址为www.indiabix.com/electronics-circuits/dynamic-ram/的网页上提供了一个现成的逻辑电路JAVA模拟器,可以直接点击鼠标模拟运行。
如图7所示,两个带小圆圈的三角形逻辑元件是非门,四个类似拱门形状的逻辑元件是与门。这六个元件的连接,实际上是按照以下四行逻辑表达式来构造的:
F0 = A1 AND A2;
F1 = (NOT A1) AND A2;
F2 = A1 AND (NOT A2);
F3 = (NOT A1) AND (NOT A2)
这四行逻辑表达式中,初始输入的A1和A2可以有“0、0”“0、1”“1、0”
“1、1”四种情况,每输入一对A1和A2的值,四行逻辑表达式中都只会有一个结果为1,这样就能将A1和A2的数值作为定位地址来使用了。可以清晰地看出,两个二进制符号能够定位四个地址。如果需要定位更多的地址,就要用到更复杂一些的逻辑表达式。根据二进制原理,n个符号就能定位2的n次方数量的地址。由于可以按地址存储信息,因此就能实现随时在某特定位置存取信息的功能,与通过磁带或纸带顺序读写信息的方式有很大不同,因此称为随机。
笔者一直认为应该将数字电路的知识纳入到信息技术课程中,因为相关内容与计算思维的培养有着密切的关系。当前有些地区的通用技术课程或劳动技术课程中,包含有一些基础的数字电路的知识和实验,如果能将它们和信息技术的部分内容进行整合,可以起到一加一大于二的效果。