计算机系统结构复习(七):Memory 存储系统

存储系统的层次结构

常见的五级存储结构:
寄存器->cache->主存->disk(辅存)-> tape(磁盘)

存储结构考虑的问题

1.映像规则:当把一个块(页),调入高一层存储器时,可以放到哪些位置?
2.查找算法:当所要访问的块在高一层存储器时,如何找到?
3.替换算法:当发生不命中,且高一层存储器已满,应如何替换?
4.写策略:当进行写访问向Cache中写入新数据时,如何操作?

局部性原理

局部性原理:程序所访问的指令和数据在地址上不是均匀分布的,而是相对聚簇的。 局部性原理是程序能进行随机性访问的基础。
时间局部性:当前某项被访问,那么近期他可能还会被访问。例如循环。
空间局部性:当前某项被访问,那么他附近的项也可能被访问。

映像规则

查找算法

其中 tag 是块标记,index是组标记。index的位数表示分组数,tag 的位数表示相联度。
直接映像候选位置1个,全相联M个,n路组相联n个。 查找时只需比较标识tag,索引index 无需比较。

替换算法: Random、LRU、FIFO

对于直接映射:位置唯一,缺失必须替换对应位置的页。不需要替换算法。
对于全相连和n块组相连:随机,LRU,先入先出。具体方法见操作系统。

写策略:写直达与写回, 按写分配与不按写分配

写策略:写访问会导致Cache与主存的内容不一致,为保证正确性,主存的内容也需要更新。
写直达法:写操作不仅把数据写入Cache中的块,还直接写入主存中。
写回法:写操作只写Cache,只当相应的块要换出时才写回主存中。

按写分配:写失效时,先把所写单元所在的块调入 Cache,再行写入。即要写的数据在Cache中。 写回法常用按写分配的方法
不按写分配:写失效时,只写到主存中,不将相应 的块调入Cache。 写直达法常用不按写分配的方法

写缓存Write Buffer P219

写缓冲原因:在写直达法中,因为速度较慢CPU必须等待,直到写操作结束(CPU写停顿)。因此通过buffer解决,CPU把数据写入buffer就继续运行。
为什么不用reg:写操作可能是爆发性的。
RAW冲突是否会发生:会,内存与Cache的数据不一致时buffer排空。

平均访存时间= 命中时间+不命中率*不命中开销

程序执行时间

Cache优化策略 P207 P225

cache优化从平均访问时间公式中的的三个要素入手:
1.降低不命中率: 更大的块、更大的Cache、更高的相联度。
2.减少不命中开销: 两级Cache、使读不命中优先于写。
3. 减少命中时间: 使Cache进行索引时不进行地址转换。

两级cache 的好处 P216

两级Cache: 为了解决CPU和存储器之间性能差距越来越大的问题,当一级Cache不能满足要求时,可以在原有 Cache和存储器之间增设一级。
平均访问时间= Hit timeL1+ Miss rateL1x (Hit timeL2+ Miss rateL2x Miss penaltyL2)

Cache不命中的三种原因:强制、容量与冲突 P209

相关结论
1.相联度越高,冲突不命中就越少;
2.强制性不命中和容量不命中不受相联度的影响;
3.强制性不命中不受Cache容量的影响,容量不命中随着容量增加而减少,当Cache总容量不变时, 冲突不命中随着容量增加而增加(块数减少)。
4.容量不命中除了增大Cache以外别无他法。
5.三种冲突中,强制性不命中率最小,冲突不命中最容易解决(全相联)。

更大的块将导致更大的Miss Penalty例题

问题:
假定存储系统在延迟20个时钟周期后,每2个时钟周期能送出16个字节。即经过22个时钟周期,可提供16字节;经过 24个时钟周期,可提供32字节;依此类推。命中时间与块大小无关,为1个时钟周期,分别计算下列各种容量的Cache的 平均访问时间。

  1. 块大小为32字节,Cache容量为1KB,不命中率为10%;
  2. 块大小为64字节,Cache容量为4KB,不命中率为5%;
    答案:
    1 + ((32/16)* 2 + 20)* 10% = 3.4个时钟周期
    1+((64/16)* 2 + 20)* 5% = 2.4个时钟周期

虚存空间P232

虚存由主存和辅存构成,通过必须的软件(页表机制)和硬件(地址转换)支持,使得cpu访 问的存储器可以有主存的速度和辅存的容量。 虚存分为页式和段式。

Cache和虚存的区别

1.cache缺失靠硬件弥补,虚存缺失靠软件(操作系统)
2. 指令中的地址长度决定了虚存大小,cache大小与之没有关系。
3. cache是为了缓解CPU和主存之间的速度问题, 虚存是为了缓解主存容量不足问题。

页表计算

问题:
32位虚地址空间(按照字节寻址),每页4KB,页表每项4字节(32bit),页表大小是?
答案:
页表有 2^32B / 2^12B 个项,每项大小是4B。 所以页表总大小为两者积=4MB。 每个进程都要有自己的页表,每个页表要4MB,页表可能太多无法装入内存(页表存在内存中 ),所以有了二级页表。

TLB地址变换后备缓存(快表)

TLB:是一个专用的高速缓冲器,用于存放近期经常使用的页表项。根据局部性原理,可提升对存储器 的访问速度。(传统查找页表的方法需要对主存进行二次查找
项由两部分构成:标识和数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值