首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 生活 > 内存和寄存器区别(计算机学科那些事儿)
内存和寄存器区别(计算机学科那些事儿)
更新时间:2024-07-15 07:54:12
前言

上一节中我们讲到如何用逻辑门来构建一个ALU,它可以进行算术运算和逻辑运算,那么如果将算出来的结果存起来呢?这就要讲到今天的主角:「 内存 」了。

大家都有这样的经验,在计算机上进行文件编辑,或者正在看电视/电影,如果突然遇到断电,那么之前编辑的内容将没有保存,因为这些内容存储在内存中!电脑用的是"随机存取存储器",简称为"RAM"!遇到这种状况,只是郁闷的份了。

存储 1bit 的电路

我们之前讲过的电路都是单向的,就是说有输入,经过电路运算得到输出。现在假如我们将输出连回输入,有趣的事情将会发生!

让我们拿一个 OR 门,将输出传回输入,看看会发生什么。

首先,两个输入都设为 0,电路输出0;如果将 A 变成1,“1 OR 0”为 1,所以输出 1;

内存和寄存器区别(计算机学科那些事儿)1

一转眼的功夫,输出回到 B,OR门看到两个输入都是 1,“1 OR 1”仍然为1,所以输出不变;

内存和寄存器区别(计算机学科那些事儿)2

如果这时再将 A 变成 0,OR门依然输出 1!并且无论怎么试,都没法再从 1 变回 0。

类似的方法,如果将OR门换成AND门,情况正好相反。

A 和 B 都设为 1,“1 AND 1”的输出永远是 1;如果之后 A 设为 0,由于是 AND 门,输出会变成 0;就像之前,之后无论 A 设什么值,电路始终输出 0。

内存和寄存器区别(计算机学科那些事儿)3

“AND-OR 锁存器”

为了做出有用的存储 (memory),我们将两个电路合起来,变成“AND-OR 锁存器”。它有两个输入,“设置”( SET ) 输入1,将输出变成 1 ;"复位" ( RESET )输入1,将输出变成 0;如果“设置”和“复位”都是 0,电路会输出最后放入的内容,也就是说,它存住了 1 bit 的信息!这就是存储!

内存和寄存器区别(计算机学科那些事儿)4

之所以叫“锁存”,是因为它“锁定”一个特定值并保持状态,将数据放入叫“写入”,将数据输出叫“读取”。

麻烦的是,用两条线来输入,也就是 SET 和 RESET,有点难理解,为了更容易用,我们希望只有一条输入线,将它设为 0 或 1 来存储值,还需要一根线来“启用”(enable) 内存,启用时允许写入,没启用时“锁定”,这条线叫“允许写入线”!

我们将整个电路抽象一下,输入现在只有“允许写入线”和“数据线”,有1个数据输出。如果将 "数据线" 从 0 换到 1 或 从 1 换到 0,什么也不会发生 - 输出依然是 0,因为“允许写入线”是关闭的(0)来防止内容变化;

内存和寄存器区别(计算机学科那些事儿)5

当“允许写入线” 输入 1,现在可以在“数据线”上放 1,将 1 存起来。注意输出这时候会变成1了,然后可以关掉 “允许写入线”,这样输出就会保持 1 而无论输入端再输入什么!

内存和寄存器区别(计算机学科那些事儿)6

寄存器

只能存1bit 没什么大用,但是如果我们并排放8个锁存器,这样就可以存8 位信息,比如一个8bit数字,一组这样的锁存器叫“寄存器”。写入寄存器之前,首先要启用里面所有锁存器,我们可以用一根线连接所有“允许输入线”,然后设为1,然后用8条数据线发数据,然后将“允许写入线”设回 0,现在 8 bit 的值就存起来了。

内存和寄存器区别(计算机学科那些事儿)7

寄存器能存多少个bit叫“位宽”,早期电脑用8位寄存器,然后是16位,32 位。如今许多计算机都有64位宽的寄存器。

对于很少的 bit,并排放锁存器勉强够用。但是如果是64 位寄存器,要64 根数据线 64根连到输出端,如果我们只要1根线启用所有锁存器,但加起来也有129条线了;如果是256位寄存器,要513条线,解决这个问题的方法是用「矩阵」!

矩阵存储

在矩阵中,我们不并列排放锁存器,而是做成网格,这样存256 位,我们需要用 16x16 的锁存器,要启用某个锁存器,就打开相应的 行线和列线。

行选和列选总共有有 16 16 =32根线,再加上1条“数据线”,1条“允许写入线”,1条“允许读取线”,总共也只需要35根线!

