计算机组成原理之机器:存储器之主存储器

计算机组成原理之机器:存储器

笔记来源:哈尔滨工业大学计算机组成原理(哈工大刘宏伟)

Chapter3:存储器

3.1 概述

存储器可分哪些类型?



现代存储器的层次结构,为什么要分层?
没有哪一种存储器能同时满足高容量、高速度、低价格,为了同时满足这些需求,使用软件或硬件或软硬件方式将各种存储器“连接”在一起


3.2 主存储器

3.2.1 概述

主存的基本组成

主存与CPU之间的联系
MDR与主存(双向),数据的读和写
MAR与主存(单向),将MAR中地址传送给主存

主存中存储单元地址的分配
一根线有0和1两种状态,n根线共有 2 n 2^n 2n种状态,每种状态对应一个地址,一个地址对应存储空间基本单位1字节(1Byte=8bit)

1字(Word)=8字节(Bytes),1字节=8位(bit)

主存的技术指标

3.2.2 半导体存储芯片简介

半导体存储芯片的基本结构
地址线决定了存储单元个数
数据线决定了每个存储单元中存储位数
片选线(内存条两面都有存储芯片,本次要访问哪个存储芯片要进行选择) C S ‾ \overline{CS} CS(芯片选择)或 C E ‾ \overline{CE} CE(芯片使能) 横线表示低电平有效
读/写控制线
若有一根线 W E ‾ \overline{WE} WE (低电平写,高电平读)
若有两根线 O E ‾ \overline{OE} OE(允许读) W E ‾ \overline{WE} WE(允许写)

存储芯片中片选线的作用

当地址为65535时属于48K~64K-1的地址范围,片选最后一组存储芯片,取出8位数据(一片存1位)即一个字节

半导体存储芯片的译码驱动方式
译码:完成从编码到数据的转换
通过译码驱动方式来选定存储单元和基本电路
线选法(对容量稍大的存储芯片不太合适,因要求集成度要很高)
若输入4个0,则输出中只有字线0是有效的,若现在进行读操作,读写控制电路选通位线,对应数据被读取

重合法
行地址(X地址)、列地址(Y地址)
若行地址为全零,则X0这条线有效,列地址为全零,则Y0这条线有效,X0与Y0交汇处的0,0被I/O读取

3.2.3 随机存取存储器RAM

静态随机存取存储器SRAM

SRAM的工作原理是在存储单元中使用触发器存储数据,通过使一个触发器的输出控制另一个触发器的输入,可以将数据存储在SRAM中。—引自:day35-2 Sram 静态存储器

保存0和1的原理是什么?
双稳态触发器
基本单元电路的构成是什么?

对单元电路如何读出和写入?
SRAM读操作


SRAM写操作


典型芯片的结构是什么样子?
W E ‾ \overline{WE} WE低电平表示进行写操作,高电平表示读操作、 C S ‾ \overline{CS} CS低电平时该芯片被选中
A 0   A 9 A_0~A_9 A0 A9为地址信号,从中我们知道该芯片的存储单元个数为 2 9 = 1 K 2^9=1K 29=1K个, I / O 1   I / O 4 I/O_1~I/O_4 I/O1 I/O4为读写数据端口从中我们知道每个存储单元占4位,综上该芯片存储容量=存储单元个数1K × 每个存储单元所占位数4位

SRAM芯片如何进行读写操作?
行地址6位,经过译码产生0~63共64个行选信号
列地址经过译码后的0号线连接了第一组中第0列和第二组中第0列和第三组中第0列和第四组中第0列

若行地址全零,经过译码后0号线被选中

列地址全零经过译码后0号线被选中,即每一组中第0列被选中

综合行地址与列地址,被选中的数据如下图

若现进行读操作, C S ‾ \overline{CS} CS低电平该芯片被选中, W E ‾ \overline{WE} WE高电平进行读操作


动态随机存取存储器DRAM
保存0和1的原理是什么?
电容若保存了电荷则认为存储信息为1,若无电荷则认为存储信息为0
基本单元电路的构成是什么?
三管DRAM和单管DRAM

对单元电路如何读出和写入?
三管DRAM读操作

