我在这样的问题中不败
在内存层次结构的上下文中,为什么要实现数据缓存和 指令缓存?
我回答说,减少冲突未命中数和空间缺失不足是有用的。但是数据缓存和指令缓存可以根据数据和指令的数量来调整大小吗?因为我假设数据的数量高于指令的数量(很多时候我们需要2个数据来执行1个指令),并且数据高速缓存和指令高速缓存的大小根据这个数字来确定。是真的还是完全错的?在错误的情况下,为什么要实现数据缓存和指令缓存以减少错过?
答案 0 :(得分:1)
缓存的想法是在1个周期内提供缓存数据,以保持CPU以最大速度运行。
现在所有的CPU都是流水线的。这意味着它们具有独立的模块,例如获取指令,解码,获取操作数,执行指令,并写回结果。对于不同的指令,所有这些流水线阶段都可以同时执行 为了获得最大速度,必须在获取之前解码的先前指令的操作数获取的同时完成指令获取。如果一个具有指令缓存和数据缓存,则两者只能在1个周期内同时完成(在最佳情况下)。
答案 1 :(得分:0)
拥有两个缓存(指令和数据)的另一个可能原因是Thrashing。想象一下,您的指令和数据驻留在索引位相同的两个内存位置。假设有一个直接映射的缓存,(我知道,厚颜无耻),就像这样。
因此,我们将不断地将数据和指令交换为相同的缓存行,即捶打。