|
本帖最后由 itany 于 2012-9-15 15:14 编辑
虽然Intel比较低调,但是Haswell并不是像之前一般认为的那样,在CPU微架构上变化不大。恰恰相反,变化还是很大的。
首先应该注意到的是,Haswell在保留站(RS)上增加了两个发射口。Intel开始推出Core架构(Conroe)之后,一直都是6个发射口,其中有三个发射口(0、1、5)上边挂整数单元ALU,2个口上边挂地址计算单元AGU(2、3),还有一个口是写数据。Nehalem引入超线程,Sandy Bridge引入环形总线,这6个口的基本格局都没有变化。折旧决定了峰值的执行能力就是每周期三个整数微操作,两个读写微操作。其中只有一个ALU能执行分支操作。而对于Haswell,在6号口增加了一个ALU,意味着单个周期能能执行4个整数微操作,更重要的是,这个ALU还能进行分支操作。意味着每个周期能进行两次分支运算。在7号口增加了一个AGU,计算写操作地址,意味着Haswell每周期能执行两个读微操作,一个写微操作。
对于单线程而言,每周期进行一次分支计算是合理的,因为分支单元和前端的分支预测之间是耦合的,而且涉及到推测执行的回溯问题;但是对于超线程,每个线程每周期执行一次分支才是最佳的方案。同时,一般x86程序在执行的时候,指令并行度一般在1.2-2左右,表明,在没有超线程的情况下,不管是Sandy Brige还是Haswell,ALU资源是相对过剩的;而一旦在超线程并行执行的过程中,ALU又可能存在不足,制约性能的发挥。现在Haswell解决了这个问题。另外,在x86程序中往往涉及内存访问的指令占到20%,多的可以占到40%。从Conroe开始,就采用了内存消岐技术,使得读微操作能越过写微操作,大大降低了延迟。新增的AGU增加了内存访问的吞吐能力,对降低延迟有好处。
与此相配合,Haswell增加了取指令的带宽,也就是L1I缓存的读取带宽。之前Sandy Bridge的带宽是16字节每周期,现在没有Haswell的数据,我认为可能增加到24. 实际上从Sandy Brige开始,在解码器之后就有一个微操作缓存,这是从Netburst微架构继承下来的,在执行小规模循环的时候,就不用前端解码器反复进行解码操作,直接从微操作缓存里边读取就可以了。实际上这也在一定程度上掩盖了取指令带宽不足的问题。在x86指令的情况下,平均指令长度大约为2.5-3.5字节,而x64指令长度增加了1个字节以上,达到3.5-4.5个字节,最长可以到15个字节。Haswell的前端实际上每周期能预读6条指令,但从平均指令长度可以看出,在带宽瓶颈下,一般只能做到3-4个指令。要在微操作缓存没有作用的情况下把后边喂饱,充分发挥宏融合和微融合,增加取指带宽是必要的。
更好的分支这个太笼统,说不清。但是从历史上看,Conroe、Nehalem、Sandy Bridge的分支都是有重大改进的,甚至是重新设计,Haswell应该也不差。
在指令解码之后,微操作经过一个队列,进入重排缓存(ROB),之后进行寄存器重命名,进入调度器。调度器扫描微操作,并将能并行执行的指令送到发射口上去执行。调度器能看到并检测是否能并行处理的微操作个数叫做乱序执行窗口(OoO Window)。对于Sandy Bridge,这个是168个,Haswell增加到192个。同时,ROB数量应该也相应增加,从54个增加到60个。从Sandy Bridge开始,Intel使用硬件寄存器文件来实行寄存器重命名。Haswell的整数和浮点寄存器相对Sandy Bridge都有所增加。
在处理器执行读写微操作的时候,首先通过AGU来生成地址,之后会把相应的读写操作放在读操作队列和写操作队列里边。处理器会检查队列里边的读写指令是不是有冲突,在没有冲突的前提下,按照乱序执行读写操作,尽可能提高内存性能。不管是二级缓存、三级缓存都是有较大延迟的,内存延迟更大,显然同时执行的读写操作(in-flight load/Store)越多,越能够掩盖延迟。Haswell相对Sandy Bridge在这方面也有提高。当然,这也是为了和更多的AGU相配合的。
x64架构在进行内存访问的时候需要进行地址转换,转换的时候使用四级页表结构。内存通过分页进行划分,传统的分页大小是4KB,但是这样对于较大的数据结构太零散,往往也采用2M的分页大小(还有1G的超大分页,不过用的少)。每次访问都需要查表。因此,把页表放在旁路转换缓存(TLB)里边。从Nehalem开始,Intel搞了两级TLB结构,和L1、L2缓存类似。但是,一直以来L2 TLB就只是支持4KB分页。在Haswell里边形成了4K分页与2M分页共用1024,比之前扩大了一倍,而且在2M分页的情况下,有助于提高性能。这对于特定的应用,如数据库,无疑会提升性能。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|