预充电信号有效,则T4被打开
Vdd通过T4会对读数据线充电,读数据线变为高电平1
如果进行读操作T2导通,若Cg无电荷,则T1栅极为低电平0不会导通,读数据线保持高电平1,综上如果保存的信息为0,则读出为1
如果进行读操作T2导通,若Cg有电荷,则T1栅极为高电平1导通,读数据线变为低电平,综上如果保存的信息为1,则读出为0
综上在读操作中,读出的信息与电容中存的信息相反,所以需要在读出后加一个非门来保证读出信息与原存信息的一致性

三管DRAM写操作
写选择线有效T3导通,写数据线通过T3向Cg进行充电或放电,如果写入1也就是写数据线高电平,写数据线通过T3向Cg充电,Cg中保存的是1

单管DRAM的读写操作
字线为控制线

若Cs保存的为0,数据线上不会有电流
若Cs保存的为1,数据线上就会有电流
综上,读出时数据线有电流为1,无电流为0 写入时Cs充电为1,放电为0

典型芯片的结构是什么样子?
参加译码的不仅是地址同时还有读写控制信号,如果是读信号,则读选择线有效,如果是写信号,则写选择线有效

DRAM芯片如何进行读写操作?
三管DRAM读操作

若行地址全零且为读操作,第0行读选择线有效,第0行所有单元被选中
若列地址全零且为读操作,第0列被选中
第0行和第0列交叉点单元被选中
被选中单元通过读数据线将数据送入读写控制电路向外输出
三管DRAM写操作
若行地址全1且为写操作,第31行读选择线有效,第31行所有单元被选中
若列地址为1且为写操作,第1列被选中
第31行和第1列交叉点单元被选中
数据通过读写控制电路送入被选中单元
单管DRAM读操作

我们关注一下第63行线和第64行线中的读放大器,若读放大器左侧为0,则右侧为1,反之亦然,这是一个“跷跷板”电路

若行地址1个0,6个1即对应第63根行线
若第0列被选中,则数据经由读放大器到I/O缓冲最终输出
单管DRAM写操作
数据经由I/O缓冲和读写线进入
若行地址1个0,6个1即对应第63根行线,第0列被选中
综上由于读放大器做了反相,所以读写数据与原存信息一致

DRAM为什么要刷新?刷新的方法是什么?
因为电容会漏电所以我们需要刷新放大器来进行刷新信号防止信号消失

要刷新的话是一行一起刷新,刷新只与行地址有关,与列地址无关



SRAM和DRAM的比较

3.2.4 只读存储器ROM

按ROM原始定义,一旦注入原始信息即不能改变,但随着用户的需要,总希望能任意修改ROM内的原始信息。便出现了PROM、EPROM、EEPROM
ROM一般用于保存系统程序或系统配置信息
掩膜只读存储器MROM
行列选择线交叉处若有MOS管则为1
行列选择线交叉处若无MOS管则为0

可编程只读存储器PROM

可编程可擦除只读存储器EPROM

电可擦除可编程只读存储器EEPROM
电可擦写、局部擦写、全部擦写

闪速型存储器(Flash Memory)

3.2.5 存储器与CPU的连接

由于单片存储芯片的容量有限,很难满足实际需要,因此必须将若干存储芯片连在一起才能组成足够容量的存储器,称为存储容量的扩展
存储器容量扩展
(1)位扩展(增加存储字长)
第一个芯片接后4根数据线,第二个芯片接前4根数据线,4位扩展为8位

(2)字扩展(增加存储器字的数量)
1K扩展为2K
两片不能同时工作,因为两片的第一根线均与D7相连等等,两片输出都接到了相同的数据线上,若同时工作会造成数据混乱。因为有11根地址线,A0~A9作为地址线,A10作为片选

(3)位和字同时扩展

存储器与CPU的连接
(1)地址线的连接

第一步:先将十六进制地址范围写出二进制地址码,并确定其总容量
第二步:根据地址范围的容量以及该范围在计算机中的作用,选择存储芯片
6000H~67FFH为系统程序区的地址范围,应选择1片 2K×8位 的ROM(信息不可更改)
6800H~6BFFH为用户程序区的地址范围,应选择2片 1K×4位 的RAM

