本文讲内存的实现,从底层的二极管到内存的电路结构,本章逻辑线路为:电路-->二极管-->逻辑门-->组合逻辑单元j和存储单元-->内存
我们知道计算机本质是在做0和1的二进制运算,那么内存从抽象意义上看也是保存着0和1,那么问题是怎么保存这些0和1呢?下面就说说内存的硬件实现哈。
电路
先从一个简单电路看起,
image二极管
然而我们要控制二进制,在计算机里我们用两种互补的二极管(CMOS即n-MOS管和p-MOS管)实现这个开关,这两种原理如下。
imagen-MOS管,栅极端(Gate)通电后,则电路联通,栅极断电则电路断开
imagep-MOS管反过来,栅极端(Gate)通电后,则电路断开,栅极断电则电路联通
提示:小圆圈表示“非”,即取反的意思,若输入为1,流经小圆圈后则变为0
逻辑门
通过这些二极管的组合,我们可以实现计算机里的“与”、“或”、“非”逻辑电路。
非门(NOT):
image对应真值表:
In | Out |
---|---|
0 | 1 |
1 | 0 |
或门(OR):
image真值表:
A | B | C |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
与门(AND):
image真值表:
A | B | C |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
既然知道逻辑门的二极管实现后则可以用符号替代这复杂的底层实现。
image看完了逻辑门,紧接着看计算机内的逻辑单元。逻辑单元可以分为两类:
- 一类不可存储信息的(组合逻辑单元)
- 另一类可存储信息(存储单元)。我们分别介绍和内存相关的几个结构。
组合逻辑单元
不可储存信息的结构:用于计算或控制二进制
- 译码器:依据输入端的二进制,在输出端选中某一条电路
如图,如果A=0,B=0,则选中最上面的那条线
- 多路复用器:根据控制信号,只选择输入端的某根电路,把这根线输出到输出端
如图,若S1=0,S2=0,则A线路被选中,A的值即是输出值。
存储单元
可存储信息的结构:可用于保存二进制
-
门控D锁存器
image
- WE=0时(不可读写),S和R必为1,则电路稳定,out端可保持原来的值
- WE=1时(可读写),则根据D的值,out端变为对应的值。然后恢复WE=0则保存起来
- 寄存器:
一个门控D锁存器只能保存一个bit,则组合起来就能保存n个bit,这就是寄存器
介绍完这些组成结构后,我们终于可以讲解内存啦!
内存
先介绍两个概念:
-
寻址空间:即能保存多少个内存地址,我们通常意义上的4G内存,就表示计算机能保存2的32次方个地址!能保存这么多地址,也就能找到这些地址上的二进制信息
-
寻址能力:每个地址里具体存多少个bit,由于历史原因,绝大部分计算机都是8bit的寻址能力。
那么我们来看一个超简单的内存哈。这个内存是2的2次方的寻址空间,即只能查找4个地址。寻址能力是3个bit,即每个地址只能存3个bit。
image如图
- 内存的寻址由一个2个输入的译码器实现。译码器根据A1和A2的输入,选中对应的一条线,即找到地址对应的存储空间。
- 内存存储信息的能力具体实现是由门控D锁存器保存bit信息。
- 读取内存的输出由多路复用器实现。根据寻址时译码器选中的某一个线路,每一列的多路复用器只能输出那个线路的对应的那个门控D锁存器保存的bit。则最终的三个bit都是由同一个线路对应的三个门控D锁存器的输出。
这就是内存的实现原理了哈。
关于我:
linxinzhe,全栈工程师,目前供职于某500强通信企业,人工智能,区块链爱好者。
GitHub:https://github.com/linxinzhe
欢迎留言讨论,也欢迎关注我~
我也会关注你的哦!
网友评论