计算机组成原理第三章—存储系统

存储器是计算机系统五大部件之一。

一、存储系统层次结构

哈弗结构:数据和指令分别存放

程序局部性原理:

时间局部性:最近被访问的信息很可能还要被访问
(一个被访问的存储单元很可能再次被访问,循环程序结构具有时间局部性)
空间局部性:最近被访问的信息邻近地址的信息也可能被访问
(顺序程序结构具有空间局部性)

存储器层次:

在这里插入图片描述

存储器价格相对较高,必须使用某种策略解决成本和性能之间矛盾。
即利用不同存储器著称多级存储系统
在这里插入图片描述
内存:正在执行程序的指令和数据存储在其中,CPU能直接访问。速度快,容量小,价格高

外存:为了扩大存储容量,在内存外增加容量更大但速度稍慢的外存。速度低,容量大,价格低

cache(高速缓冲存储器):在内存与CPU之间增加速度更高的高速缓冲存储器,用于提升访问速度,以便存取速度和CPU运算速度匹配

主存与内存:主存包括RAM与ROM,而内存包括主存与cache
在这里插入图片描述

注意:CPU不能直接访问外存储器,外存储器信息必须调入内存后才能由CPU处理


二、存储器分类

主存被分为:RAM,ROM两大类
RAM(随机存取存储器):存储当前运行的程序和数据,并可在程序运行过程中反复更改内容
同时RAM可根据信息储存方法分为SRAM,DRAM

ROM(只读存储器):存储不变的程序或数据
在这里插入图片描述


三、存储器的编址和端模式

存放一个机器的存储单元,成为字存储单元。相应单元地址成为字地址
存放一个机器字节的存储单元,成为字存储单元。相应单元地址成为字地址
当一个存储字的字长高于8位,就存在排列顺序问题

大端:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。即数据从左往右存储。
小端:是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。即数据从右往左存储。

举个例子
0x12345678按大端模式存放时,其所在存储单元最低字节单元存放的数据是0x12最高字节单元存放的数据是78
0x12345678按小端模式存放时,其所在存储单元最低字节单元存放的数据是0x78最高字节单元存放的数据是12
在这里插入图片描述


四、SRAM

基本静态存储元阵列

存储元:能够表示一位二进制的“0”,“1”两种状态,具有记忆功能的物理器件。
存储单元:若干存储元构成的存储单元

SRAM:用锁存器作为存储元,只要直流供电电源一直加在这个记忆电路上,它就无限期地保持记忆的1状态或0状态。如果电源断点,则存储的数据(1或0)就会丢失
存储方式双稳态触发器非破坏性读出,不需要重写操作,读写速度更快
在这里插入图片描述

图为基本的静态存储元阵列
在这里插入图片描述
任何一个SRAM,都有三组信号线与外部打交道:
地址线:指定存储器容量,地址线有 n 条,指定存储器的容量是 2 n 2^{n} 2n 个存储单元
数据线:指定存储器字长,数据线有 n 条,则存储器字长是 n 位
控制线:指定存储器读写操作,读写操作不能同时发生

基本SRAM逻辑结构

目前SRAM芯片采用双译码形式,将地址分为x向,y向两部分,以便组织更大的存储容量。
在这里插入图片描述

在这里插入图片描述
图为32K×8位的SRAM逻辑结构图。
因为存储容量是32K,所以需要 2 10 ∗ 2 5 2^{10}*2^{5} 2102515条地址线

地址线一共有15条,其中x方向8条,经行译码输出 2 8 = 256 2^{8}=256 28=256行,y方向7条,经列译码输出 2 7 = 128 2^{7}=128 27=128列。
双向数据线有8条,所以字长为8位
存储阵列为三维结构,即256行×128列×8位


五、存储器容量的扩充

当单个存储器的芯片容量不能满足系统要求,需要把多片存储器芯片组合起来成为更大容量的存储器
所需芯片数 d=设计要求的存储器容量/已知芯片存储容量

