我对Intel前端的高级理解如下。这主要是模糊的,可能是错误的。
分支预测器确定要从中提取指令的下一个地址。
有时从后端发出“分支foo被预测为错误”的信号,导致管道刷新和恢复。
指令提取单元一次最多提取16个字节
这些过程经历了解码的各个阶段,直到最终,解码单元发出的μop都流向RAT,ROB,然后流向后端。
但是,与awk -F, 'NR==FNR { a[$1]=$2 ; next } { for (i in a) gsub(i, a[i]); print }' mapping.txt file1.txt > file1_mapped.txt
之类的复杂指令相对应的μops不能由任何解码单元直接发出。当解码单元检测到其中之一时,它将向微码定序器ROM发出信号,并从那里发出μop,直到指令解码完成为止。
我的问题是:MSROM问题可以分支吗?如果是这样,它们如何工作?由于这一切都发生在分支预测器的下游,分支预测器对(体系结构)指令起作用,因此它如何知道要走的路呢?它是否会在发出分支之后停滞,直到后端完成执行并且知道条件是否为真?它具有某种基本的静态预测吗?还是像实际的架构指令流一样,它实际上是由“真实的”分支预测变量提供的?