第三步:分配CPU的地址线
CPU低11位地址 A 10   A 0 A_{10}~A_0 A10 A0与2K×8位的ROM地址线相连

CPU低10位地址 A 9   A 0 A_{9}~A_0 A9 A0与2K×8位的ROM地址线相连

剩下的高位地址 A 14   A 11 A_{14}~A_{11} A14 A11与CPU的访存控制信号 M R E Q ‾ \overline{MREQ} MREQ共同产生存储芯片的片选信号

(2)数据线的连接
ROM连接数据线中数据流向是单向的

RAM连接数据线中数据流向是双向的

(3)读/写命令线的连接

(4)片选线的连接

A15~A10只有为011010时才能片选第二组,A10一定为0,要与片选译码器输出端Y5结合共同形成片选第二组的一个信号

3.2.6 存储器的校验

为什么要对存储器的信息进行校验?
若内存所处电磁环境复杂,空间环境下受到带电粒子打击可能造成电容的充电放电或触发器的翻转,存放在其中的信息会出错
为了能够校验出信息是否正确,如何进行编码?

第一行合法代码集合用3倍冗余方式表示计算机中存储的一位数字,也就是说三位编码000表示计算机中存储的0
第一行合法代码集合中,如果其中一个合法代码的某一位翻转了,则它又变成了另一个合法代码,故无法检测出它发生了错误。
第二行合法代码集合中,如果其中一个合法代码的某一位翻转了,则它没有变成任何另外一个合法代码,故可以检测出1位错误,如果其中一个合法代码的某两位翻转了,则它又变成了另一个合法代码,故无法检测出它发生了错误,综上该编码仅有1位检错能力和0位纠错能力
第三行合法代码集合中,三位编码000表示计算机中存储的0,111表示计算机中存储的1,假设现在收到编码100(显然不在合法代码集合中),而正确编码只能是000或者111,现在出现100,我们猜大概率是1位错且是第1位错了,我们把100纠正为000。假设现在收到编码110(显然不在合法代码集合中),而正确编码只能是000或者111,现在出现110,我们猜大概率是1位错且是第3位错了,我们把110纠正为111。
第四行合法代码集合中,假设现在收到编码1100(显然不在合法代码集合中),而正确编码只能是0000或者1111,现在出现1100,到底是前两位1发生错误了还是后两位0发生错误了,我们不得而知。假设现在收到编码1000(显然不在合法代码集合中),而正确编码只能是0000或者1111,现在出现1000,大概率是第1位发生错误了,我们将1000纠正为0000

纠错或检错能力与什么因素有关?
第一行合法代码集合中,只要其中一个合法代码改变1位就会变成另一个合法代码,无法检测错误代码
第二行合法代码集合中,要想把一个合法代码改变为另一个合法代码,至少需要改变2位。若在存储过程中代码发生1位改变我们就能检测出来
第三行合法代码集合中,要想把一个合法代码改变为另一个合法代码,至少需要改变3位。若在存储过程中代码发生1位改变我们就能检测出来,并知道哪一位错了。{000,111} 假设收到110,大概率1位发生错误,对比正确代码,我们知道第3位错了
第四行合法代码集合中,要想把一个合法代码改变为另一个合法代码,至少需要改变4位。若在存储过程中代码发生2位改变我们就能检测出来,并知道哪一位错了。

任意两组合法代码之间二进制位的最少差异数

例如第一行合法代码集合,任意两组代码如000,001之间是差1位,则无检错纠错能力。
第二行合法代码集合,任意两组代码如000,011之间是不同位数是2位,则检错1位,纠错0位。
第三行合法代码集合,任意两组代码如000,111之间是不同位数是3位,则检错1位,纠错1位,一共2位(与3差1)
第四行合法代码集合,任意两组代码如0000,1111之间是不同位数是4位,则检错2位,纠错1位,一共3位(与4差1)
第五行合法代码集合,任意两组代码如00000,11111之间是不同位数是5位,则检错2位,纠错2位,一共4位(与5差1)