位扩展

位扩展:是指增加存储字长,类似于并
在这里插入图片描述

字扩展

字扩展:这种方式仅仅增加了存储单元数,各单元位数不变。类似于串联
在这里插入图片描述

字位扩展

字位扩展:即加长存储单元的数量又增加各单元的位数,字位同时扩展的时候,进行位扩展,进行字扩展。

在这里插入图片描述
在这里插入图片描述

计算芯片地址空间

在这里插入图片描述
上图所示,地址空间的编码是根据地址线的个数确定的,地址线有n条,二进制位有n位,对于16K×8的芯片,编码地址从A0-A13,扩展后,地址线有17条,故编码地址扩展3位,从A14-A16,而地址编码以16进制形式存储,每四个二进制位表示一个地址,不足四位的,高位补0


六、DRAM

DRAM:动态随机存取存储器简化了每个存储元的结构,使用栅极电容存储信息,存储密度高,电路复杂,通常用作计算机主存储器。
存储方式:如果存储二进制“1”,电容上方会存储电荷,而读出“1”时,电容需要释放掉,栅极电容信息是被破坏的。所以读出后需要进行重写操作
刷新:电容存储的电荷过一段时间会消失,导致存储的二进制信息会存在误差,电荷只能维持2ms,所以2ms内必须要刷新一次。每次刷新一行存储单元
如何刷新:硬件支持,读出一行的信息重新写入,占用一个读/写周期
刷新方式
在这里插入图片描述
地址线复用技术:地址线数量减半,芯片引脚更少
在这里插入图片描述
例子:现有1M×4位的DRAM芯片,存储容量为1M字,共需要20位地址线。DRAM运用了地址复用技术,此芯片地址引脚数量为10位,先传送行地址码A0-A9,然后传送列地址码A10-A19


七、对比

在这里插入图片描述


八、多模块交叉存储器

基本思想是在不提高存储器速率,不扩展数据位数前提下,通过存储芯片的交叉组织,提高CPU单位时间内访问的数据量,解决快速CPU与慢速主存之间的速度差异

高位多体交叉存储器

在这里插入图片描述
数据组织特点:相邻地址的数据处于统一存储体,多模块串行,性能无提升

低位多体交叉存储器

在这里插入图片描述
数据组织特点:相邻地址处于不同存储体,多模块并行,性能提升,需要地址寄存器

性能分析

在这里插入图片描述
m的最小值 m m i n = T / t m_{min}=T/t mmin=T/t称为交叉存取度,其模块数必须大于或等于 m m i n m_{min} mmin,以保证启动模块后经过mt时间再次启动该模块时,上次存取操作已经完成。
在这里插入图片描述


九、cache存储器

在这里插入图片描述
cache功能:缓解快速CPU与慢速主存的速度差异
理论基础:局部性原理

CPU与cache之间的数据交换是以为单位
cache与主存之间的数据交换是以为单位

工作原理:CPU读取内存中一个字时,便发出此字的内存地址到cache和主存,此时cache判断此字是否在cache中,若是,则cache命中,立即送给CPU,否则cache缺失

cache命中率:设 N c N_{c} Nc表示cache完成的存取总次数, N m N_{m} Nm表示主存完成存取的总次数, h h h定义命中率
在这里插入图片描述
在这里插入图片描述
访问效率 e = t c / t a e=t_{c}/t_{a} e=tc/ta
例子

CPU执行一段程序,cache完成存取次数为1900次,主存完成存取次数为100次,已知cache存取周期为50ns,主存存取周期为250ns,求(cache/主存系统)的效率和平均访问时间。

在这里插入图片描述

cache的结构与工作所需部件

在这里插入图片描述
Cache每行包括四部分
Tag:从CPU访问主存的地址中剥离得到
Data:是与主存交换的数据块
Valid:表示Cache中数据有效
Dirty:表示主存中数据是最新
在这里插入图片描述
属于协助Cache工作所需的部件或功能是:
相联存储器调度替换算法脏位和有效位比较电路标记比较电路

