服务器 频道

从Xeon LV处理器解读Core微架构

  乱序执行引擎

  经过译码单元处理之后的uop被输送到乱序引擎,经过重新排序再进入到执行单元——重新排序之后的指令具有更好的指令级并行性,因此可以充分的利用执行单元的资源。

图5:乱序执行引擎

  Core微架构同Yonah核心的乱序引擎的结果类似,均包括RAT(Register Alias Table,寄存器别名表)、Allocator(分配器)和Reorder Buffer(重排序缓冲)等功能单元,只是Core微架构具有更多的资源。它们同Netburst微架构的差异较大,因此这个环节的比较也无法太直观。

  Yonah微指令缓冲入口为6个,Core微架构因为增加了一个简单译码器,因此微指令缓冲入口也增加为7个。Netburst微架构和Yonah乱序引擎的最大吞吐量均为3 uops/cycle,而Core微架构则为4 uops/cycle。Netburst微架构ROB单元有126个入口,Core微架构的ROB单元有96个入口,Yonah的资料并不明确,应该会提供了至少40个以上的入口。前面我们提及过,ROB入口数量越大,就意味着该架构允许同时处于“in-flight”状态的指令越多,乱序引擎可以在更大的范围内挑选可并行处理的指令。

  Yonah核心具有一个24个入口的保留站单元(reservation stations),而Core微架构的保留站单元入口增加到了32个。Netburst采用了分布式调度器(schedulers),总共有46个调度器接口(scheduler slots),其中8个用于内存单元,38个用于ALU和FPU。

图6:执行单元对比

  Yonah核心具有2个执行分配端口(execution dispatch ports),分别连接了2个32bit算数逻辑单元,2个64bit SSE单元和2个64bit浮点单元。Core微架构则具有3个执行分配端口,连接了3个128 bit SSE单元,2个128 bit 浮点单元,3个64 bit整数单元。在分配端口1上,整数单元可以处理128 bit shifts and rotates操作,所有的端口均可执行FP Moves操作。需要说明的是,FPU和SSE这两个单元的硬件并非完全独立的,有些电路是共享的。

  Core微架构每周期最高可执行3条指令,在特殊情况下Netburst微架构可以分配和执行4条指令,不过需要碰巧所有的指令都是ALU操作。从上图可见,Core微架构的执行单元更加平衡,而Netburst微架构中大部分操作都要经过分配端口1,存在冲突的几率会更大。

  Yonah核心的浮点和SSE处理能力同Netburst微架构相比并没有具备更多的资源,它依然配置的是64bit SSE单元,需要两个周期才能处理一个128bit操作。Netburst微架构中的执行单元也配置的是64bit SSE单元。Core微架构的3个128bit SSE单元并不完全对称,在偏移和乘法资源方面略有差异,但是它们执行128bit SSE操作均需要一个周期。在一个周期内,Core微架构可以执行4个不同类型的DP浮点运算,包括128 bit multiply, a 128 bit add, a 128 bit load, a 128 bit store,同时还有可能在最后一个端口上执行一个ALU运算。

0
相关文章