定义
计算机系统中的记忆设备,用来存放程序和数据
分类
ROM:只读存储器
RAM:读写存储器和随机存取存储器。分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)
层次化结构
工作原理解释:
层次化结构的存储器也被称为虚拟存储器(并不是单独一个存储器所能够实现)
外存的存储空间很大,但是处理速度很慢,如果要执行程序,采用分时执行程序,首先在操作系统(OS)控制下,将外存中的即将执行一部分程序提取到内存中执行,然后在CPU的控制下,将内存中的一部分程序复制到cache中执行,运算后将结果向下传输。既可以拥有很快的速度,又可以拥有很大的存储空间
层次化结构要满足条件
(1)一致性原则:不同层次之间,值不能不同
(2)包含性原则:上层执行程序是下层存储空间存储的一部分的复制品
操作
相关概念
通俗解释
存储元件:使用一位二进制表示两种不同的状态
存储单元:多个存储元件主城(多个为二进制位)
存储器:有多个存储单元组成的器件
静态随机存储器(SRAM)
存储元是一个触发器,有两个稳定的状态
寄存器
分类:https://www.yebaike.com/22/508816.html
地址寄存器:
作用:用来保存当前CPU所访问内存单元地址
必要性: 在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止
地址译码器:
重点了解:双译码的译码方式(可以说是“方阵“或是“二维”),减少了选择线的条数
动态随机存储器(DARM)
是由MOS晶体管和电容器组成的单晶DRAM记忆电路
存储器容量的扩展
字、字长、字、字位的区别?
https://zhidao.baidu.com/question/809753406143885452.html
扩展方式
存储器的容量通过使用M*N来表示,M被称为字数,N被称为位数
(1)位拓展
存储器的位数不够,因此需要进行位拓展,将已知的低位数存储器并行工作,片选必须连在一起(及同时被选中或不选中),必须保证被同时选中.
通俗理解,就是一次要取出新存储器的所有位数,所以数据总线的条数要增加
注意:数据总线是增加的(并行,同时工作,也可以理解为数据读取时一次读取八位二进制,所以需要八根数据线)
(2)字拓展
存储器的字数(可以理解为单元个数)不够,因此需要进行字拓展,将已知的低字数存储器串行即可以,但是需要让多片给定芯片分时工作。
通俗理解,就是用到的时候就选择,如果用不到就不选择。(片选控制),存储器之间是串型关系。
注意:分时工作的实现是通过地址译码器所决定的片选来实现的。(通俗来讲,片选决定是否使用该存储器,而通过地址译码器决定具体片选通与断)
(3)字位拓展
已知的存储器位数和均达不到要求,所以既需要进行位拓展又需要进行字拓展。
如上图:
芯片内部地址总线:10条
系统地址总线:12条
芯片内部数据总线:4条
系统数据总线:8条
编址范围(十六进制表示):
(1)0000H~03FFH
(2)0400H~07FFH
(3) 0800H~0BFFH
(4)0C00H~0FFFH
只读存储器
分类:
可修只读存储器和不可修只读存储器
不可修只读存储器:ROM掩模存储器(狭义的)(只能被写入一次,不能再被修改)
可以修改只读存储器:EPROM(紫外线擦除)
具体擦除原理可以参考:https://mtoou.info/510.html
介绍
只能读出不能够写入的存储器
特点
信息写入后便不能再被修改,其会被固定在ROM中,即使电源断开,信息也不会改变。
优点
具有不易失性(信息很难丢失)
适用场景
可以用来存放一些不需要修改的程序,如应用程序或操作系统
提出疑问:如果其中的内容可以被修改,为什么不能用“随机存储器”来代替“只读存储器”呢?只读存储器存在的必要性是什么?
解答过程
Flash存储器
说明:其属于电可擦、可在线编程的非易失性只读存储器
分类
NOR型和NAND型
介绍
NOR为线性闪存,拥有独立的数据线和地址线,存储信息的可靠性高,由于其擦除和编程速度较慢,所以不太适合纯数据和文件存储,存储容量较小。
NAND为非线性闪存,数据线、地址线和控制线复用在同一组总线信号上,位成本低、密度高,由于工艺限制,存在较高的比特错误率,不能随机读出,价格低,容量大,可擦除次数远多于NOR
特点
(1)固有的非易失性
(2)廉价的高密度
(3)可直接执行
(4)固态性能
(5)高传输率
Cache高速缓存
(一)基本原理及相关计算
I.目的
为了解决CPU与主存速度不匹配而进行的一种重要技术
II.组成
高速的SRAM和硬件来实现
III.原因
为了平衡这种速度的差异,cache的存取速度比主存快,但是容量却远小于主存。cache 能够高速的向CPU提供指令和数据,加快了程序的执行效率。
IV.命中与不命中
CPU与cache之间的数据交换是以字为单位的,而cache与内存之间的数据交换是以块为单位的(一个块由若干个字组成,是定长的),当CPU读取一个字时,变发送此字的地址(此地址在CPU中生成(由虚拟地址转化为物理地址))发送给cache和主存。此时cache控制逻辑依据地址判断该字是否在cache中,如果在,则就是cache命中,反之就是没命中。
问题引入:CPU在访问内存的过程中是如何生成地址的呢?
参考:https://zhuanlan.zhihu.com/p/36139950
详情参考:
https://www.csdn.net/tags/MtjakgysNzY1NzktYmxvZwO0O0OO0O0O.html
(1)命中率
说明:Nc:cache完成存取的总次数
Nm:主存完成存取的总次数
h:命中率
(2)cache/主存系统平均访问时间
说明:
tc:命中时cache的访问时间
tm:未命中时的主存的访问时间
(1-h):未命中率
(3)访问效率
说明:
r=tm/tc:主存与cache的访问时间之比
e:访问效率
为了提高访问效率,命中率h越接近1越好。
(二)映射算法
I.目的
为了解决从内存中调的程序如何在cache中存放的问题
II.方法如下
说明:主存所分的块的大小与cache所分得行的大小是一样的
(1)全相联映射方式
示意图
将主存分为多个块,然后将“块号”和“块内容”一起传送到cache
中寻找空行,然后放到空行里。(并没有什么规则)
映射方法:主存内容可以拷贝到任意行(多对多:一块对一行)。
地址变换:标记实际上构成了一个目录表。
实例图
优点
冲突概率小,Cache的利用率高
缺点
比较器难实现,需要一个访问速度很快代价很高的相联存储器
适用场合
适用于小容量的Cache
检索过程图
(2)直接映射方式
示意图
将主存中的块多个(Cache的行号数)分为一个区,分为多个区,每个区的第一块均可以映射到Cache中的第一行,以此类推。
实例图
优点
比较电路少m倍线路,硬件实现简单,Cache地址为主存地址的低几位,不需变换。
缺点
冲突概率高(抖动)
适用场合
适合大容量Cache
检索过程图
(3)组相联映射方式
示意图
实例图
说明:不仅将内存分组,而且将Cache分组,不仅避免了冲突,也提高了效率
每个组(主存)的第i块可以映射到第i组(cache)中的v行中(可以自由选择空余的行)
检索过程图
总结
相关试题(1)
图形解析
注意:主存所分的块与cache中的行的空间大小是一样的
相关试题(2)
(二)替换策略
目的
如果高速缓存区的已经存满,但是需要从内存中读取数据,应该如何做的问题
方法如下
(三)写回算法
目的
为了保证cache中的内容和和主存中的内容保持一致,需要通过一定的写回算法来实现。
方法如下
写回法
全写法
写一次法
虚拟存储器
在内存和外存之间的调用和访问中,需要解决三个问题:
(1)从外存中调入的程序应该放在内存的什么位置?(映射问题)
(2)如果内存空间已经满了,应该如何处理?(替换策略)
(3)如果内存中的程序发生了变化,外存中的数据或程序该如何变化?(写回算法策略)
虚存主要解决容量问题
(一)基本概念
实地址
指的是外存所对应的物理地址
虚地址
程序进行从虚地址到实地址的转换过程称为程序的再定位
虚地址访问原理:
说明:辅存(外存)、实存(内存)