张森ZS

write code everyday

导航

计算机速成课 第六集:寄存器 & 内存

回顾

上一集,使用逻辑门做了一个简单的 ALU,但是这个是仅仅用于计算的。
算出结果后,如果仍掉就没有什么意义了,需要找个办法存起来,
所以,今天要讲的是从把一个东西算出来,到怎么把算出来的东西存储起来。

1. 数据有损失的原因

玩游戏的时候,一旦断点,那么就会失去游戏的进度,也就是游戏数据丢失了。
这是为什么呢?
因为这个时候使用的是 RAM(随机存取存储器) , 它只能在有电的情况下存储东西,例如:游戏状态。

2. 另一种存储:持久存储

即使在电源关闭的情况下,也不会丢失数据,这个后面的章节会讲。

3. 今天要做的东西:一个存储1位的电路

先做出可以存储1位的电路。然后扩大,做出内存模块,下次再和ALU组合,做出CPU。

正题

1. 从课程开始至今,我们说过的电路都是单向的

就是说电路总是向前流动的。例如,上集讲的「脉动进位加法器」;
但是也可以做「回向电路」,把输出连回输入。

2. 做出能存 0 和能存 1 的电路

这样将两者结合起来的时候,就可以构成「AND-OR 锁存器」,

它有两个输入
	- 「设置」输入,把输出变成 1
	- 「复位」输入,把输出变成 0
 
最终,存住了 1 位的信息。这个叫做「锁存」,因为它「锁定」了一个值

放入数据的动作叫「写入」,拿出数据的动作叫「读取」

3. 继续抽象,希望只有一条输入线

因为用两条线「设置」和「复位」来输入有点难理解,
为了使用更加容易,希望只有一条输入线;

4. 可以存放一个 Bit 的盒子

这里会涉及到「门锁」的概念。
门:可以打开或者关上。
这时候,我们希望有一个盒子,把「门锁」放到盒子中,这个盒子可以存一个 Bit。

5. 寄存器

在前面的基础上,我们来扩展一下规模: 我们并排放 8 个锁存器,一组这样的锁存器称为「寄存器」

寄存器可以存一个数字,这个数字有多少位,叫做「位宽」

可以存 8 位信息,例如一个 8 bit 的数字

早期的电脑使用的是 8 位寄存器,然后随着时代的发展,有了 16位,32位等的寄存器。

小结:存 1 位,锁存器;存 8 位,寄存器。

6. 「多路复用器」

为了减少线路的使用,我们需要将地址转成「行」和「列」,这个时候就需要用到「多路复用器」

一个 16*16 的矩阵可以存 256 位,组合 256 位内存 + 多路复用器,可寻址的 256 字节 内存

数据选择器/多路复用器 解码 8 位地址,定位到单个锁存器;

7. 独立的存储模块和电路

这是一个整体的可寻址内存

8. 内存的一个重要特性:可以随时访问任何位置

因此叫内存又叫「随机存储器」

一条 1980 年代的内存,1M 大小

总结:

划重点,今天主要讲的是使用「锁存器」做了一块 SRAM 「静态随机存取存储器」。

posted on 2021-07-18 11:42  张森ZS  阅读(107)  评论(0编辑  收藏  举报