计算机组成原理第4章-(存储器)【上】

存储器分类

对于计算机中存储器的分类,方法有很多,不同的方法之间是独立的,为此我们简单讲述两种分类

方法:“存取方式分类”、“在计算机中作用分类”。

-->按存取方式分类

按存取方式分类可以将存储器分为:“随机存储器”、“只读存储器”、“顺序存取存储器”、“直接存取

存储器”。

随机存储器(RAM)【Random Access Memory】

RAM是一种可读/可写的存储器,其特点是任何一个存储单元中的内容都可以随机存取,并且

存取时间与物理位置无关。

计算机系统中的主存都采用这种随机存储器

只读存储器(ROM)【Read Only Memory】

ROM是一种可读的存储器,这意味着,ROM只能读取数据,不能存取数据。

因此ROM常被用于【操作系统的固化、系统程序的使用

-->按在计算机中作用分类

在这种方式下,存储器主要分为:“主存储器”、“辅助存储器”、“缓冲存储器”。

主存储器

主存储器简称:“主存”【运存】,它的主要特点是可以直接和CPU交换信息,速度快。

辅助存储器

辅助存储器简称:“辅存”【外存】,它是主存储器的后援存储器,用来存放暂时不被CPU和程序使

用到的数据。

特点是:容量大,速度慢,不能与CPU直接交换信息。

缓冲存储器【Cache】

缓冲存储器是连接主存和CPU之间的桥梁,尽管主存的速度已经非常快了,但是对于CPU来说还

是很慢,为此人们开发出了缓冲存储器【Cache】,用来提高主存利用率。

存储器的层次结构

存储器有性能指标特性】:“速度”、“容量”、“位价”【单位容量价格

我们先看一张图片:

在这个金字塔中,反映出了各类存储器的优缺点。

例如,对于容量大小:“磁带->磁盘->主存->缓存->寄存器(CPU)”。

对于运算速度:“寄存器(CPU)->缓存->主存->磁盘->磁带”。

对于单位容量价格:“寄存器(CPU)->缓存->主存->磁盘->磁带”。

Ps:在现代计算机中,寄存器和缓存全部被封装在CPU中。

实际上,对于存储器的层次主要体现在两个层次上:“缓存-主存”、“主存-辅存”两个层次上。

对于引入“缓存-主存”层次和“主存-缓存”层次的目的

缓存-主存”层次解决了CPU和主存速度不匹配的问题。

主存-辅存”层次解决了存储系统的容量问题。

因此,现在计算机系统全部都具有这两个存储层次,构成了:缓存、主存、辅存三级层次。

主存储器

概述

我们下面先了解一下传统CPU:读/写数据的简单流程。

首先,CPU根据MAR中的地址访问某个存储单元时,还需要经过:“地址译码”、“驱动”等电路,才

能找到所需单元。

而读出数据时,需要先经过放大器,才能将被选中单元的存储数据送入MDR。

如下图所示:

但是在现代计算机系统中,MAR、MDR都被制作在CPU中,而译码器、驱动器、读/写电路都被制

作在主存中。

为此,我们可以得到一个现代计算机操作流程

当要从存储器中出一个数据时,先有CPU将存放数据的存储器的地址送入MAR中,再经地址总

线送至主存,然后发出读命令,内存接收到命令后,将对应存储单元中的数据送入MDR。

当要向存储器中入一个数据时,先有CPU将要写入的存储单元的地址送入MAR中,再经地址总

线送至内存,然后发出写命令,同时将要写入的数据送入MDR,内存接收到命令后,将MDR中的

数据写入对应的存储单元中。

主存中存储单元地址的分配【重点

对于存储单元地址的分配,不同的CPU有不同的方式,我们主要说两种方式:“大端存放”、“小端存

”。

在开始学习之前,我们有必要了解一下基本知识。

在计算机中,8位(bit)等于1字节(B)

1字等于N字节,其中N∈Z(整数集合)

大端存放

常见的32位字长的机器如不特别说明,都可以视为是大端存放方式。

例如IBM 370机的字长为32位,那么它的寻址方式可以是按“1”字寻址,也可以是按“4”字节寻址。

例如,对于一个数据(12345678)H,这一个16进制数据来说,它的最高位是【1】,最低位是

【8】。那么存放到存储单元中是下图这个样子:

其中,红字为字地址绿字为字节地址蓝字为存放的数据