相联存储器

在这里插入图片描述
作用
为了实现快速的查找,就需要用到相联存储器。

解决的问题
CPU是根据数据在主存的中的地址来访问主存的,如果用主存的全部地址来查找,那和直接访问主存查找没什么区别,没提高速度,所以只采用一部分地址(即主存地址的部分内容作为查找依据)。

工作原理
从地址中剥离出Key
Key为关键字全局硬件并发比较
存储体存放有效位,标记,数据等信息
符合寄存器存放Cache命中行信息
根据符合寄存器的信息取出命令行数据

注意
相联存储器是一种按内容访问的存储器,内容是指从主存中分离出的标记(Tag)
相联存储器按关键字实现快速查找,同时对访问内容进行并行比较

主存与cache的地址映射

如何将主存信息定位在cache中,如何将主存地址变换为cache地址,为了把主存块放到cache中,必须应用某种方法把主存地址定位到cache中,称为地址映射
地址映射三种方式:全相联直接组相联

1、全相联映射方式:空位随意放

cache数据块大小成为,主存数据块大小称为行与块等长
在这里插入图片描述

2、直接映射:对号入座

cache的行号 i i i和主存的块号 j j j有如下关系, m m m 为cache中总行数
i i i= j j j mod m m m

在这里插入图片描述

3、组相联映射:按号分组,组内随意放

在这里插入图片描述

4、对比与例题

在这里插入图片描述
例题:一个组相联cache由64行组成,每组4行。主存储器包含4K个块,每块128个字。请表示内存地址的格式。
在这里插入图片描述

十、替换算法

程序运行一段时间后,Cache存储空间会被占满,当再有新数据要调入时,就需要通过某种机制决定替换对象。
目的提高Cache命中率

先进先出 FIFO

红字为计数器
当cache满了之后替换最先进入的
在这里插入图片描述

最不经常使用算法 LFU(Frequently)

使用=命中,命中一次+1新进入的都是0最终数值最小的被替换
如果使用次数都为0,可配合FIFO,先进先出,将其替换
在这里插入图片描述

近期最少使用算法 LRU(Recently)

每当有新块数据调用时,对cache原有数据而言,
没被使用,计数值都会+1新调入或命中数据为0最终数值最大的被替换
在这里插入图片描述

十一、虚拟存储器

计算机理论上不可能执行比主存空间大的程序。
虚拟存储器并不是一个买来的部件,而是一个逻辑模型
功能:用户给一个地址,叫做虚地址逻辑地址,虚拟存储器要给出该地址相应的数据
实现:由辅助硬件将虚地址映射到主存当中某个单元,主存单元地址称为实地址或物理地址
位置:处于主存-辅存存储层次
作用:解决主存容量不足的问题,为程序设计者提供比主存空间大的编程空间
因此引入虚拟存储器
主存与辅存交换的信息单位分类:页式虚拟存储器段式虚拟存储器段页式虚拟存储器
在这里插入图片描述
问题:
1CPU访问存储系统的地址属性?
采用MMU管理虚拟存储器合物理存储器

如何判断CPU要访问的信息是否在主存中?
采用页表判断CPU要访问的内容是否在主存并与MMU配合实现逻辑地址与物理地址的转换,页表放入主存中
在这里插入图片描述
CPU给一个虚拟地址访问,查页表,如果得到CPU访问信息所在的页在主存种,那就实现虚拟地址到物理地址的转换,如果CPU要访问的信息在辅存或磁盘中,需要调用页面调度程序,将页从磁盘调入到主存种

虚拟存储器地址划分(页式虚拟存储器)

虚拟空间与主存空间都划分成同样大小的页,主存的页称为实页,虚拟的页称为虚页

虚存地址划分如下:
在这里插入图片描述

逻辑地址与物理地址转换

在这里插入图片描述
例子
在这里插入图片描述

注意
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值