1. 存储器层次结构
工作过程:
CPU运行时,寄存器cache主存外存
存储层次结构(塔式结构)
数据只有在第i+1层存在,才会在第i层
存储层次结构存在的合理性
主要基于程序访问的局部性特点。在较短时间内,程序所用地址往往集中在存储器的很小范围内
可以调访存速率,但是如果程序的据
平均访问时间(命中率)
时间局部性:刚被访问过的存储单元很可能不久又被访问 做法:让最近被访问过的信息保留在靠近CPU的存储器中空间局部性:刚被放翁过的存储单元的邻近丹云很有可能不久被访问 做法:将刚被访问的存储单元的邻近单元调到靠近CPU的存储器
2. Cache
分块
主存中分成大小相同的块——主存块
cache中也分成大小相同的块——cache块 cache中存放一个主存块的对应单位为行(line)或槽(slot)或项或块,每个对应单位包括Tag,Data和状态位。
当CPU需从内存中读写数据时,会查看cache中有没有相应块,若没有则需要从内存中查找并替换cache中某块,再读取。
有效位
命中的cache,有效位置1开机或复位时,置0第一次被替换时,置1操作系统加载程序前,若触发Flush信号,置0
地址映射
直接映射 内存中的块会存到取模后的cache中的对应块 易实现、命中时间短,但不灵活,容易造成cache抖动全相联映射 每个内存中的块都可以存到cache中的任意块 冲突小,但需要设计较多的比较器,硬件消耗较大组映射 组内直接映射,组间全映射
性能
cache设计中提高性能的主要方式为提高命中率
命中率失靶率 1)强制失效:增大block大小 2)容量失效:增大cache大小 3)冲突失效:全相联映射不存在该失效失靶损失:cache中没有命中,从贮存中加载替换到cache所需的时间
Cache一致性问题
考虑的情况:
写命中的情况写不命中的情况
写命中:
write through (写直达) store buffer:为提高性能,write back (写回策略) 只对cache操作
写不命中:
allocate-on-miss(写分配) 先写主存,再将主存块调入cacheno-allocate-on-miss(写不分配) 直接写主存
写直达可以写分配或写不分配 写回只能用写分配
cache替换策略
1)过程:
从主存取出一个块
2)常用算法
FIFO 先进先出,命中率较低LRU 利用时间局限性,总是把最长时间未被访问的那块替换到 行越多,命中率越高,该算法较常用LFU 较少使用随机替换算法 较少使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39815222/article/details/111246357