概括为:“高地址的内存单元存放低位数据,低地址的内存单元存放高位数据”。【顺序写入

小端存放

常见的16位机器如不特别说明,都可视为是“小端存放”方式。

例如POP-11机器,它的字长是16位,那么它可以按“1”字寻址,也可以按“2”字节寻址。

例如,对于一个数据(12345678)H,这一个16进制数据来说:

概括为:“低位数据存放到低字节地址中,高位数据存放到高字节地址中。”【逆序写入

对于大端存放也好,小端存放也好,字地址始终是字节数的整数倍

例题:

问:已知有一块24位地址线的主存,对于字长为32位的机器来说,它按字节寻址、字寻址的范围

是多少?对于字长为16位的机器来说,它按字节寻址、字寻址的范围是多少?

答:

24位地址线说明有2^{24}个存储单元,那么就有2^{24}个地址号,所以对于32位机器也好,16位机器也

好,它们按字节寻址范围都是2^{24},也就是16M。

但是对于按字寻址就不同了。

32位机器的按字寻址范围是:16M / 4(字节数) = 4M【在32位机器中,一字等于四字节

16位机器的按字节寻址范围是: 16M / 2(字节数) = 8M【在16位机器中,一字等于二字节

主存的技术指标

主存的技术指标主要有三点:“存储容量”、“存储速度”、“主存带宽

存储容量

存储容量是指主存能存放的二进制代码总位数

存储容量 = 存储单元个数 * 存储字长

也可以用存储的字节总数来表示:

存储容量 = 存储单元个数 * 存储字长/8

存储速度

存储速度是由存取时间和存取周期表示。

存取时间可以是:“读取时间”、“写入时间”。

存取周期是:“存储器进行连续两次的存储器操作所需的最小时间间隔”。

主存带宽

主存带宽是存储器每秒可以读取/写入的位数。

用字/秒或字节/秒表示。

如存取周期是500ns,每个存取周期可以访问16位,那么它的带宽就是32M位每秒。

500ns =5 *  10^{-7}s

则16 / 5 *  10^{-7}= 32M

为此我们可以得到公式:

主存带宽 = 每个存取周期访问的位数 / 存取周期

因此我们想提高存储器带宽可以:

1.缩短存取周期

2.增加可以访问的位数

随机存储器分类

随机存储器RAM可以分为:“静态RAM”、“动态RAM”两大类。

静态RAM(Static RAM)【SRAM】

SRAM通过触发器来存储信息,因此即使信息读出后,它扔保持原先的状态,不需要再生

但是当电源掉电时,原存信息丢失,故属于易失性半导体存储器

动态RAM(Dynamic RAM)【DRAM】

DRAM通过电容来存储信息,当电容中的电荷足够多的时候,表示“1”,反之,表示“0”。

电容上的电荷只存在1~2ms,因此即使电源不掉电,信息也会自动丢失,因此我们需要每隔一段

时间对DRAM“充一次电”,这个过程也叫作“刷新”或者“再生”。

DRAM刷新

DRAM刷新的实质是:“将原存信息读出,再用刷新放大器形成原信息并重新写入的过程”。

DRAM刷新的三种方式

1.集中刷新

2.分散刷新

3.异步刷新

课后题

1.若存储器的数据总线宽度为32位,存取周期为200ns,则存储器的带宽是多少?

200ns = 2 * 10^{-7}s

带宽 = 32 / 200ns = 160M位(这里的M指的是百万Millions)

2.某机字长为32位,其存储容量是64KB,按字编址其寻址范围是多少?若主存以字节编址,请画

出其按字寻址和按字节寻址的示意图。

存储容量64KB,那么存储单元就有64KB个,因此按字节寻址就有64KB。

而1字等于4字节,因此按字寻址范围是:64 / 4 = 16KB。

3.SRAM和DRAM的区别是什么?

SRAM是用触发器来存储信息,不需要刷新。

DRAM是用电容来存储信息,需要刷新。

4.DRAM为什么要刷新?怎么刷新的?刷新方式有哪三种?

DRAM是用电容来存储信息,里面的电荷只存在1~2ns,为此需要隔一段时间来刷新,让电荷重新

存放在DRAM中。

DRAM刷新的过程是:“先将原数据读出,再由刷新放大器重新形成原数据后放入DRAM中。”

刷新方式有:“集中刷新”、“分散刷新”、“异步刷新”三种。

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是洋洋a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值