检验处信息出错后如何进行纠错?
相关文章:汉明码(Hamming Code)底层原理

3.2.7 提高访存速度的措施

随着计算机应用领域的不断扩大,处理的信息量越来越多,对存储器的工作速度和容量要求越来越高。因CPU功能不断增强,I/O设备数量不断增多,致使主存的存取速度已成为计算机系统的瓶颈。可见,提高访存速度成为迫不及待的任务。为解决此问题,除了采寻找高速元件和采用层次结构cache-主存以外,调整主存结构也可提高访存速度。—引自《计算机组成原理》唐朔飞

单体多字系统
在一个存取周期内,从同一个地址取出4条指令,然后再逐条将指令送至CPU执行,前提是指令和数据在主存内必须是连续存放的,一旦遇到转移指令或操作数不能连续存放,这种方法效果就不明显

多体并行系统(多个独立存储模块并行)
(1)高位交叉 顺序编址
前两位地址是对存储体进行编号,00对应第1个存储体,01对应第2个存储体,10对应第3个存储体,11对应第4个存储体。其余位数的地址对存储体内进行编址。

若某程序的数据连续存放,则首先会存入第一个存储体,可能其他存储体均未存入数据,这就造成第一个存储体忙碌,而其他存储体空闲,无法实现并行工作

(2)低位交叉 各个存储体轮流编址
以流水方式访问每个存储体


高性能存储芯片
SDRAM(同步动态随机存取内存)在系统时钟的控制下进行读出和写入,CPU无需等待

RDRAM(Rambus公司开发的DRAM)主要解决存储器带宽问题

CDRAM(Cache DRAM)
在DRAM芯片内集成了一个由SRAM组成的cache,利于猝发式读取

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

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

相关文章

强化学习工具箱(Matlab)

1、Get Started 1.1、MDP环境下训练强化学习智能体 MDP环境如下图 每个圆圈代表一个状态每个状态都有上或下的选择智能体从状态 1 开始智能体接收的奖励值为图中状态转移的值训练目标是最大化累计奖励 (1)创建 MDP 环境 创建一个具有 8 个状态和 2 …

MVO-CNN-BiLSTM多输入分类预测|多元宇宙优化算法-卷积-双向长短期神经网络分类预测(Matlab)

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、算法介绍: 四、完整程序下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matlab平台编译&am…

js【详解】原型 vs 原型链

原型 每个 class 都有显示原型 prototype每个实例都有隐式原型_proto_实例的_proto_指向对应 class 的 prototype 如下范例: class Student 创建了 实例 xialuo 获取属性 xialuo.name 或执行方法 xialuo.sayhi()时,先在自身属性和方法寻找&#xff0…

进程之舞:操作系统中的启动、状态转换与唤醒艺术

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

【MOMO_Tips】批量将word转换为PDF格式

批量将word转换为PDF格式 1.打开文件–>选项–>自定义功能区–>开发工具–>确定 2.点开开发工具,选择第一个visual basic 3.进入页面后找到插入–>模块,就可以看到这样的画面之后将下列vba代码复制粘贴到模块中 Sub ConvertWordsToPd…

【Redis】Redis的应用场景

