【计算机组成体系结构】主存储器的基本组成

一、半导体元器件存储二进制0/1的原理

一个存储器逻辑上分为MAR,MDR和存储体,这三块在时序逻辑电路的控制下相互配合工作。 

存储体有多个存储单元构成,每个存储单元又由每个存储元构成。一个存储元可以存放一位的二进制的0/1。

一个存储元由一个MOS管和一个电容组成。 

MOS管是一种半导体,当通电压达到某一定阈值时它才会变成导体,否则是绝缘体。

上图所示电容下金属板接地为0V,下金属板若和上金属板存在电势差则会存储电荷,以此来决定存储元存储的是1还是0。

当接通MOS管时,若导线一端有电荷流出,则可以判断该电容保存的是二进制的1,否则保存的是0。这是二进制的读出。

存储也很简单,接通MOS管,接通导线,电容开始累计电荷,这样就在里面存储了1。这时候再断开MOS管,就可以防止电荷跑出去了。

如果把多个存储元排列在一起就可以组成一个存储单元(存储字)。上图红线链接了一个存储单元的所有MOS管,如果此时在红线上加入一个5v的阈值电压就可以一次读出该存储单元内所有的二进制数据(绿线用来检测有无电流导出判断是0/1)。 

而多个存储单元又构成了存储体(存储矩阵)。上图所示的存储字长为8bit。存储字长根据一个存储单元中存储元的个数决定。但是1Byte=8bit是不会变的。

这也解释了为什么存储器一次读写都是以一个存储字长为单位

 


二、存储芯片的基本原理

1.译码器

如何根据地址决定我们要读/写哪一个字呢?这就涉及到译码器的工作原理。

对于译码器,我们给定n位地址对应2^n个存储单元,所以译码器会根据MAR给出的地址转变为某一条选通线的高电平信号,这样就可以读出一整排的存储元的数据了。

译码器的每一条选通线对应每一个存储单元的地址。 

之后通过数据线(绿线)把每一位二进制数据送入MDR中,接着CPU会通过数据总线从MDR中取走一整个存储字的数据。(当然数据总线的宽度是和存储字长相同的)

2.控制电路

由于电信号的不稳定,除译码器之外,还要有控制电路来控制MAR,MDR和译码器来实现存储器的读写。 

电信号是不稳定的,CPU通过地址总线将电信号送到MAR,但不会立刻送到译码器,当MAR中的电信号稳定之前,控制电路不会打开译码器的开关。

同样的,当输出的时候,控制电路同样会在MDR中的电信号稳定之后才能从MDR送出数据到数据总线。

另外,存储芯片还要对外提供一些线路如\overline{CS}(芯片选择信号)/\overline{CE}(芯片使能信号),上面带横线的意思就是当处于低电平的时候起作用。两个线路的意思就是,当处于低电平的时候,这块芯片可以工作了。

同时还有读写线。有些设计为两根线,一根表示读一根表示写(\overline{WE},\overline{OE})。有些则用一根既可以表示读也可以表示写。


片选线的作用如上图所示,上图内存条的每个黑块就表示一个存储芯片,当地址线搜索的地址在某一个存储芯片上,片选线自然要关闭除它以外的其它所有存储芯片。

同时存储芯片的引脚数应该等于地址线+数据线+片选线+读写控制线+供电+接地。 

上图中存储器的逻辑构成我们只有读写电路和驱动器上面没有说。读写电路包括上面的红线绿线以及控制电路的读写控制线。

驱动器,我们前面说过电信号的不稳定性,而驱动器就是一个信号放大器,可以让信号离开译码器之后仍然稳定有效。

之前我们说过总容量 = 存储单元个数 X 存储字长。之后我们还要熟悉上图所示的描述方式。

例如:8X8位的存储芯片,前一个8表示的是存储单元的数量,后面的8则表示存储字长。

而通过存储单元的数量自然就可以推断出地址线是多少,如上面的例子,2^3=8,所以8X8位的存储芯片的地址线有3根,又因为每个存储字长为8,所以数据线有3X8=24根。


三、不同的寻址方式的实现

上图所示的每个方格表示一个字节,也就是8bit,而每一整行表示一个存储字,也就是说这块存储芯片它的字长是4B。假设它的总容量是1KB,那也就是说它有256个字(256行)。

现代计算机中通常按字节编址,也就是说每个字节一个地址。所以这个存储矩阵中有1K个地址。这也就是按字节编址。   

但是存储器指支持的寻址形式可不是只有按字节寻址。按字节寻址自然需要10根地址线,因为2^10=1024,才足够寻1000个地址。

而如果按字寻址,一整行,也就是一个字合并看成一个地址。当我们需要读某个字的时候,假如我们现在要读的是第1个字,那只需要我们对1进行算术左移得到100,也就是4,就可以得到该字起始字节的字节地址。

按半字寻址和按双字寻址以此类推。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/220830.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式ID服务实践

背景 分布式场景下需要一个全局 ID 来标识唯一性,比如在单数据库时通过表唯一主键即可实现唯一 ID,分库分表时就需要全局唯一 ID。 业务对唯一 ID 的要求如下: 全局唯一性 不能出现重复的 ID 号,既然是唯一标识,这…

JDK 历史版本下载以及指定版本应用

参考: 官网下载JAVA的JDK11版本(下载、安装、配置环境变量)_java11下载-CSDN博客 Gradle:执行命令时指定 JDK 版本 - 微酷网 下载 打开官网地址 Java Downloads | Oracle 当前版本在这里,但是我们要下载历史版本 选…

java中 list.size() = 1 但显示 All elements are null

