美文网首页
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|寄存器和内存

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

  • 我的逆向工程之路 - 汇编基础

    寄存器、内存、和栈 寄存器: 内存: 栈: 实用寄存器 详解: 指令解读 预备知识: { }表示可选项, [ ]...

  • JavaWeb系列读书笔记(六)JVM内存管理

    物理内存和虚拟内存 物理内存就是RAM和寄存器(用来存储计算单元执行指令的中间结果)。连接处理器和RAM或者寄存器...

  • 汇编3寄存器(访问内存)

    mov 寄存器,数据 mov 寄存器,寄存器 mov 寄存器,内存单元 如 mov ax,[0] mov 内存...

  • JAVA 一维数组

    数组 JVM内存划分 A:内存划分 JVM对自己的内存划分为5个区域 * a: 寄存器:内存和CUP之间 * b:...

  • 汇编语言

    程序的本质 寄存器与内存 通常,CPU会先将内存中的数据存储到寄存器中,然后再对寄存器中的数据进行运算 假设内存中...

  • 汇编语言入门三:是时候上内存了

    上回说到了寄存器和指令,这回说下内存访问。开始之前,先来复习一下。 回顾 寄存器 寄存器是在CPU里面 寄存器的存...

  • 寻址方式

    寄存器寻址 不涉及内存,将寄存器 eax 中的内容放到寄存器 edx 中: 立即寻址 不涉及内存,将立即数放到 e...

  • 概述

    1.基本构成 CPU 内存 输入/输出模块 系统总线 2.寄存器 用户可见寄存器 控制和状态寄存器 2.1用户可见...

  • 8086汇编二——AT&T了解

    学一门汇编,学好寄存器就差不多了。 CPU就是在寄存器和内存之间捣鼓数据。 16位寄存器:AX --> AH、AL...

网友评论

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

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