计算机基本原理 学习笔记(三)

本篇目录

接上)

五、寄存器&内存

1.寄存器

(1)回路

(2)AND-OR锁存器

(3)门锁

(4)寄存器

2.内存

(1)锁存器矩阵

扫描二维码关注公众号,回复: 14727624 查看本文章

(2)内存地址

(3)可寻址内存单元

(4)随机存取

总结


接上一篇 学习笔记(二)

五、寄存器&内存

参与运算的数据需要存储起来,这就需要用到内存。内存在断电后就会丢失数据,因为它是随机存取存储器,即RAM。另一种存储是永久存储,断电后数据也不会丢失,这个之后讨论。

1.寄存器

(1)回路

之前的电路都是单向的,但电路的输出也可以再连接回输入端。

比如,将OR门的输出连接回输入。只要A有一次变为了true(或者称为“1”),那么输出就是true,从而输入B就是true。之后,无论A怎么变,输出始终都会保持true。也就是说,这个电路就能够记录“1”这个数据(或者说记录“true”)。

 而如果将AND门的输出连接回输入,那么只要输入A有一次变为了false,那么输出就是false,从而输入B就是false。之后,无论A怎么变,输出始终都会保持false。也就是说,这个电路能够记录“0”这个数据(或者说记录“false”)。

但是这种记录是永久性的。为了做出有用的电路,可以将这两者结合,做成AND-OR锁存器。

(2)AND-OR锁存器

AND-OR锁存器的电路如图,输入A是“设置”,当输入A为true后,输出保持为true;输入B是“复位”,当输入B为true后,输出保持为false。这样,这段电路就能够保存1 bit的数据了。

 

(3)门锁

这个电路还可以优化一下,比如可以用一个输入来表示将这个电路的输出设置为true还是false,还可以再加入一个输入来表示是否允许写入(修改)这段电路保存的数据(保护数据安全)。优化后的电路图就是下图这样子的,这称为“门锁”。

(4)寄存器

这样一个门锁只能存1 bit的数据,如果有8个这样的锁存器并排放置,就能存放8bit的数据了,这样的一组锁存器称为“寄存器”。早期的电脑使用8位寄存器(如今已经是64位了),这8个锁存器常作为整体使用,因此可以使用一根线来连接每个锁存器的允许写入线(节省导线)。

这样,当需要写入一个8 bit的数据时,就将允许写入线打开(置为true),然后写入数据,再将允许写入线关闭。这样这个寄存器中就保存了8 bit的数据。

2.内存

(1)锁存器矩阵

内存也是由一个个单独的锁存器组成的。为了尽可能减少导线的使用,可以将锁存器排列成一个矩阵。根据计算的需要,计算机可能随时需要读写某一个锁存器的数据,这里可以使用交叉定位的方法。每一行的锁存器共用一根行线,每一列的锁存器也共用一根列线,然后在每个锁存器中加入一个AND门,即当行线与列线同时为true时,这个锁存器就是被选择的那个目标锁存器。

这就像用一条经线与一条纬线,可以交叉定位一个准确的地理位置。也就是通过控制对应的行线与列线,就可以准确定位到目标锁存器,即此时矩阵中只有这一个锁存器是被选中、允许写入的。

因此,可以用一根数据线来连接所有的锁存器。当需要写入数据时,只需要控制行线与列线,交叉定位到目标锁存器,然后用数据线来传送数据就可以了。只有被选中的那一个锁存器处于允许写入的状态,所以它会被写入指定的值,而矩阵中的其它锁存器不会被写入。

除了允许写入线,还可以为锁存器设置一条允许读取线,原理是一样的。行线与列线是负责交叉定位目标锁存器(传送地址信号),而允许写入线或者允许读取线决定了要将目标锁存器置于什么状态(传送控制信号)。

这样,对于一个256位的存储空间(16位*16位的锁存器矩阵),只需要16条行线、16条列线、1条允许写入线、1条允许读取线、1条数据线,总共35条线就可以了。

(2)内存地址

内存中每一个存储单元都有一个地址编号,那么如何通过地址编号找到对应的那个锁存器呢?这需要用到“多路复用器”,这个部件的作用是根据编号向对应的行线或者列线写入true。

比如,在256位内存中,有16行和16列,所以行号用4bit就足够表示,列号也是。那么一个内存地址就可以用8 bit来表示,比如 1011 0011B 就表示第11行第3列(假设先写行地址后写列地址)。这时需要一个16位多路复用器来根据1011B这个行号,向对应的第11行的行线写入true;另外需要一个16位多路复用器来根据0011B 这个列号,向对应的第3列的列线写入true。然后,第11行第3列的那一个锁存器就被选中激活了。

这有点像老师在上课时点名,全班同学的座位排列成一个矩阵,当老师请第2排第4列的那个同学起立(老师给出了地址信号),这时那个同学就是被选中的。至于起立之后,是要被老师提问,还是要上台展示,这就属于“控制信号”,应当由控制线给出(控制写入线和控制读取线)。无论老师给出什么控制指令,只有这个被选中的同学要去做,而其它同学不做。

现在可以再次忽略底层细节,向上抽象,将这块256位的内存空间看做一个整体,示意图如下。输入的线分为三类:地址线(每一根地址线传送1bit)、数据线(传送1bit数据)、控制线(传送控制指令,读取或写入,1bit)。

(3)可寻址内存单元

但256bit的内存也不算很多,其中包含了256个地址,每个地址能存放1bit的数据。其实每一个地址只存放1 bit的数据,这着实有点少,可以将8个256bit内存并排放置,编号0-7,就像将锁存器组成寄存器那样。

毫无疑问,0号256bit内存中存在一个地址编号为0001 0001B(即第一行第一列)的锁存器,它能存储1 bit的数据;而剩下的1-7号256bit内存中,也都有一个地址编号为0001 0001B的锁存器。也就是说,如果把它们(这8个256bit内存)看做一个整体,那么地址编号为0001 0001B对应的锁存器共有8个,可以存储8bit 的数据。换句话说,这8个锁存器是共用一个地址编号的,0001 0001B地址指向的内存空间中可以存放8 bit的数据,这8bit数据作为一个整体被读取或者写入)。

也就是说,当访问0001 0001B地址指向的内存空间时,可以读取或者写入一个字节(8bit)的数据,这就是一个可寻址内存单元。8个256bit内存并排放置,就得到了256个可寻址内存单元(一个内存单元存放一个字节,也就是8 bit)。

由此,就构成了一块内存(或者说随机存取存储器RAM),这块内存中每个内存单元存储一个字节的数据,共有256个内存单元。如图。

(4)随机存取

8位的内存地址最多只能有256个不同的内存地址,如果内存更大(内存单元更多),那么8位的内存地址就不够用了,就需要16位或者32位,甚至是64位的内存地址。

内存的特性是随机存取,即可以随时访问任意一个地址的数据。不同类型的随机存取存储器(RAM)的基本组成原理是相同的,只不过它们是用不同的电路来存储1bit的数据,但向上抽象的过程是相似的。


总结

本篇内容:

1.锁存器、寄存器

2.内存地址、内存单元

猜你喜欢

转载自blog.csdn.net/Dr_Cheeze/article/details/127917452