计算机需要 「”内存“来记录这些计算后的结果」,如果只是计算后就扔掉没有多大意义,我们需要将结果存储起来以便后面使用
RAM
当我们打游戏的时候如果停电或者电源不小心被拔掉,那么之前做的一切工作将丢失。损失数据的原因是因为电脑是用的:「”随机存取存储器“,简称“ROM”。他只能在有电的时候存储东西;另一种存储叫做持久存储,电源关闭时数据也不会丢失。」
存储一位的电路
之前说过的电路他们电流的流动方向总是向前流动,比如之前的八位加法器。但是也可以做「回向电路,把输出连回输入」
记录“1”
也即记录“true“,回想一下什么时候输出为true比较容易。答案是OR门,「只要有一个输入为true输出将永远为true。只要有一个1,输出将永远为1」
因此「将输出的线路接回到两个输入线路中的其中一个即(输出=A/B)」 。只要「A/B其中一个输入1」,那么输出就是1,由于输出会链接到另一个输入,「因此B/A也会为1」。之后不管如何变化A/B,B/A始终都为1,因此这个电路就是存储1的电路。
图示:只要当A输入为1的时候,这个电路的输出将会一直是1(输出会链接到B因此B为1),不管A如何变化。
也即存储”1“
「存储之后将永远无法改变输出是1这个结果。」
记录“0”
同样,用什么来存储false比较简单呢?答案是通过AND门,「因为」 「只要有一个为false输出就一直为false。」
「即只要有一个0,那么输出就会一直是0.」
和上面一样,替换1为0即可:
「将输出的线路接回到两个输入线路中的其中一个即(输出=A/B)」 。只要「A/B其中一个输入0」,那么输出就是0,由于输出会链接到另一个输入,「因此B/A也会为0」。之后不管如何变化A/B,B/A始终都为0,因此这个电路就是永久存储0的电路。
图示:当A输入0时,AND的结果为0,B也为0.之后不管A如何变化,输出将永远为0
同样也是持久化的存储了之后就不会改变
AND-OR锁存器
现在我们把上面的两个存储电路结合起来做成一个有用的存储:
组合到一起之后:
变化:存储1的B线输入接至整体的最后输出,存储0的B线输入为存储1的输出
首先来看两个输入:设置和复位。先不纠结他们的作用,把他们看成普通的输入即可
SET,RESET都为1:最后输出为0
SET=0,RESET=1:最后输出为0
RESET,SET都为0:输出为0
重点来了:
「SET=1RESET=0:输出为1,不管之后SET如何变化(设置为0也好1也好)最后的输出都为TRUE(他锁住了1位的信息),除非RESET设置为1输出才会重置为0因此这也是RESET的含义」
观察规律可得出:复位为1不管输入是0还是1最终输出都是0;复位为0输出的值=SET的值。「当SET为1时他锁住了这个1」
锁存介绍
重点:「当SET为1RESET=0时他锁住了这个1(即SET不管如何变化最后的结果永远都是1)。」
「这叫“锁存”,因为他“锁定”了一个值,放入数据的动作叫做“写入”,拿出数据的动作叫做”读取“」
锁存器优化——门锁
两条线设置和复位太麻烦,为了更容易使用。通过「一条输入线设置为0或1来存储值,还需要另外一根线去启用内存,让他存储。启用时允许写入,没有启动时就”锁定“这条线叫”允许写入线“」
正如图中所说的,这叫”门锁“,因为门可以打开和关上。
接下来读者自己去做下面的规则运算吧,最终会发现只有当允许写入线打开数据输入才会进行存储(OUT才会改变),允许写入线关闭,不管数据输入如何变化最后的结果都不会变(OUT不会改变)
抽象-门锁
将这个门锁放到一个盒子里面,「这个盒子可以存储一个Bit的信息。」
允许写入线关闭,数据输入线不管是0还是1输出都不会有变化。
允许写入线开启,输出随着数据输入的值进行改变。
寄存器-存储一系列锁存器
经过上面介绍我们现在可以存储一个一位的数字了,不过存储一位的数字并不能做什么。
定义
如果我们可以「并排放八个锁存器,就可以存八位的信」息,比如一个8Bit的数字。
「一组这样的锁存器叫做寄存器,寄存器能存一个数字,这个数字有多少位,叫做位宽。」
早期的电脑是用的八位寄存器,然后发展16位,32位,现在许多计算机都有64位宽的寄存器
8位寄存器需要多少线?
数据输入需要有八根线,对应的八个锁存器对应存储的数字
数据输出线也是需要八根线,每个锁存器输出各自存储的位
最后只需要「用一条启用写入线连接所有的允许输入线即可」.当设置为1时,这个八位的寄存器才会进行存储之后输出的时候会发生变化;当设置为0时,不会影响数据的输出。
可见八位的寄存器所需的线的数量时17根(8+8+1)
由此可推断出我们「现如今使用的64位寄存器所需要多少线:(64+64+1)=129根线」
「寄存器是一块比较小的内存用于存储一个值,而RAM是一大块内存能在不同地址(矩阵中的行列。地址多少取决于矩阵中行列数量)存大量数字」
「那么我们如果要用锁存器存256位就需要129X4=513条线!!!因此后面换了一种组合方式存储RAM」
原文始发于微信公众号(北洋洋洋):使用锁存器做一个寄存器 和 内存(上)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75984.html