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

6 | 寄存器 和内存

作者: 遗忘的残酷 | 来源:发表于2020-05-18 01:24 被阅读0次

    重点:


    image.png

    ALU 计算完结果,直接扔掉就没有意义了,需要找个方法存起来。

    还可能需要多个连续操作。 ---就需要计算机内存。

    • 随机存取存储器 - RAM
    • memory 持久存储

    锁存器

    之前电路都是单向的,向前流动。

    但也可以做回向电路,把输出连回输入。

    • 或门 :
    image.png

    0 OR 0 = 0
    1 OR 0 = 1 --> 1 回流到 B 改为 1 OR 1 = 1

    image.png

    将A 变成0 OR 门依然输出1
    0 OR 1 = 1

    现在这个电路能记录 “1”

    问题: 这是永久的,无论怎么改 都没法从 1 变回 0 。

    • 与门
    image.png

    1 AND 1 = 1

    0 AND 1 = 0 --> 0 回流到 B 改为 0 and 0 = 0

    现在这个电路能记录 “0”

    image.png
    • 两个连起来就是 AND - OR 锁存器
    image.png

    设置 :

    image.png image.png

    复位:

    image.png image.png

    它存住了1 位信息 --存储 这叫 “ 锁存” 因为 “锁定了一个值”,放入叫“写入” 拿出数据叫“读取”。

    现在有办法存入一位值了 Great

    • 问题:
      用两条线 “设置” 和 “复位” 来输入 有点难理解,希望只有一条输入线。
    image.png
    • 希望数据输入 设为 0 或 1 来存储。
    • 另一根来 “启用” 内存,启用允许写入,没有启用锁定。

    解决: 门锁 可以打开和关闭

    打开:

    image.png

    关闭:

    image.png

    提升 “抽象” 寄存器

    把 “门锁” 放到盒子里,盒子能存一个bit

    image.png

    一切从0 开始

    image.png

    如果 输入 从0 切换到1 或者从1 切换到0 输出依然 0 ,因为允许写入线 是关闭的,所以内容不会变化。

    允许写入 输入 1 ,“打开门”

    image.png

    Success 保存成功 !!

    关掉 允许写入 线,输出保持 1 ,不管给输入什么值,输出都变。值保存了。

    image.png

    再打开 ,允许写入 ,输入 设置 0 ,输出就是0 ,关闭,输出 是0 。

    image.png

    允许写入关闭 ,输出0 。


    怎么存储更多的位?

    只能存储1 bit 没什么用。

    如果并排放8个 锁存器,可以存储8 位信息,比如一个8 bit 数字 最大255 。

    • 一组这样的锁存器 叫 “寄存器” 。
    • 寄存器能存一个数字,数字有多少位,叫 “位宽”。
    • 早期电脑用8 位 寄存器,然后是 16 位 32 位 64 寄存器。
    image.png
    1. 一根线启用所有允许输入线,设为1
    2. 然后 8条数据线发数据,然后将允许写入设回 0
    3. 现在8 位值就存起来了。
    image.png

    问题:
    如果64位寄存器,需要64根输入 ,64 输出 1根启动 129条线。
    存256 要 513 条线。

    解决方法:矩阵

    image.png

    16 x 16 256 位锁存器,要启用某个锁存器,就打开相应的行线列线

    image.png

    一根线连接所有有的允许写入线,行线 ,列线,允许写入线 都必须是1 ,每次只有一根锁存器会这样。 代表可以用一根 “数据线” 连接所有锁存器来传数据。因为只有一个锁存器会启用,只有那个会存数据。
    其他锁存器会忽略数据线上的值,因为没有“允许写入”

    写入:

    image.png

    读取:做 允许读取线 来读数据,从一个指定的锁存器,读取数据。


    image.png

    只需要 35 条线连接:省了好多

    1条 数据线
    1条 允许写入线
    1条 允许读取线
    16 x 16 矩阵线
    16 + 16 + 3 = 35

    需要某种方法来 唯一指定交叉路口。

    • 比如 12 行 8 列:
      由于最多16行 用4位就够了(8 4 2 1 = 16 )

    12 二进制 = 1100
    8 二进制 = 1000
    12行8列 地址: 11001000

    • 11001000 地址转 行 & 列 - “多路复用器”
    image.png

    行 列 输入 4位数,查找:


    image.png

    再抽象 ,256 位内存

    image.png

    一个没什么用,和寄存器一样,8个并排。
    一行8个,可以存一个8位数字, 8位叫一个字节(byte)

    为了存一个8位数字,同时给8个 256 位内存 一样 的地址。
    每个地址存一位, 意味着可能存256 个字节 。

    image.png

    封装转换 成一个整体的可存取的内存。
    每个地址能读或写 一个8位值。

    image.png

    现在的兆字节(Mb )千兆 (GB) ,和这个做的一样,不断把内存打包到更大规模。

    随着内存地址增多,内存地址也必须增长。
    8 位最多能代表 256个内存地址。一共256 个数字。

    要给千兆 或十亿字节的内存寻址,需要32 位地址。
    内存的重要特征: 可以随时访问任何位置。

    因此叫“随机存取存储器” ,简称 RAM。

    RAM ,像人们的短期记忆,只记录当前在做什么事情。

    真实内存

    image.png

    打开放大:

    image.png

    放大:


    image.png

    矩阵:


    image.png

    128 x 64 = 8192 位
    每个方格 四个矩阵
    8192 x 4 = 32768

    32个方格
    327368 x 32 = 100万位

    8个芯片 总共 800万位 = 1兆字节(1Mb)

    1 Byte = 8 Bits
    1 KB = 1024 Bytes
    1 MB = 1024 KB
    1 GB = 1024 MB

    相关文章

      网友评论

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

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