一、问题描述 serve层定义一个对象集合接收mybatis返回的结果,查询结果为空,但是接收集合对象长度却为1,集合内部显示All elements are null;导致在直接调用list集合中一些方法时导致报错java.lang.NullPointerException: null …

【原创】提升MybatisPlus分页便捷性,制作一个属于自己的分页插件,让代码更加优雅

前言 MybatisPlus的分页插件有一点非常不好,就是要传入一个IPage,别看这个IPage没什么大不了的,最多多写一两行代码,可这带来一个问题,即使用xml的查询没法直接取对象里面变量的值了,得Param指定xml中的变…

一文看懂 Linux 内核,清晰明了

Linux内核预备工作 理解Linux内核最好预备的知识点:懂C语言 懂一点操作系统的知识 熟悉少量相关算法 懂计算机体系结构 Linux内核的特点: 结合了 unix 操作系统的一些基础概念。 Linux内核的任务: 1. 从技术层面讲,内核是硬…

制作图片马

准备一张图片和一句话木马 打开cmd copy 图片/b文件 新的图片的名字 然后就自动生成了

Excel——多列合并成一列的4种方法

Excel怎么将多列内容合并成一列? 怎么将多个单元格的内容连接起来放在一个单元格里? 比如下图,要将B、C、D列的内容,合并成E列那样,该怎么做呢? △图1 本文中,高潜老师将给大家介绍 4种 将多…

随机链表的复制[中等]

优质博文:IT-BLOG-CN 一、题目 给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的深拷贝。深拷贝应该正好由n个全新节点组成,其中每个新节点的值都设为…

DAPP开发【09】NFT交易市场开发(hardhat测试)

测试文件下新建market.js文件 扁平化,将所有依赖放在tmp.sol,可以去给他人使用 npx hardhat flatten > tmp.sol 测试文件 const {expect} require(chai); const {ethers} require(hardhat);describe(Market,async function(){//定义三个合约&a…

BL121EN:IEC 61850到OPC UA的即插即用无缝转换解决方案

添加图片注释,不超过 140 字(可选) 在当今快速发展的工业自动化领域,实现不同通信协议之间的无缝连接是提高系统集成度、数据共享和设备互操作性的关键。钡铼技术(Bay-Tech)BL121EN硬网关应运而生&#xf…

vue3项目中使用iconfont图标

vue3项目中使用iconfont图标 写前端项目时,经常要用到iconfont图标,我最原始的方法是吧iconfont图标下载为png/svg文件,然后在文件中作为资源引入,后来发现这么搞太不专业了 记录一下相对比较靠谱的使用方法 1.在iconfont中找到…

【Spring Boot】如何在IntelliJ IDEA中由同一份spring boot源码运行多个不同端口的实例

我们需要使用一个服务有多个实例的测试场景,那么我们就需要在IntelliJ IDEA中通过不同的端口运行不同的实例,并且运行时的源代码是一样的,那么我们可以在IntelliJ IDEA这样操作,接下来以UserApplication服务为例: 复制…

【MySQL】基本安装配置

1 基础知识 1.1 MySQL安装 下载地址:https://dev.mysql.com/downloads/mysql/ 1.1.1 安装过程 配置环境变量(和配置Java8的环境变量如出一辙)在MySQL解压文件夹下,导入my.ini文件,与bin目录同级,具体文…

Linux4.8、环境变量续

个人主页:Lei宝啊 愿所有美好如期而遇 前言 如果对环境变量没有基本的理解,那么建议先看完这篇文章:环境变量https://blog.csdn.net/m0_74824254/article/details/134661113?spm1001.2014.3001.5501 环境变量与本地变量区别 使用export设…

二百一十一、Flume——Flume实时采集Linux中的Hive日志写入到HDFS中(亲测、附截图)

一、目的 为了实现用Flume实时采集Hive的操作日志到HDFS中,于是进行了一场实验 二、前期准备 (一)安装好Hadoop、Hive、Flume等工具 (二)查看Hive的日志在Linux系统中的文件路径 [roothurys23 conf]# find / -name…

PostGIS学习教程十:空间索引

PostGIS学习教程十:空间索引 回想一下,空间索引是空间数据库的三个关键特性之一。空间索引使得使用空间数据库存储大型数据集成为可能。在没有空间索引的情况下,对要素的任何搜索都需要对数据库中的每条记录进行"顺序扫描"。索引通…

AI生成视频-Pika

背景介绍 Pika 是一个使用 AI 生成和编辑视频的平台。它致力于通过 AI 技术使视频制作变得简单和无障碍。 Pika 1.0 是 Pika 的一个重大产品升级,包含了一个新的 AI 模型,可以在各种风格下生成和编辑视频,如 3D 动画,动漫,卡通和电影风格。…

HTTP会话技术---Cookie、Session和Token介绍及它们在JavaWeb中的使用

当涉及到Web应用程序的身份验证和状态管理时,我们通常会使用到Cookie、Session和Token这些会话技术。下面是对它们的介绍,并在JavaWeb中的示例 Cookie(HTTP Cookie) Cookie是一种存储在用户浏览器中的小型文本文件,由…

Elasticsearch:什么是情感分析?

情感分析的定义 情感分析应用自然语言处理(NLP)、计算语言学和机器学习来识别数字文本的情感基调。 这使得组织能够识别对其品牌、产品、服务或想法的积极、中立或消极情绪。 最终,它使企业能够更好地了解客户,从而为企业提供可行…

题目:区间更新(蓝桥OJ 3291)

题目描述&#xff1a; 解题思路&#xff1a; 差分模板题。 题解&#xff1a; #include<bits/stdc.h> using namespace std;const int N 1e5 10; int a[N], diff[N] ;//数组的大小不可能开到大于1e9int res(int n, int m) {for(int i 1; i < n; i)cin >&g…