美文网首页
06|寄存器和内存

06|寄存器和内存

作者: 井润 | 来源:发表于2019-11-18 23:45 被阅读0次

    从上节讲到的算术逻辑单元完毕之后,这一节我们将介绍到一个比较重要的就是:寄存器和内存

    重点是Memory(存储/内存 良中含义)

    其中介绍到的点如下所示:

    • 存1位(Gated Latch 锁存器)
    • 存8位(Register 寄存器)
    • 16*16的矩阵存储256位 数据选择器/多路复用(Multiplexer)解码8位地址,定位到单个锁存器
    • 4位代表行,4位代表列
    • 组合256位内存+多路复用
    • 可寻址的256字节 内存 1980年代的内存 1M大小
    • 8各模块,那个模块有32个小方块,每个方块有四个小块,每个小块对应的是128位*64位
    01|Memory

    上文中讲到的算术逻辑单元,其中的算术单元和逻辑单元的组成,但是如果只是计算的话,就直接扔掉之后的意义并不大!

    对应的我们需要将结果存储起来,以便之后的使用,可能会有多个连续操作,这个时候就不得不介绍到计算机中比较重要的部分,Memory了,也就是所谓的内存!

    如果说你玩过长时间的对局或者扫雷之类的游戏等等,如果遇上天气不好,打雷之类的导致突然断电,你就会因为失去存档或者进度而感到失落! 明明快结束了或者快赢了的时候,突然一下子什么都没了,电脑也关机了!

    那么你又是否想到过,为什么断电会导致扫雷或者主机游戏进度的丢失呢?

    其实如果说你认真学习过计算机科学的话(比如现在的我正在温习),你可能心里有了答案,这是因为电脑是用的是随机存取存储器/内存(Random Access Memory)

    对应的特性如下所示:

    • 只能够在有电的情况下存储东西!

    你此时也可能好奇,那么只有随机存储,有没有对应的永久性存储吗? 对的,是有的,有一种存储/内存叫做持久性存储,就是将对应的内容持久化到存储设备上? 譬如说:U盘,硬盘,存储卡 都是常见的存储设备/介质!

    之后我会针对持久性存储,讲讲我对他的学习和理解!

    做只能够存储1位的电路,之后再扩大做出我们的内存模块,瑕疵和ALU结合起来,做出CPU(中央处理器).但是至今的电路都是单向的,总是向前流动的,比如说之前说到的 8位波动进位加法器 也可以做回向电路,把输出连回输入,使用对应的OR门可以做到!

    A------
            or----|-----OUTPUT
    B------       |
       |          |      
       |          |
       |----------| 
    

    其实就是这样一个结构,输如0和0对应的输出也就为0,但是如果说对应的A为1,对应的 1 or 0,对应的结果输出回到B也就是为1了,对应的1 or 1也就是为1 这个电路能够存储1,是永久的,但是无法从 1变回0这是问题所在!

    A------
           and----|-----OUTPUT
    B------       |
       |          |      
       |          |
       |----------| 
    

    对应的该电路如果输入1and1的话输出的结果为1,但是如果说有一个为0,那么对应的结果就为0!

    现在结合两个电路图就可以很好地理解,组成了or-and电路,次是为了做出有用的存储/内存,我们可以将电路结合起来!

    对应的AND-OR锁存器!

    对应的有两个输入:

    • 设置: 输出变为1
    • 复位: 输出变为0

    如果说设置和复位都是0的话,就会输出最后放入的内容! 对应的可以存住1位的信息! 这叫锁存,对应的锁定了一个值!对应的写入和取出都是比较好理解的,输入数据和输出数据 现在这种办法还是不错的,但是我们希望只有一根输入线,,将它设置为0或者1来存储值,对应的还需要一根线来启用内存,启用时允许写入没启用的时候就锁定!

    我们不关心单独的逻辑门,并且提升抽象,把对应的锁放入到盒子中去,该盒子能够存储一个bit,我们讲讲组件!

    A-----
            
            Value Lock  ----- output
    
    B-----
    

    对应的不管输入的值是什么,譬如说A,0或者1只有当B启用的时候这把锁打开才能够锁住对应的值! 输出的永远都是Value Lock的值!

    如果说只是这样的话,其实也没有多大的作用毕竟1bit能干的事情不多!

    02|寄存器

    如果说我们放置8个锁存器的话,对应的可以存8位信息,比如说8bit数字! 一组这样的叫做寄存器! 寄存器能够存一个数字,该数字有多少位,就叫做位宽 早期电脑启用8位寄存器,然后是16位再是32位寄存器! 如今计算机大多数用64位宽的寄存器!

    如果说需要使用寄存器,写入寄存器,需要启用里面的所有锁存器,可以用一根线连接所有的允许输入线,并且设置为1,将8条数据线发数据,然后将允许写入先设置为0 对应的8位的值就存储起来了!

    对应的使用很少的位,并排的放置,也勉强够用了! 64位寄存器64根数据线,64根连到输出线! 但是我们只需要一根线启用所有锁存器,但是加起来也有129根了!

    如果说是256位的话,对应的需要513根线!

    为了更好地解决其实最好的办法就是使用矩阵,矩阵中,并不并列排放锁存器,而是做成网格的形式,存储256位,我们用1616网格的锁存器,16行16列*,启用锁存器就需要打开对应的行和列线! 对应的交叉处,锁存器的允许写入线和所有的其他线路,都是保持关闭的,使用and门的情况下可能会好很多,比如:

    只有行和列线都是为1的时候,and门才会输出为1,我们可以选择单个锁存器,这种行列排列法,再用一根允许写入线连接所有的锁存器!

    为了让锁存器变成允许写入,行列和允许写入线都必须为1才行! 每次只有一个锁存器才会这样! 代表我们可以只用一根数据线来连接所有的锁存器传输数据!

    对于256位的存储,我们只需要35根线,1条数据线,1条允许写入线和1条允许读取线,对应的还有排列为1616的线!做矩阵*

    我们需要指定一种方法来标识对应的地址:例如说一个交叉路口,可以用对应的坐标表示,但是坐标的表示形式是我们需要考虑的问题!

    例如说12列8行! 统一使用二进制表示

    12列:1100

    8行:1000

    对应的组合表示则为:11001000 之后就可以将地址转换成为行和列! 我们就需要使用到 多路复用器

    因为有16行,我们就需要使用到16个多路复用器,输入4位数字,会把那根线连接到对应的输出线,如果输入0000会选择第一列,对应的8bit代表 列+行 我们可以当成整体看待,与此同时我们还需要允许写入和允许读取的线,对应的还需要一根数据线用作读/写操作!

    但是对应的256位的内存还是能做的东西不多,我们可以扩大规模对应的将她们并排存放,想寄存器一样,一行8个,可以存8位数字,对应的8位也叫一个字节byte,为了存储一个8位数字,我们同事给8个256位内存一样的地址! 每个地址存储1位! 意味着总共能存储256byte字节,我们不深究内部,对应的看做整体可寻址内存! 我们由256个地址,每个地址能够读或者写8位值!

    相关文章

      网友评论

          本文标题:06|寄存器和内存

          本文链接:https://www.haomeiwen.com/subject/ewpiictx.html