一个能保存很多二进制数的东西叫做“存储器”

一、 1个比特位的存储器

G是传输门, 它的作用是将D触发器的输出上Q同外部接通或者断开。

术语:

  1. 保存一个数称为“写”(Write)
  2. 读取取出一个数则称为“读”(Read)
  3. “读”还是“写”,一律称为“访问”(Access)

存储器默认状态

  • 平常,W和R都为0,这个存储器什么也不做,既不能写入,也读不出比特,因为传输门G是断开的,而触发器的CP端也没有接到任何有效的提示。

写入数据:

  1. 断开G
  2. DB端输入1个bit数据
  3. CP端得到一个上升沿,就把数据存到Q了

读取数据

  1. W = 0
  2. R=1,G传输门闭合
    此时数据经过G门传输到DB总线输出,此时数据也会到达D,但是W=0,所以即使到达D也无妨。

为了方便抽象,设计一个新符号来表示上面的1比特存储器

二、组合1比特存储器

如下图,这是一个5比特位的存储器

如果我们把这排1比特位存储器看作是一个楼层,我们可以组合出更多楼层

既然我们把它看作楼层,那么,为了指明把一个二进制数保存到第几层,或者从第几层读出来,就需要给每一层编号。
不过,和平时不同,我们不是从一楼开始编号,而是要从0开始编号。因为在计算机中,0也是一种状态。

当正在对某一层楼读/写的时候,其他楼层都处于休眠状态,既不能读,也不能写,所以它们决不会互相干扰,这一点大可放心。

但是大家思考一下,这仅仅是4层楼,如果是99999层楼呢?你就得拿二十万个开关。

除了体积和数量上的因素外,要是你准备往56789这一层楼存储一个二进制的时候,你得一直找到那层楼位置,这会是一种多么可怕的场景。

三、地址译码器

这样吧,就拿下图来具体分析,一共4层楼,
而4层楼对应的二进制数是11,也就是2个比特位,表示两个比特位需要两个开关,这样子就不需要像以前那样,为每个楼层都配备两个开关了。

那如何设计这样的一个电路连接呢?答案就是:发明一个新的逻辑电路,用来选择一个楼层。
这个新的逻辑电路图叫做“地址译码器”,我们通过A0和A1共同来指定一个楼层。

  1. 如果A1A0=00,表示当前准备读写第0层。
  2. 如果A1A0=11,表示当前准备读写第3层。
    该逻辑电路还有一个R和W,表示指明对所选择的楼层进行何种操作,是读还是写。

不过对于存储器来说,不管是楼层也好,编号也好,都是一种比喻。
要想进入计算机行业,和那些严谨专业的前辈做朋友,必须得改改口,不要再楼层编号什么的,要说“地址”

通过地址找到的对应楼层,就是“存储单元”

四、重新封装

为了能够让这个存储器在后面的课程中,当做一个“零部件”使用,我们又得给它包装设计一个新的符号。

如下图所示:
它有4个地址引线:A0~A3,就可以表示访问0000~1111个内存地址。
这意味着地址引线最多支持1111个地址索引。
如果你内部的触发器内部存储单元超过1111地址,将无法定位索引。

我们这个存储器,不管你访问哪个存储单元,所花的时间都是一样,和地址没有关系。
正是因为这样,我们通常称之为“随机访问存储器”,或者“自由存储存储器”。
用英文来说就是:Random Access Memory ,简称RAM
这种东西怕断电,不管它里面存了多少个二进制数,只要一断电,就全没了,因为属于易失性存储器。

五、拓展

代入到现代计算机中:假设你有一根8G的内存条,按照1024进制计算,每一层存储单元为8个bit位(1Byte =8Bit)。

8GB * 1024 = 8192MB
8192MB *1024 = 8388608KB
8388608KB * 1024 = 8589934592Byte

相当于8G的内存抽象出来的最大地址就是:8589934592

而你的地址引线有32根,也就是最大支持4294967295层楼,超过的楼层,因为地址引线无法组合出更大的数字表示,所以就不能定位索引了。
当然,你可能听说过,Windows xp系统就是32位操作系统,最多只能支持4G内存这句话,它就是这么来的。

32位的意思不单单是地址总线是32根,包括寄存器,很多硬件电路都是32位的,以及操作系统,以及操作系统上的软件都是32位的。
这些如果全都是32位,我们就可以说,的的确确是32位。

如果你的硬件是64位的,但是操作系统的32位的,能发挥出来的性能还是32位。
如果你的硬件是64位的,操作系统是64位的,但软件是32位的,发挥出来的性能还是32位。

我们把X86架构机器语言指令集设计标准称为:32位。
而把X64架构机器语言指令集设计标准称为:64位。

我们现代购买的家庭电脑,已经全都是64位了。
64位不仅仅是比32位架构支持的运算数据,内存等更大,还有一些其他的变化。

包括32位和16位计算机比起来也是。 不仅仅就是我的单次运算量变大了或者说寄存器存储的更大了。
还有其他技术的升级,这里不作过多的赘述,在汇编语言中,我们再来学习这些知识点。

因为要考虑兼容性,不能说推出64位的架构,就把32位的架构都废掉了。
所以高位的设计,会兼容低位的设计。

但即使努力兼容,依然有一些软件可能在操作系统升级之后,无法正常运行。
(有一些国企单位,很多年前开发的一套管理软件,因为各种利益问题,一直不支持最新的操作系统。)
(所以这些单位只能使用Windows XP系统)

目前,我们课程中学习的存储器,是我们自己想象出来的比较理想化的内存,并且每个地址支持的存储单元为5个BIT位,这也是为了课程更容易讲解,故意设计成这样的。