📝个人主页:五敷有你 🔥系列专栏:Redis ⛺️稳中求进,晒太阳 Redis的应用场景: 限流 要求10s内只能访问一次 RequestMapping("xian")public String xianLiu(String sign){String sign1 …

LVGL在VScode中安装模拟器运行配置笔记教程

1、LVGL模拟器工程搭建 LVGL(Light and Versatile Graphics Library,轻巧而多功能的图形库)是一个免费的开放源代码图形库,它提供创建具有易于使用的图形元素,精美的视觉效果和低内存占用的嵌入式GUI所需的一切。本文主要讲述如何实现在VScode中实现LVGL模拟器环境的搭建运行。…

Android Framework 通过脚本动态修改应用私有文件执行权限

你只活一次 要悦己 脚本配置 Android_source/device/sprd/***/test/test_chmod.rc service test_chmod /vendor/bin/test_chmod.shuser rootdisabledoneshoton property:sys.test_chmodtruestart test_chmodAndroid_source/device/sprd/***/test/test_chmod.sh #!/system/bin/…

【排序算法】深入理解快速排序算法:从原理到实现

目录 1. 引言 2. 快速排序算法原理 3. 快速排序的时间复杂度分析 4. 快速排序的应用场景 5. 快速排序的优缺点分析 5.1 优点: 5.2 缺点: 6. Java、JavaScript 和 Python 实现快速排序算法 6.1 Java 实现: 6.2 JavaScript 实现&#…

【随笔】程序员如何选择职业赛道,目前各个赛道的现状如何,那个赛道前景巨大

大家好,我是全栈小5,欢迎阅读文章! 此篇是【话题达人】系列文章,这一次的话题是《程序员如何选择职业赛道》 目录 背景热度柱状图赛道热度C/C云原生人工智能前沿技术软件工程后端JavaJavascriptPHPPython区块链大数据移动开发嵌入…

LeetCode100 刷题记录

文章目录 矩阵相关1. 旋转矩阵2. 搜索二维矩阵 矩阵相关 1. 旋转矩阵 题目描述: 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵…

JavaWeb-MyBatis(上)

学完项目管理工具Maven后,继续学习MyBatis。我们都知道,JDBC是一个与数据库连接相关的API,最开始学习数据库连接都是从JDBC开始学起,但是其也有缺点,比如硬编码和操作繁琐等等。而今天学习的MyBatis就是专门为简化JDBC…

自定义协议清理后,浏览器还一直弹出匹配提示用户新应用打开问题

问题 这段时间出现了自定义协议清理异常的问题。在一台电脑上,用chrome,一直出现问题,自定义协议可能存在了缓存或者其他内容。导致一直重复的弹出ms-store打开新应用的奇怪问题。 后来 第一步: 清理注册表,把注册…

创新驱动!HubSpot引领CRM革命

在当今高速发展的数字化时代,企业的国际化布局和市场开拓已经成为了一种必然的趋势。随着企业出海步伐的加快,有效的客户关系管理(CRM)和营销自动化工具变得尤为重要。这就是HubSpot发力的领域。HubSpot,作为一家领先的…

容器+虚拟机双引擎,ZStack Edge云原生超融合打通业务最后一公里

企业数字化转型的焦点正在发生变化,云基础设施由资源到应用,数据中心从核心到边缘。面向云原生趋势,围绕应用升级,新一代超融合产品——云原生超融合应运而生。 云原生与边缘计算趋势催生云原生超融合 当前,企业客户…

Buran勒索病毒通过Microsoft Excel Web查询文件进行传播

Buran勒索病毒首次出现在2019年5月,是一款新型的基于RaaS模式进行传播的新型勒索病毒,在一个著名的俄罗斯论坛中进行销售,与其他基于RaaS勒索病毒(如GandCrab)获得30%-40%的收入不同,Buran勒索病毒的作者仅占感染产生的25%的收入,…

HTML静态网页成品作业(HTML+CSS)——原神介绍设计制作(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有4个页面。 二、作品演示 三、代…

CrySiS勒索病毒最新变种来袭,加密后缀为kharma

CrySiS勒索病毒,又称Dharma,首次出现是在2016年,2017年5月此勒索病毒万能密钥被公布之后,之前的样本可以解密,导致此勒索病毒曾消失了一段时间,不过随后又马上出现了它的一款最新的变种样本,加密…

H12-821_145

145. OPSF邻接关系建立的过程中需要使用不同的报文,那么请分别将以下各个状态和该状态使用的报文联系起来。 答案: 注释: ExStart状态通过DD报文进行主从选举。 2-way状态通过hello报文知道哪些邻居看到了自己。 Loading状态通过LSR/LSU报文同…

视觉和GPT再碰火花!CVPR`24 | RegionGPT:面向复杂区域理解的VLM(港大英伟达)

文章链接:https://arxiv.org/pdf/2403.02330 视觉语言模型(VLMs)通过将大语言模型(LLMs)与图像文本对集成,经历了快速的发展,但由于视觉编码器的空间意识有限以及使用缺乏详细的区域特定字幕的…