Caching 看到底还是看旁边

Caching 看到底还是看旁边,caching,memory,cpu-architecture,cpu-cache,Caching,Memory,Cpu Architecture,Cpu Cache,假设有两个缓存L1和L2 L1 L1的命中率=0.8 l1的访问时间=2ns 传输时间b/w L1和CPU为10ns L2 L2的命中率=0.9 L2的访问时间=5ns 传输时间b/w L2和L1为100ns 在采用查找和搁置策略的情况下,有效访问时间是多少。查找和搁置是缓存体系结构的读取策略 首先,我们将看到它们之间的区别 (1)-查找策略=如果处理器想要搜索内容,它将首先查找缓存,如果缓存命中--获取内容,如果缓存未命中(这里它将搜索二级缓存,然后进入主存)它将进入主存,从主存读

假设有两个缓存L1和L2

  • L1
    • L1的命中率=0.8
    • l1的访问时间=2ns
    • 传输时间b/w L1和CPU为10ns
  • L2
    • L2的命中率=0.9
    • L2的访问时间=5ns
    • 传输时间b/w L2和L1为100ns

在采用查找和搁置策略的情况下,有效访问时间是多少。

查找和搁置是缓存体系结构的读取策略

首先,我们将看到它们之间的区别

(1)-查找策略=如果处理器想要搜索内容,它将首先查找缓存,如果缓存命中--获取内容,如果缓存未命中(这里它将搜索二级缓存,然后进入主存)它将进入主存,从主存读取块,并将块复制到缓存中以便进一步访问

这里,计算访问时间

h=命中率

c=缓存访问时间

m=主存储器访问时间

访问时间=h*c+(1-h)*(c+m)

对于L1=2+10=12纳秒

对于(通过L1)L2=L1时间+5+100=117纳秒

对于(通过L1+L2)内存=L1+L2+Mem=Mem ns

访问时间=(0.8*12)+(0.18*117)+(0.02*Mem)。

(2)暂放策略=处理器同时在缓存和主内存中查找内容

每次访问(缓存和主内存)时,暂放需要更多的信号操作,当在缓存中找到内容时,需要向主内存发送取消信号。这是暂放策略的最大缺点

这里,计算访问时间

<>你必须考虑所有操作的所有信令时间…
注意-大多数缓存都使用查找缓存,因为现在一天,缓存命中率超过95%…因此大部分时间内容都可以在缓存中使用。

[对于软件/应用程序缓存]在这两种缓存中,都是先在缓存中查找数据。在look-aside情况下,应用程序负责维护缓存中数据的一致性并将数据插入缓存,而在look-through情况下,一致性由缓存透明处理,而不涉及应用程序

这意味着对于旁看缓存,应用程序将请求发送到主存,而在直通缓存中,请求从缓存本身转发


请参阅此幻灯片组中的幻灯片14和15以获得直观的说明:

更重要的是,外部缓存或内存运行频率较低,和/或与其他内核共享,因此内部缓存过滤请求的带宽是一个重要属性。您希望保存L2/L3/mem请求跟踪容量,以便跟踪正在等待的飞行中的L1未命中(内存级别并行性是现代L1d缓存支持未命中下命中和未命中下未命中的一种功能)。此外,即使是专用L2缓存,也需要额外的读取端口来支持每次L1d或L1i启动访问,除了在后台处理硬件预取到L2之外!例如,现代x86 CPU每个时钟可以从L1d缓存执行2次读取,从L1i缓存执行一次读取。如果使用统一的二级缓存,则每个时钟将有3个请求,这完全违背了使用拆分一级缓存的目的。这个问题似乎与硬件cpu缓存有关(我根据问题主体添加了该标记)。CPU缓存始终是透明的,因此即使在知道L1命中或未命中之前开始探测L2或主mem,硬件仍然保持一致性和一致性。链接幻灯片中的图表很有用,但软件必须在读未命中时手动维护缓存这一点仅适用于软件/应用程序缓存,而不像主内存的CPU缓存那样重要。