计算机科学: 寄存器&内存
参考:
【十分钟速成课:计算机科学】6.寄存器&内存
要想聊寄存器Latch,首先要聊内存。什么是内存?
Memory,就是储存信息的东西。
我们都玩过单机游戏,如果突然关机,游戏结束但是没有存档,那么下次就必须从新再玩。
这是因为游戏储存进度而使用的内存是RAM,类似于人的短期记忆。
那么问题来了,我们如何储存信息?
我们知道对于计算机来说,信息就是1或者0
因此,我们只要控制每一个位置的信息是1,或是0不变,就能把信息保存下来。
现在来聊点实际的:
如何储存信息1?
来看这个门:

这个门的输出永远是1,不论A的输入是什么。
同理,这个门的输出永远是0

我们可以结合这两个电路,得到 :

我们通过置1或者置0的电路输入信号,让他的输出永远是1或者0。
它记住了一个信息!!! That‘s what we call Memory~
这叫做锁存,因为它锁住了一个值。
再优化一下:

这个电路由两个信号控制,enable 和 Input 如果enable了,就允许数据读入,否则无法读入数据。
接下来,把他抽象成一个黑盒就好了。这个盒子能够储存一个bit
我们可以并排8个latches 这就是一个八位寄存器。其中八个成为位宽
然而一个寄存器有三条线,Input output enable ,对于一个128位宽的寄存器来说,
即使enable只用一根线来代替,那也是128*2+1 根线。
如何减少?
Matirx
我们把256个寄存器放入16 *16 的矩阵中:

其中,我们通过导通某行和某列交叉线的位置上寄存器的enable,而其他寄存器上的enable 关闭。
这可以通过与门实现。
然后让数据在电路里流过,但是只有enable 打开的寄存器才能读入数据。
这样只需要35条线。
那么如何指定交叉位置?
比如说我想指定第12行,第8列的位置。
首先地址最多有6行,那么只需要用四位二进制数表示就好了。
12=1100
8=1000
那么,我们把12行8列对应的地址就可以表达为:11001000(就是12的二进制表示和8的二进制表示连接起来)
我们现在知道了如何将地址存储为二进制数了,
那么如何解读成第几行第几列呢、
here comes mutilplexer
现在我们把一个128位的寄存器抽象一下:“

他需要你输入一个储存的地址,和read enable write enable 还有data
这样一个256位的 memory 也没啥用,我们需要更大的内存,所以把它叠起来。


浙公网安备 33010602011771号