CPU对cache写入更改内容,如何与主存内容保持一致有几种写操作工作方式可供选择
写回法:
当CPU对cache写命中时,只修改cache的内容不立即写入主存,只当此行被换出时才写回主存。
缺点:写回法虽然减少了写主存次数,但同时也带来了cache与主存严重的不一致性。
就比如一个不好说话的朋友,遇到什么事都藏在心里,不跟别人说,只有当有人向他询问时才会回答。
写直达法:
当cache写命中时,cache与主存同时发生写修改。这种策略显然较好的维护了cache与主存的内容一致性,但这并不等于说全部解决了一致性问题。
缺点:写入cache时速度不能提高,因为还要写入主存单元。
就比如一个好说话的朋友,无论遇到多小的事都会向你倾诉。
写一次法:
写一次法同时结合了写回法与写直达法两种策略,顾名思义,写一次法只是在第一次写命中时要同时写入主存。
缺失率:cache访问不命中的比率。
3C缺失包括(强制缺失、容量缺失、冲突缺失)
强制缺失:第一次访问相应cache块,cache中肯定没有改cache块
容量缺失:cache块被移除后又被访问
冲突缺失:重复访问多个cache,不同块由于Index相同进行相互替换。
例:假设指令cache缺失率为2%,数据cache缺失率为4%,处理器CPU为2,且每次缺失代价为100个时间周期,那么配置一个从不发生缺失理想的cache,处理器的速度会快多少?假定全部LOAD和STORE的频率为36%。
解:指令缺失时钟周期:1*2%100=2.0I
数据缺失:136%*4%*100=1.44I
总存储器阻塞:2.0 I + 1.44 I = 3.44 I
总CPU : 2 + 3.44 = 5.44
配置理想cache: 5.44 / 2 = 2.72 倍
处理器时钟周期的时间1ns,缺失代价是20个时钟周期,缺失率为每条指令0.05次缺失,cache的访问时间为1个时钟周期,假设读操作和写操作的缺失代价相同并且忽略其他写阻塞,计算AMAT.
解:每条指令的平均存储器访问时间为:AMAT = 命中时间+缺失率缺失代价
=1+0.0520
=2个时钟周期
假定处理器基本CPI 1.0 ,时钟频率为4GHz,假定主存访问时间为100ns,其中包括缺失处理时间,一级cache指令缺失率2%,增加一个危机cache,命中时间5ns,容量达到必须使访问主存却是两次减少到0.5%,处理器速率提高多少?
解:主存缺失代价:100ns/0.25ns = 400个时钟周期
一级cache:总CPI = 1.0 + 2%*400 = 9
二级cache缺失代价:5 ns / 0.25ns = 20个时钟周期,总CPI:1 + 2% *20 + 0.5% * 400 = 3.4
有二级性能是没有二级性能的9.0 / 3.4 = 2.6 倍