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

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

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

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,利于猝发式读取

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【自然语言处理】NLP入门(五):1、正则表达式与Python中的实现(5):字符串常用方法:对齐方式、大小写转换详解

文章目录 一、前言二、正则表达式与Python中的实现1.字符串构造2. 字符串截取3. 字符串格式化输出4.字符转义符5. 字符串常用函数函数与方法之比较 6. 字符串常用方法1. 对齐方式center()ljust()rjust() 2. 大小写转换lower()upper()capitalize()title()swapcase() 一、前言 本…

不买后悔!腾讯云99元一年服务器链接,折合8元1个月

腾讯云服务器99元一年是真的吗?真的,99元优惠购买入口 txybk.com/go/99 折合每天8元1个月,腾讯云99元服务器配置为2核2G3M带宽,2024年99元服务器配置最新报价为61元一年,如下图: 腾讯云服务器99元一年 腾讯…

【新书推荐】16.4 软中断处理程序举例

本节内容:打印I/O源程序和时钟显示程序。 ■打印I/O源程序:t16-6.asm。 ■时钟显示程序:t16-7.asm。 16.4.1 打印I/O源程序 我们以打印I/O程序的源程序,作为BIOS中断处理程序设计的例子。每个打印机有三个寄存器:数据…

TCP传输收发

TCP通信: TCP发端: socket connect send recv close TCP收端: socket bind listen accept send recv close 1.connect int connect(int sockfd, const struct sockaddr *addr, socklen_t ad…

selenium也能过某数、5s盾..

文章转载于:selenium也能过某数、5s盾… 直接安装: pip install undetected_chromedriver运行代码: import undetected_chromedriver as uc import timedriver uc.Chrome(executable_pathrC:\Users\chromedriver.exe,version_main111) driver.get(网…

VMware Workstation安装Linux虚拟机与虚拟机克隆

虚拟机 一、安装虚拟机二、克隆虚拟机三、配置静态IP地址一、安装虚拟机 设置虚拟机名称与安装位置 设置磁盘大小 配置硬件参数

Ubuntu环境使用docker构建并运行SpringBoot镜像

今天Ubuntu环境使用docker构建并运行SpringBoot镜像,看文章之前建议先查看安装流程: Linux环境之Ubuntu安装Docker流程 一、镜像打包过程及执行 1、创建一个测试目录 mkdir javaDemo 2、springBoot的包复制到此目录下 cp demo1-0.0.1-SNAPSHOT.jar /data/app/…

代码之旅:我的算法探索之路(二)力扣 最接近的三数之和

目录 LeetCode 第16题 最接近的三数之和 题目 解题思路 代码 结果 LeetCode 第18题 四数之和 题目 解题思路 代码 结果 LeetCode 第16题 最接近的三数之和 题目 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使…

mysql如何开启远程访问?

MySQL是一种常见的关系型数据库管理系统,广泛应用于各行各业。默认情况下,MySQL仅允许本地访问,即只能在本地主机上进行数据库操作。有时候我们需要通过远程连接访问MySQL数据库,以便实现更灵活的管理和操作。本文将介绍如何在MyS…

vue3+elementPlus:el-table-column表格列动态设置单元格颜色

:cell-style属性 //html<el-tableempty-text"暂无数据":data"datalist.table":max-height"height"row-key"id"border:cell-style"cellStyle"> <el-table>//js //动态设置单元格颜色 const cellStyle ({ row, c…

如何将当前目录的github.com替换为镜像源(kkgithub.com)

find . -type f -exec sed -i ‘s/github.com/kkgithub.com/g’ {} 这个命令会执行以下操作&#xff1a;find .: 在当前目录及其所有子目录中递归搜索文件。 -type f: 指定只搜索普通文件&#xff08;regular files&#xff09;&#xff0c;排除目录等其他类型的文件。 -exec…

【C++干货基地】六大默认成员函数: This指针 | 构造函数 | 析构函数

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…