一、读操作
1、旁路式读(CPU 并行访问 主存 和 cache)
<1>CPU 向 cache 和 主存 同时发读命令和地址
<2>cache 命中,则 cache 回送数据并中断主存读取
<3>cache 未命中,直接访问主存读取数据
2、通过式读(CPU 串行访问 cache 和 主存)
<1>CPU 首先向 cache 发读命令和地址
<2>cache 命中,则从 cache 中读取数据
<3>cache 未命中,再将读命令和地址传给主存并读主存
二、写操作
写操作注意点:
1、写操作必须得在确认是命中后才可进行
2、写操作有可能导致 cache 和 主存 内容不一致
1、写命中:当要修改的数据在 cache 中
<1>写直达法:写操作时数据既写入 cache 又写入主存
1、保证了主存和 cache 内容相同,方法简单可靠
2、对 cache 的更新同时要写主存,速度会受影响
<2>写回法:写操作时只把数据写入 cache 而不写入主存,用标志予以注明,当cache数据被替换
出去时才协会主存
1、省去不必要的立即回写操作
2、写回法 cache 系统比较复杂
3、因为 cache 和主存数据不一致,设置一个标志位来标志是否数据不一致(清、浊)
2、写不命中
<1>按写分配法:在写 cache 不命中时,把所要写的字写入主存。把包含改字的一个块从
主存调入cache
<2>不按写分配法:在写 cache 不命中时,只把所要写的字写入主存
三、cache 的性能分析
1、cache 的命中率与容量
cache 容量大,命中率高,当容量达到一定值时,命中率将不再明显提高
cache 容量大,成本越高
容量是成本与命中率的折中
2、cache 的命中率与块长
取决于程序的局部特性
对着块由小到大增长,命中率最初将提高,而后反而下降
块长最优值较难确定,一般取每块4~8个可编址单位,或是一个主存周期能读出的主存的信息长度
除此之外,地址映象方式、替换策略等影响命中率
四、cache 的改进
1、微机系统中普遍采用多个 cache
增加 cache 的级数
将统一 cache 变成分开 cache
2、单一缓存和多集缓存
片内 cache
片外 cache
3、统一缓存和分开缓存
统一缓存:指令和数据都存放到同一个 cache 中
分开缓存:指令 cache 和数据 cache
总结起来就是纵向扩张、横向扩张、内部模块化。