棋子 · 2019年10月16日

什么是 Speculation access?CPU又是在什么情况下会发起Speculation access?

device memory不能做Speculation access,举例来说,一次Speculation的写可能改变状态机状态。
我的问题是什么是Speculation access?CPU又是在什么情况下会发起Speculation access?
比如,当执行到Branch指令时,在得到Branch结果前所执行的prediction指令是Speculation access吗?如果是,我觉得这不会造成问题啊,因为Branch指令先到ALU stage得到预测结果是否正确,而LOAD/STORE memory是在ALU stage之后。

1 个回答 得票排序 · 时间排序
极术小姐姐 · 2019年10月16日

现在的处理器一般会预测load/store会执行,提前对memory访问的数据拿到,这样可以减小load/store的latency。但是有时候会预测错,时间可能没有用到,但是却已经对memory进行了读取访问,对于normal memory来说是没有影响的,而对于device memory来说就不一样了,因为对于device memory来说,会对系统产生副作用,会对系统有影响。 举个简单的例子,如果是fifo类型的memory空间,从一个地址空间读取走一个数据,slave就会马上重新更新这个地址空间的数据,如果再去读的话,就会读出另外一个值来,那么前面的那个值因为是speculative的访问,所以那个值就有可能被cpu丢掉了(假如预测错的话)

你的回答