计组及体系4-层次化储存结构

四、层次化储存结构

一、存储器与寄存器的区别

存储器在CPU外,容量一般比较大,缺点是读写速度都很慢
寄存器存在于CPU中,速度快,数目有限;计算机做运算时,必须将数据读入寄存器才能运算。

三、存储器的分类

传统计算机:以运算器为核心的冯诺依曼体系
改进计算机:以存储器为核心的冯诺依曼体系
按在计算机中的作用不同
存储器的分类方式很多种,这里只介绍按照作用不同分类。
在这里插入图片描述

1.主存储器(RAM、ROM):

简称主存(内存),用于存储程序和数据,CPU可直接随机地进行读写访问。
主存的特点:容量小、速度快、成本高

主存编址的过程


存储单元个数就是图中的行数
存储单元个数 = 最大地址编号 − 最小地址编号 + 1 存储单元个数

计算机三种编址方式(按位编址、字节编址、字编址)

计算机是用二进制编码(0或1),位(b)即二进制位
1字节=8位 即 1Byte=8b,B=Byte
求寻址范围
区分寻址空间与寻址范围两个不同的概念
寻址范围仅仅是一个数字范围,不带有单位,指寻址区间的大小
寻址空间指能够寻址的最大容量,单位一般用MB、B来表示

(1) B、KB、MB、GB、TB之间的转换关系

1KB=1024B=2^10B
1MB=1024KB=2^20B
1GB=1024MB=2^30B
1TB=1024GB=2^40B

(2)三种编址方式

(1)按位编址 :1b
(2)字节编址 :1 Byte=8b
(3)字编址:机器字长word=32b(32位)/64b(64位) 字长题目里一般会告诉

例题

设有一个1MB容量的存储器,字长32位,问:按字节编址,字编址的寻址范围以及各自的寻址范围大小?
按字节寻址:
1MB=2^20B,1字节=1B=8bit 2^20B/1B=2^20B
地址范围为0~(2^20)-1,需要20根地址线,寻址范围位2^20
按字寻址:
1MB=2^20B,1B=8bit,32bit=4B=2^2B,
2^20B/2^2B=2^18B
地址范围为0~(2^18)-1,至少要用18根地址线才能完成对1MB空间的编码。
因此按字编址的寻址范围是2^18

注意按字寻址,要把字长转为B,容量的B/字长的B

随机访问:
存取时间与物理位置无关,储存单元的内容可按需存取,存取速度与存储单元的物理位置无关。
RAM和ROM都是随机访问存储器。
随机存储器(RAM):在程序执行过程中可读可写。
只读寄存器(ROM):在程序执行过程中只读。

2、闪存(flash):

随机访问、信息可读可写,但是读写速度是不一样的:闪存必须在空白区域写,如果目标区域已经有数据,先擦除后写,而读不必如此

3、辅存(外存):

是指除计算机内存及CPU缓存以外的存储器,此类存储器断电后仍能保存数据。
硬盘、光盘、U盘、SSD固态硬盘,机械硬盘等。
CPU访问外存中的数据时,必须先把外存的数据保存到内存中,CPU再去读取内存中的数据。

4、缓存(Cache缓冲寄存器):

缓存就是数据交换的缓冲区(称作Cache),是存贮数据(使用频繁的数据)的临时地方。
Cache,介于CPU与内存之间。
特点:小容量、高速度、高价格。
在这里插入图片描述
当CPU要访问数据时,它会同时发送地址给Cache和主存,如果在Cache中找到了想要的数据,则由Cache直接返回数据给CPU; 如果没有在Cache找到想要的数据,则由主存返回数据给CPU,同时会将该数据复制一份给Cache。

(1)Cache的访问命中率计算

cache命中率,用来描述在cache完成存取的占比。命中率越接近1越好。
在这里插入图片描述
在这里插入图片描述

(2)三种地址映射(Cache与内存)

要怎么复制给Cache以及复制完怎么存放在Cache当中,这就涉及到了Cache与主存之间的地址映射方式。

字、块、行

字 : 是存放在一个存储单元里的机器数,由若干个比特位组成,具体字长取决于存储器的规格。也就是说它可以是 8 位组成一个字,也可以是 16 位、32 位、64 位,甚至是 1024 位组成 。
块 :在主存中,若干个连续的字可以组成一块。
行 : 是指 Cache 中的一行,等同于主存中的一块。主存中一块的大小有多大,Cache中的一行就有多大。所以有时也会将 Cache 中的行称为块。
注:这三种映射方式都是计算机硬件自动完成的,不是软件

全相联映射

Cache 和主存之间是多对多的关系, Cache 中的任意一行可以存放主存中的任意一块,主存中的任意一块可以存放在 Cache 中的任意一行
在这里插入图片描述
缺点:

直接映射

将主存中分成了 m 块,每若干块组成了一个区,其中一个区中的块数取决于Cache中的行数。 Cache 中有多少行,主存一个区就由多少块组成。主存中每个区的第 i 块会映射到Cache中的第 i 行,Cache 与主存之间是一对多的关系,主存块指定放在某一行
在这里插入图片描述

组相联映射

是全相联映射与直接映射之间的折中方式
全相联映射中Cache存储没有规律,CPU访问Cache·中的数据时需要遍历一遍。直接映射中如果在Cache中某行找不到数据,只能遍历主存块,CPU也会频繁的访问主存。
将主存划分成了很多个区,唯一的不同就是 Cache 中若干个连续的行组成了一组,如下图所示。其中每个区中的第 i 块对应Cache中的第 i 组( 在直接映射中是每个区中的第 i 块对应Cache中的第 i 行,这点注意 ),在组相联映射中,我们可以将主存中每个区的一块随意存放在 Cache 中某一组的任意一行中。
在这里插入图片描述
指定块放在某一组的任意一行

(3)替换算法

替换算法的目的是使cache获得尽可能高的命中率。替换算法只会用在全相联映射和组相联映射。
在这里插入图片描述

随机替换算法(RAND)

在这里插入图片描述
每访问一个主存块,都需要将主存块调入cache,所以访问5,先随机(随机选一个位置)调入5(原cache已满,RAND)

先进先出算法(FIFO)

在这里插入图片描述

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

在这里插入图片描述
优化替换算法

四、存储器三个特性的关系

在这里插入图片描述

五、层次化存储系统

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

缓存与主存之间:

主要解决速度问题(cpu和主存速度的不匹配),因此通过硬件方法实现(主存速度的更新换代远跟不上CPU的发展,速度差异存在“剪刀差”)

主存与辅存之间:

主要解决容量问题,因此使用软硬件相结合的方法

缓存与主存使用的是主存储器的地址,也就是实地址(也叫物理地址);
主存与辅存构成虚拟存储器,使用的是虚拟地址(也叫逻辑地址)。

二、局部性原理

时间局部性:

如果程序中的某条指令一旦执行,不久以后该指令可能再次执行;如果某数据被访问过,不久以后该数据可能再次被访问。产生时间局部性的典型原子,就是由于在程序中存在着大量的循环操作;

空间局部性:

一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定范围之内,这是因为指令通常是顺序存放、顺序执行的,数据一般是以向量、数组、表等形式簇聚存储的。

时间局部性是通过将近来使用的指令和数据保存到高速缓存存储器中,并使用高速缓存的层次结构实现。空间局部性通常是使用较大的高速缓存,并将预取机制继承到高速缓存控制逻辑中实现。虚拟内存技术实际上就是建立了“内存-外存”的两级存储器的结构,利用局部性原理实现高速缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

-C`ESTVRAI

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

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

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

打赏作者

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

抵扣说明:

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

余额充值