内存和寄存器区别(计算机学科那些事儿)8

内存地址

我们需要有一种方法来唯一指定这个交叉的点,这就是地址。比如一个bit 的地址是“12行 8列”,由于最多 16 行,用 4 个二进制 bit 就够了,“12”用二进制表示为“1100”,“8”用二进制表示为“1000”,所以刚才说的地址可写作“11001000”。

为了将地址转成 行和列,我们还需要一个部件叫 “多路复用器”,多路复用器有不同大小,因为我们有 16 行,我们需要 1 到 16 多路复用器,它的工作方式是:输入一个4bit数字,它会把那根线连到相应的输出线,如果输入 0000,它会选择第一列;输入 0001,则选择下一列,依此类推。

一个多路复用器处理行(row),另一个多路复用器处理列(column)。

内存和寄存器区别(计算机学科那些事儿)9

内存抽象

我们将这个能够存储256 bit的内存经行抽象,它输入一个 8 位地址:4 位代表列,4 位代表行,我们还需要 "允许写入线" 和 "允许读取线",最后,还需要一条数据线,用于读/写数据。

内存和寄存器区别(计算机学科那些事儿)10

如果我们将更多的这样的单元连接在一起,就可以组成更大的存储单元。

如果将8个这样的256 bit 内存组在一起,就可以构建一个具有256 个地址,每个地址可以存储1个byte的内存!

内存和寄存器区别(计算机学科那些事儿)11

现代计算机的内存扩展到千兆字节(GB)的方式,和我们这里做的一样,就是不断把内存打包到更大规模。如下是一条真的内存,上面焊了 8 个内存模块,如果打开其中一个,然后放大,会看到 32 个内存方块,放大其中一个方块,可以看到有 4 个小块,如果再放大,就可以看到存一个"位"的矩阵。

内存和寄存器区别(计算机学科那些事儿)12

内存和寄存器区别(计算机学科那些事儿)13

总结与展望

在这一期里,我们从基本的锁存器一步步构建出了寄存器,再到大型存储器,就像计算机中的很多事情,底层其实都很简单,让人难以理解的,是一层层精妙的抽象!

那么如何利用内存和上一期里的ALU 来构建一个CPU呢?

关于这个话题,我们下一期再讲~

PS:本系列文章首发于同名公众号:「 三邵爷的梦呓 」,关注并回复关键字「 1024 」,你懂得!

,
相关推荐RECOMMEND
植物传播种子的方法(植物怎么传播种子)
植物传播种子的方法?蒲公英,柳树,芦苇等的种子是用风力传播的,苍耳的种子是靠动物来传播进行再生长,下面我们就来说一说关于植物传播种子的方法?我们一起去了解并探讨一下这个问题吧!植物传播种子的方法蒲公英...
家里客厅适合挂什么画好(家里客厅挂什么画好看)
客厅是整个家的颜值所在,客厅挂画自然不能太随便。如果你不知道家里客厅挂什么画好看?不妨学习一下成都装修网小编分享的挂画技巧,让你分分钟学会N种客厅挂画。1、抽象类抽象画看上去简单大方,大面积的颜色拼接...
金黄喜庆的避风塘排骨怎么做(金黄喜庆的避风塘排骨的做法)
金黄喜庆的避风塘排骨怎么做?排骨洗净后沥干水分,加入拍散的大葱、姜片、一勺量的酱油(老抽也可以)、几粒花椒、少许五香粉和白糖一勺盐,一小瓶盖高度白酒拌匀,腌制半小时入味;,我来为大家科普一下关于金黄喜...
家庭装修门口挂什么画好(盐城装修网四个方位解读家里客厅挂什么画好)
如果你想让自己家的客厅让看起来比较有讲究,那么在挂画这一点上就要讲究起来。特别是客厅不同方位挂画是要有不同的选择的,东面挂画主要代表着健康,西面跟子孙运有关。今天盐城装修网小编为你解读家里客厅四个方位...
新房第一次交电费怎么办(新房子第一次交电费)
新房第一次交电费怎么办?新买的房子,什么时候开始交电费呢?是一开好电卡就必须交费吗?其实没必要,一般电表里电力公司已预充50元,等装修完了再交也可以(装修也用不了多少电,50元足够),当然想马上交也是...
大米还有什么称呼(大米的18种方言你吃得懂吗)
大米是中国餐桌的基础,盘点起来,各个地方的人用大米做出了想象力丰富的吃法,开发出大米上不封顶的可能性,在你碗里最平凡的大米,是武汉人的“米粑粑”,上海人的“粢饭”,云南人的“饵块”,广东人的“肠粉”....