指令缓存存储操作码吗?

时间:2017-06-10 21:34:49

标签: caching memory-management cpu-architecture processor

我试图计算指令缓存命中率。我在我的模拟器中模拟了一个缓存并用PC来提供它。我想知道是否需要报告命中率,因为在缓存中找到的PC数量或找到的PC数量以及它们的OpCode字段是否匹配?

这些问题可以追溯到指令缓存目的的本质。指令缓存是否用于检索OpCodes?正如我们在分支目标缓冲区(BTB)中存储分支目标一样。在BTB情况下,我们计算一旦PC命中并且目标匹配,命中率。 (更详细地说:并且一旦分支预测器正确预测并且分支被采用。)我想知道是否存在用于指令缓存的这样的事情。

1 个答案:

答案 0 :(得分:1)

您正在混淆分支预测器和缓存的概念。分支预测变量用于预测分支的结果。如果预计将采用分支,则从BTAC(分支目标地址高速缓存)获取下一个PC。当计算实际分支目标和方向时,命中信息将在稍后出现。您可以在此比较分支的预测方向和结果与实际结果。如果所有这些都匹配,你就会受到欢迎。

另一方面,缓存用于存储数据,以便快速访问CPU。所以,你不需要比较“操作码”来获得命中。

虽然您仍然需要存储操作码,以便您可以在点击时检索它们。要获得缓存命中,您只需要从有效缓存行中获取标记并将其与当前标记进行比较。这里的标签只是PC的一些部分,具体取决于你的缓存实现。