05_寄存器和RAM

2023-11-14

计算机的组成原理中,存储是必不可少的部分,可以用来存储计算的结果、图片、文字等等,本文将介绍存储是如何实现的。

锁存器

首先我们来看一个门电路:当两个输入引脚都为0时,输出引脚也为0;如果A引脚输入1,输出为1,B引脚也会变为1,此时将A引脚变为0,输出依旧会保持1,所以这个电路可以记录1。

还有一个相似的电路:用与门代替上面电路中的或门,当两个引脚输入为1时,输出为1,将A引脚的输入改为0,则输出为0,B引脚也会变为0,将A引脚改为1,输出依旧保持为0,所以这个电路可以记录0。

在这里插入图片描述

将这两个电路组合,增加一个非门,即可形成锁存器:两个输入引脚分别为置位(set,上面的引脚)和复位(reset,下面的引脚),如果置位为1,复位为0,则输出引脚为1;将复位变为1,则输出引脚为0;将两个输入引脚都变为0,则输出引脚则会保持上一个状态;==此时,输出引脚并没有跟随输入引脚的变化而变化,是保存在了一个状态,通过这种方法,即可以实现数据的存储。==将数据放入存储的过程称为“写数据”,将数据从存储中取出的过程称为“读数据”。

在这里插入图片描述

在上述存储一位的电路的基础上,增加一些门电路,即可形成“门控寄存器”:包含两个引脚,数据输入引脚和使能引脚,当使能引脚为1时,输出引脚和数据输入引脚的电平一致;当使能引脚为0时,输出引脚不会变化。使能信号高电平时,输出和输入保持一致;使能信号低电平时,输出保持原有状态不发生改变。

在这里插入图片描述

寄存器

通过锁存器,可以存储一位的数据,但现实情况是一位数据能做的事情比较有限,所以通常将一定数量的锁存器组合起来,形成寄存器,所能存储的位数代表寄存器的宽度,比如32位宽度寄存器可以存储32位的数据。

下图为一个8位的寄存器,使用一根使能线同时控制8个锁存器(将上图中的锁存器简化表示),当使能线为1时,完成对寄存器数据的写入,将使能线设为0,完成寄存器数据存储。

在这里插入图片描述

按照上述方法设计位数较多的寄存器有一个弊端:所需要的接口较多,比如设计64位的寄存器,需要64根输入线,64根输出线和一根使能线。为了解决这个问题,通常使用矩阵排布的方式设置寄存器。比如下图256个锁存器,可以按照16×16的方式排列,可以通过16条横向线和16条纵向线选择锁存器。

在这里插入图片描述

每个锁存器单元连接电路如下图所示:使用横向线和纵向线选择具体的锁存器,然后将使能线置1,写入或读取数据。通过这种方法,外接线的数量数量大大减少,256个锁存器只需要35根线:16根横向线,16根纵向线,1根使能线,1根读线,1根写线。使用这种方法需要对于每个锁存器依次读取。

在这里插入图片描述

RAM

为了明确读取的是哪一个锁存器,将16行和16列用地址表示:

在这里插入图片描述

16个数字可以用4位二进制表示,因此16行和16列可以用8位二进制表示(前四位表示行,后四位表示列),所以使用的控制线可以进一步简化:用8根线表示地址,1根读使能,1根写使能,1根数据线(读使能时数据线用于读数据,写使能时数据线用于写数据)。

在这里插入图片描述

上文描述了一个256位的存储是如何工作的,然而256位的存储实际使用时还是太小了。故将8个256位存储排列在一起,可以形成更大的存储。那么需要多少线去控制呢?是否为11×8根线?答案并不是这样的,将8个存储器按如下方式排列,使用8位的地址同时选择8个存储中相同位置的锁存器,通过使能线和8根数据线同时完成这8位存储内容的读/写,共需18根线。

在这里插入图片描述

将上述结构换一种表达方式,如下图所示:这就是我们在一些教材或者课程中常见的地址表示方式了。不难看出,8位地址的存储器最多可以存储256(2的8次方)个8位数,同理,32位地址的存储器可以存储4294967296(2的32次方)个32位数。

在这里插入图片描述

这种结构的存储器可以随时通过地址线读/写任意地址的数据,不用按照地址顺序依次读取,因此被称为“随机读取存储器”(RAM,Random-Access Memory)。这种存储通常应用于运行时的短时间存储,对应计算机中的内存条部分,相比于外部存储(磁盘等),速度更快。下图所示的计算机中真实的内存条由8块组成

在这里插入图片描述

每块放大后由32部分组成,再放大由4部分组成,每部分由128位×64位组成。可以计算出这是总容量1MB的内存,这是早期的内存条,现在常见的内存条就是4GB、16GB这种容量的(DRAM)。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

05_寄存器和RAM 的相关文章

