X86 最新的英特尔指令流在解码前是否已预取?

X86 最新的英特尔指令流在解码前是否已预取?,x86,cpu,intel,cpu-architecture,X86,Cpu,Intel,Cpu Architecture,我一直在想,在现代英特尔微体系结构中,大多数指令流在解码之前是否都是预取的?如果这是真的,分支会不会变得非常昂贵,因为当分支发生时,指令流基本上必须从缓存中转储?这会使指令管道中的分支更昂贵吗?David Kanter(第一个以当前形式引入uop缓存的英特尔CPU)非常详细地介绍了前端。他谈到了分支预测在管道中发生的位置,例如,为预测的执行分支隐藏指令获取中的小暂停 有人认为您在问题中所说的是一种误解:分支预测失误并不意味着I$(一级指令缓存(cash))内容是错误的,只是解码器需要在不同的点进

我一直在想,在现代英特尔微体系结构中,大多数指令流在解码之前是否都是预取的?如果这是真的,分支会不会变得非常昂贵,因为当分支发生时,指令流基本上必须从缓存中转储?这会使指令管道中的分支更昂贵吗?

David Kanter(第一个以当前形式引入uop缓存的英特尔CPU)非常详细地介绍了前端。他谈到了分支预测在管道中发生的位置,例如,为预测的执行分支隐藏指令获取中的小暂停

有人认为您在问题中所说的是一种误解:分支预测失误并不意味着I$(一级指令缓存(cash))内容是错误的,只是解码器需要在不同的点进行解码。(正如汉斯·帕桑在评论中指出的那样。)


如果跳转到不在I$中的地址,则指令流将在存储在I$中的同时发送到解码器。在未缓存的情况下,拥有I$不会延迟解码;数据不必存储在缓存中,然后从缓存中读取。因此,在最坏的情况下,预回迁/I$/等不会有任何影响。当然,在几乎所有情况下,它都会有很大帮助。

分支相对来说比较昂贵,这就是为什么分支预测可以帮助您的原因。当然。不需要,只需要丢弃推测执行的指令结果,缓存就可以了。当分支目标不在缓存中时,可能会出现缓存暂停,这可能是不幸的。如果CPU只能从缓存中预取指令,性能会受到什么影响?,我想知道这一点,因为我正在考虑一种支持加密内存的体系结构,如果指令必须在执行(解密)之前进行处理并转储到二级缓存中,那么这种体系结构是可能的