7.1.3 取指/译码单元 取指/译码单元从L1指令Cache读取指令流并将它们译码成一系列称为“micro-ops”的微操作。然后仍按照原先指令流的顺序将这些微操作流发送到指令池。 指令予取单元每个周期从指令Cache中取出一个32字节Cache行。它对于Cache行中Intel结构指令起始和终结做标记,传送16个标出的字节到译码器。 指令预取单元按照以下几种条件来计算指令地址指针,1)分支目标缓冲器的输入,2)中断状态3)来自整数执行单元的分支错误预测指示。这一过程最重要部分是通过分支目标缓冲器进行的分支预测。 指令译码器内含有三个并行译码器:两个简单指令译码器和一个复杂指令译码器。每个译码器将Intel结构的指令转换为一个或多个三阶微操作(每个微操作有两个逻辑源和一个目标源)。微操作是原始指令,它是由处理器的六个并行执行单元执行的。 有些复杂的指令直接由简单指令译码器转换成单个微操作,而且一些指令被译码成一到四个微操作。复杂指令被译码成程序化的微操作序列。 指令译码器也处理指令前缀和循环操作。指令译码器每个时钟周期最多能够产生六个微操作。 寄存器系统可以因为寄存器的相关性导致资源的中止。为了解决这个问题,处理器提供40个用于实际计算的内部通用寄存器。这些寄存器可以处理整数和浮点值。为了分配内部寄存器,来自指令译码器的微操作码队列被发送到寄存器化名表(register alias table)单元,在那里对照逻辑寄存器而转换为内部实际寄存器对照表。 在译码处理的最后一步,在寄存器化名表单元中的分配器将微操作码加上状态位和标志送到指令池,为无序执行做好准备。 |