对于计算机中存储器的分类,方法有很多,不同的方法之间是独立的,为此我们简单讲述两种分类
方法:“存取方式分类”、“在计算机中作用分类”。
按存取方式分类可以将存储器分为:“随机存储器”、“只读存储器”、“顺序存取存储器”、“直接存取
存储器”。
RAM是一种【可读/可写】的存储器,其特点是任何一个存储单元中的内容都可以随机存取,并且
存取时间与物理位置无关。
计算机系统中的主存都采用这种随机存储器
ROM是一种【可读】的存储器,这意味着,ROM只能读取数据,不能存取数据。
因此ROM常被用于【操作系统的固化、系统程序的使用】
在这种方式下,存储器主要分为:“主存储器”、“辅助存储器”、“缓冲存储器”。
主存储器简称:“主存”【运存】,它的主要特点是可以直接和CPU交换信息,速度快。
辅助存储器简称:“辅存”【外存】,它是主存储器的后援存储器,用来存放暂时不被CPU和程序使
用到的数据。
特点是:容量大,速度慢,不能与CPU直接交换信息。
缓冲存储器是连接主存和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位地址线说明有个存储单元,那么就有个地址号,所以对于32位机器也好,16位机器也
好,它们按字节寻址范围都是,也就是16M。
但是对于按字寻址就不同了。
32位机器的按字寻址范围是:16M / 4(字节数)?= 4M【在32位机器中,一字等于四字节】
16位机器的按字节寻址范围是: 16M / 2(字节数) = 8M【在16位机器中,一字等于二字节】
主存的技术指标主要有三点:“存储容量”、“存储速度”、“主存带宽”
存储容量是指主存能存放的二进制代码总位数。
存储容量 =?存储单元个数 *?存储字长
也可以用存储的字节总数来表示:
存储容量 =?存储单元个数 *?存储字长/8
存储速度是由存取时间和存取周期表示。
存取时间可以是:“读取时间”、“写入时间”。
存取周期是:“存储器进行连续两次的存储器操作所需的最小时间间隔”。
主存带宽是存储器每秒可以读取/写入的位数。
用字/秒或字节/秒表示。
如存取周期是500ns,每个存取周期可以访问16位,那么它的带宽就是32M位每秒。
500ns =5 *??s
则16 / 5 * ?= 32M
为此我们可以得到公式:
主存带宽 =?每个存取周期访问的位数?/ 存取周期
因此我们想提高存储器带宽可以:
1.缩短存取周期
2.增加可以访问的位数
随机存储器RAM可以分为:“静态RAM”、“动态RAM”两大类。
SRAM通过触发器来存储信息,因此即使信息读出后,它扔保持原先的状态,不需要再生。
但是当电源掉电时,原存信息丢失,故属于易失性半导体存储器。
DRAM通过电容来存储信息,当电容中的电荷足够多的时候,表示“1”,反之,表示“0”。
电容上的电荷只存在1~2ms,因此即使电源不掉电,信息也会自动丢失,因此我们需要每隔一段
时间对DRAM“充一次电”,这个过程也叫作“刷新”或者“再生”。
DRAM刷新的实质是:“先将原存信息读出,再用刷新放大器形成原信息并重新写入的过程”。
DRAM刷新的三种方式:
1.集中刷新
2.分散刷新
3.异步刷新
1.若存储器的数据总线宽度为32位,存取周期为200ns,则存储器的带宽是多少?
200ns = 2 *?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中。”
刷新方式有:“集中刷新”、“分散刷新”、“异步刷新”三种。