POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 14357|回复: 39
打印 上一主题 下一主题

[已更新]多线程性能的向前一大步:Haswell CPU微架构变化

[复制链接]
跳转到指定楼层
1#
发表于 2012-9-13 13:44 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 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
40#
发表于 2015-3-28 16:01 | 只看该作者
本帖最后由 kiven_chen 于 2015-3-28 16:01 编辑

我只关心新U能被动散热用在不太强大的应用上。
回复 支持 反对

使用道具 举报

39#
发表于 2012-9-19 19:45 | 只看该作者
写的很详细 tks
回复 支持 反对

使用道具 举报

38#
 楼主| 发表于 2012-9-18 00:55 | 只看该作者
dddwwwxxx 发表于 2012-9-17 09:09
这文是楼主翻译的还是写的?怎么没发到主流网站赚稿费

是我看幻灯片根据自己的理解写的。
我这个随便转载,不收稿费。
回复 支持 反对

使用道具 举报

37#
发表于 2012-9-17 09:09 | 只看该作者
这文是楼主翻译的还是写的?怎么没发到主流网站赚稿费
回复 支持 反对

使用道具 举报

36#
 楼主| 发表于 2012-9-16 23:47 | 只看该作者
AMD11 发表于 2012-9-16 19:19
在硬件上实现锁细粒度化,相应地要扩展一系列的东西,至少在寄存器上要扩展(不知是物理扩展还是重命名等等 ...

谢谢,我修正一下
回复 支持 反对

使用道具 举报

35#
发表于 2012-9-16 20:45 | 只看该作者
itany 发表于 2012-9-15 22:31
话说这种一个PI的爆料,跟没爆差不多啊

这个爆料只是说明haswell可以跑系统了,这种性能连N年前的Core2都不如。
回复 支持 反对

使用道具 举报

34#
发表于 2012-9-16 19:21 | 只看该作者
itany 发表于 2012-9-15 22:31
话说这种一个PI的爆料,跟没爆差不多啊

是今年4月份的时候了,那是的haswell的BUG较多,估计是alpha版本(不是alpha处理器,是产品研制和生产以及推出的流程中的某个比较原始的阶段),不知道是A几。
回复 支持 反对

使用道具 举报

33#
发表于 2012-9-16 19:19 | 只看该作者
在硬件上实现锁细粒度化,相应地要扩展一系列的东西,至少在寄存器上要扩展(不知是物理扩展还是重命名等等手段),因此Haswell的变化的确比较大,当然还没有我原来预料中的那种革命性的变化。现在我很期待Intel什么时候将整个Haswell的架构图放出来。
回复 支持 反对

使用道具 举报

32#
发表于 2012-9-16 19:13 | 只看该作者
本帖最后由 AMD11 于 2012-9-16 19:15 编辑

Transaction 我国计算界基本都翻译成事务,而且事务在计算机科学中是一个非常重要的概念,涉及事原子操作(原语操作)。因此,我个人也支持翻译成“事务内存”,如果用“交易内存”这个概念,显得不知所云。

因此,说“交易同步”,我个人当时立刻一愣,想了半天,如果不看英文,还在迷糊中。
回复 支持 反对

使用道具 举报

31#
 楼主| 发表于 2012-9-16 14:44 | 只看该作者
FENG950 发表于 2012-9-16 02:29
事务内存不好整啊,看出来以后的实际效果了。

翻译成“事务内存”哈?
回复 支持 反对

使用道具 举报

30#
发表于 2012-9-16 02:29 | 只看该作者
事务内存不好整啊,看出来以后的实际效果了。
回复 支持 反对

使用道具 举报

potomac 该用户已被删除
29#
发表于 2012-9-15 22:55 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

28#
 楼主| 发表于 2012-9-15 22:31 | 只看该作者
AMD11 发表于 2012-9-15 19:34
http://www.ch_i_p_h_el_l.com/thread-451483-1-1.html
去掉所有的下划线,减号不要去掉。所说的L4也不是 ...

话说这种一个PI的爆料,跟没爆差不多啊
回复 支持 反对

使用道具 举报

27#
发表于 2012-9-15 21:06 | 只看该作者
本帖最后由 licongok 于 2012-9-15 21:10 编辑

看看,同频没比ivy提升30%不考虑换,相信不会提升这么多!
回复 支持 反对

使用道具 举报

26#
发表于 2012-9-15 19:34 | 只看该作者
itany 发表于 2012-9-15 15:56
求链接。

据称内置的所谓L4缓存应该是显存,大小估计是128M,位宽可能是256位。

http://www.ch_i_p_h_el_l.com/thread-451483-1-1.html
去掉所有的下划线,减号不要去掉。所说的L4也不是显存,至于最终规格如何,看发布,或偷偷问老P。
回复 支持 反对

使用道具 举报

25#
 楼主| 发表于 2012-9-15 15:56 | 只看该作者
AMD11 发表于 2012-9-14 20:48
bigpao007在隔壁放过早期的Haswell的测试,也说了一句“架构超强,但是制程限制了架构。”,只是没有提到详 ...

求链接。

据称内置的所谓L4缓存应该是显存,大小估计是128M,位宽可能是256位。
CPU不见得能用上这货。
回复 支持 反对

使用道具 举报

24#
发表于 2012-9-15 15:55 | 只看该作者
gudi0401 发表于 2012-9-14 02:25
楼主辛苦,介绍得非常好。原来对core和haswell CPU架构根本不了解,现在知道一些。这个架构很有趣,感觉和t ...

DSP化是CPU提升效率和性能的关键,最明显的当属ARM家族的东西
回复 支持 反对

使用道具 举报

23#
 楼主| 发表于 2012-9-15 15:13 | 只看该作者
根据Intel的官方幻灯片材料进行了全面修正
回复 支持 反对

使用道具 举报

22#
发表于 2012-9-14 20:48 | 只看该作者
bigpao007在隔壁放过早期的Haswell的测试,也说了一句“架构超强,但是制程限制了架构。”,只是没有提到详细的架构方面的信息(L4 cache不算,,不要揪我的小辫子),如今看来,还真如此了,Intel真的做了限制,估计在14nm工艺才放开这些限制(推测,错,望斧正)。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2024-5-7 12:33

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表