随机推荐

  • 如何实现数据可视化分析?有这个解决方案就够了

    在这个数据呈爆炸式增长的时代 每天都有海量数据在产生 如何通过简单的方式实现业务上的分析 计算 交互 并最终呈现出可视化的分析结果 帮助业务人员更好地理解数据的价值 将数据变现 是当前众多企业都需要面对的问题 想要直观准确地从不同领域中的数
  • XGBOOST算法Python实现(保姆级)

    摘要 XGBoost算法 eXtreme Gradient Boosting 在目前的Kaggle 数学建模和大数据应用等竞赛中非常流行 本文将会从XGBOOST算法原理 Python实现 敏感性分析和实际应用进行详细说明 目录 0 绪论
  • sqlite3加密支持

    sqlite3加密支持 sqlite3免费版并不支持加密 不过留有接口 有不少开源的加密实现 不过有的需要使用openssl配置略显繁琐 不过使用wxsqlite比较方便 wxSqlite3 wxSqlite3是wxWidgets的扩展组件
  • 声笔飞码超字模式效率分析

    声笔飞码超字模式效率分析 2 keys 672 items 405280396 00 times covering 72 48 2 keys 672 items 405280396 00 times covering 72 48 3 key
  • SVM(2)从原始问题到对偶问题的转换

    S VM的水真是太深了 只能一点一点的解决了 今天这篇博客简单讲解SVM的目标函数从原始问题到对偶问题的转换 在这里再给大家一个大牛的博客链接 http blog pluskid org p 685 1 转化对偶问题 上篇博客中我们得到的目
  • 计算机无法访问指定设备路径或文件怎么回事,window无法访问指定设备 路径或文件是怎么回事...

    近日许多用户在咨询小编说自己的电脑在打开某些程序的时候 就出现提示window无法访问指定设备 路径或文件 从而导致程序的无法正常运行 许多用户对此也都不知该从而下手 非常烦恼 那么window无法访问指定设备 路径或文件怎么解决呢 下面小
  • UGUI内核大探究(九)Image与RawImage

    Image组件是UGUI里最常用的组件 可能没有之一 我们知道其实还有一个RawImage组件 那么二者的区别是什么呢 之前的文章UGUI内核大探究 八 MaskableGraphic中我们提到过 二者 连同Text 都继承自Maskabl
  • ES的java接口调用异常信息:java.lang.RuntimeException: Request cannot be executed; I/O reactor status: STOPPED

    我的处理方法是重启了连接ES的服务接口 我专门写的一个供APP调用的服务 这个服务去连接ES 出现了这个错误 估计还是客户端连ES的出了问题
  • 【蓝桥杯】带分数

    题目 100可以表示为带分数的形式 100 3 69258 714 还可以表示为 100 82 3546 197 注意特征 带分数中 数字 1 9 分别出现且只出现一次 不包含 0 类似这样的带分数 100 有 11 种表示法 输入格式 一
  • 一起学Vue3源码,实现最简Vue3【07】 - 实现 isReactive 和 isReadonly

    实现 isReactive 和 isReadonly 什么是isReactive isReadonly 即判断一个对象是否是reactive或者readonly reactive spec ts import isReactive reac
  • 关于模板类重载流operator<<

    关于模板类重载流operator lt lt template
  • 机器学习之逻辑回归算法笔记

    逻辑回归是一种用于解决分类问题的机器学习方法 它是一种基于概率思想的预测分析技术 分类算法 Logistic 回归用于预测分类因变量的似然性 逻辑回归中的因变量是二进制变量 数据编码为 1 是 真 正常 成功等 或 0 否 假 异常 失败等
  • C++ 类的构建,继承,派生上的小细节

    自己从C过渡到学C 的时候 对于面向过程和面向对象两种编程思想一直模模糊糊分不清楚 所以花了很大的功夫 侧面说明我可能不适合编程 为了提醒 也是为了做一点小总结 特意总结了一些学习的时候发现的易错点 一 类在声明的时候 必须要写清priva
  • UCOS-III 互斥量

    互斥量 一 互斥量基本概念 二 互斥量优先级继承机制 三 互斥量应用场景 四 互斥量运作机制 五 互斥量创建流程 1 定义互斥量 2 创建互斥量 六 互斥量接口函数 1 创建互斥量函数OSMutexCreate 2 删除互斥量函数 OSMu
  • VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tupl

    VisibleDeprecationWarning Creating an ndarray from ragged nested sequences which is a list or tuple of lists or tuples o
  • VS2015创建C语言工程

    http blog csdn net hao134838 article details 53142442 foxhandler RssReadRenderProcessHandler 引言 之前我们在完成C语言工程的时候都是在VC 6 0
  • 【数字音频】采样率、声道与采样深度

    前言 最近因为项目需要 接触了一些简单的数字音频知识 内容来源于网络 百度百科及相关博客 这里做一个简单的记录 方便以后查阅 1 采样率 采样频率 也称为采样速度或者采样率 定义了每秒从连续信号中提取并组成离散信号的采样个数 它用赫兹 Hz
  • uni app 调用网络打印机_Taro 和 uni-app选型对比

    一 Taro和uni app的介绍 1 taro的介绍 taro是多端统一开发框架 支持用 React 的开发方式编写一次代码 生成能运行在微信 百度 支付宝 字节跳动小程序 H5 React Native 等的应用 2 uni app的介
  • 修改Jar包源码(无需反编译工具)(文章看起来很长,其实方法超级简单!)

    前言 本文结合实际项目案例 介绍修改jar包源码的方式 其中运用了一些小技巧 正文 场景 在项目中用了第三方的jar包 但是jar包某个类的成员变量是private的 想将其改为public属性 以便为其赋值 源码中没有其提供简单的set方
  • 05_寄存器和RAM

    计算机的组成原理中 存储是必不可少的部分 可以用来存储计算的结果 图片 文字等等 本文将介绍存储是如何实现的 锁存器 首先我们来看一个门电路 当两个输入引脚都为0时 输出引脚也为0 如果A引脚输入1 输出为1 B引脚也会变为1 此时将A引脚