计算机内存

存1

计算机内存RAM_寄存器

记录1,也就是说当第一次输入了值后,不管A接下来是0还是1,电路中存储了不变的值OUTPUT

存取0

计算机内存RAM_RAM_02

记录0

锁存器

将两个结合在一起,做成了锁存器(AND-OR LATCH)

计算机内存RAM_数据_03

当我的SET设置为1时,1 OR 1 = 1, 最后输出 1 AND 1 = 1,之后只要rest的值依然为0,不给SET,那我的电路就就一直存在着值 OUTPUT=1

计算机内存RAM_多路复用_04

新的问题来了,我们有2根输入线 SET,和REST.实现起来比较麻烦,也难以理解,如何优化?

将2条线合并成一条输入线,通过增加一些门

门锁 Gated Latch (因为可以打开和关上)

抽象一下: 我们只关心数据输入0或者允许输入0,以及输出

计算机内存RAM_数据_05

寄存器

计算机内存RAM_随机存储器_06

多路复用器

计算机内存RAM_多路复用_07

有两个多路复用器,一个处理行,一个处理列

256位内存还是太小了

计算机内存RAM_寄存器_08

计算机内存RAM_多路复用_09

思考:

1.RAM是什么?什么时候会使用到? 类似在我们玩游戏中的什么? 与之相对的Memory的特点是什么?

2.上一节我们讲ALU全称是什么?

3.电流是单向还是双向的?类似于由八个什么组成的8位脉冲进位加法器? 那我如何可以实现电流的双向呢?

4.讲一讲 使用or门和输入A,B实现记录"1"的电路的方法

5.锁存器是通过OR,NOT,AND怎样实现的?

6.门锁(Gated Latch)是怎么使用的?

计算机内存RAM_多路复用_10

7.一组这样的门锁就是什么? 英文是什么? 8个可以存放几个bit? 描述能存几个bit的变量叫做什么?

计算机内存RAM_数据_11

8.64位寄存器中,一共有多少条线(存值线,允许线, 输出线) ,那么256位寄存器需要多少线? 这么多线如何解决比较好?

9.那我们如何确定交叉的地址呢?正常我们在现实中确定一个交叉地址是地18大街和8大道交叉口,类比到我们的寄存器中,我们使用什么?

10.多路复用器是用来做什么的?

答案:

1.RAM是Ramdom Access mermory, 随机存储器. 当我们玩游戏的时候,存档就是放在RAM中,当电源突然关机,RAM的数据就丢失啦. 与之相对应的Memory内存的特点是 可持久化存储

2.arithmetic logic unit, 计算逻辑单元

3.电流是单向的. 半加器. 通过将电路的输出连回到输入

4.在OR门左边有两个输入A和B,右边有个输出,中间是OR逻辑门的图形表示样式.

当A,B都是0时: 输出0

当A输出为1, B为0时, 输出为1, 这时候将输出连回到B端的输入,作为新的输入B

计算1 OR 1的结果变成了1,即使我们这时候将输入A修改为0,输出依然为1,这样我们就得到了一个记录"1"的电路

5.锁存器是通过并联or门和NOT门的电路,并串联到AND门上实现的

6.门锁有一个DATA IN 线专门存放要改变的数据, 一个WRITE ENABLE线,用来允许改变数据.还有一个输出DATA OUT. 只有当允许线为1的时候,下面里面的回路会变成NOT 1,这样就会往上走,先通过AND判断要变成的值为0还是1,再通过OR门将数据改为对应的DATA中的数据.

7.寄存器(register). 8个, 位宽

8.64条数据线连通输出线64条,还有一条线启用所有锁存器. 513条.

解决方式:使用矩阵

计算机内存RAM_多路复用_12

当我们想要仅使用某个寄存器时,我们将其左上角流通的两条线打开.右下角对应的寄存器就是想要打开的寄存器

计算机内存RAM_数据_13

将所有的锁存器线都连接到一根WRITE ENABLE线上.

计算机内存RAM_数据_14

假如想要让锁存器变为可写入状态,那么行线,列线,和"允许写入线"都必须为1

计算机内存RAM_多路复用_15

这意味着我们可以将所有的锁存器的数据线都连在一根线上,因为只有当writeable的时候才会存储数据,同理readenable线也可以接在同一条上,这样我们其实只需要35根线

计算机内存RAM_寄存器_16

计算机内存RAM_寄存器_17

9.使用4个字节存储行,4个字节存储列.(0-15 11111111)

10.多路复用器用来计算对应矩阵数据线的地址,