POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 34263|回复: 78
打印 上一主题 下一主题

吐血推荐阅读文章 NetBurst: A Processor with Replay System

[复制链接]
跳转到指定楼层
1#
发表于 2005-6-3 14:54 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
xbitlabs 经过数月的研究写成的报告

Prescott: The Last of the Mohicans? (Pentium 4: from Willamette to Prescott)

里面介绍了 P4 NetBurst 鲜为人知的架构秘密: Replay Queue

前两天用了 5 个小时慢慢的看了上下两篇文章,看完以后让人心里发毛....

P4 L1 miss 以后竟然会执行出错误计算结果,然后指令进入 Replay Queue 被重新执行一遍

这就是 P4 架构效率低下的主要原因


简介(我对文章分析的理解):

P4 NetBurst 因为为了提高频率,采用了超长流水线,从而导致了 Decoder 和实际的 Execution Unit 相隔了很多个时钟周期

这个时候如果执行两条 Dependent Instructions 的话,就会出现麻烦:例如

mov eax, [ecx]
add ebx, eax

这个时候 [ecx] 所指向的数据不知道在 L1/L2 还是 RAM,甚至 Page File 中。如果等第一条指令的结果出来以后

Decoder 再发送第二条指令到流水线,那么第二条指令就要用十几个时钟周期才能传输到 Execution Unit,这将造成严重的流水线

气泡,使效率降低一大截,是不可取得方案。而 Intel Netburst 设计团队想出了让人觉得不可思议的处理方法:

注意仔细阅读...........

首先记住 P4 Northwood 的 L1 Cache 延迟为 2 Clks,L2 延迟为 7 Clks

当遇到上述的 Dependent Instruction Chain 的时候,Netburst 会在发送 mov 指令的两个周期之后发送 add 指令,假设数据在 L1 中。

如果数据确实在 L1 中,那么两个 Clk 之后,数据就会到达 register,这个时候两条指令以 100% 效率运行,很不错的设计 呵呵

但是:当数据不在 L1 的时候,也就是 mov 产生了 L1-Miss,这个时候 add 已经离两个 clk 就要到达 Execution Unit

但是 L2 Cache 里去取数据的话需要 7 Clk。由于流水线里的指令不能后退,而把整个流水线停止来等待数据也是很不可取得方法

这个时候,add 指令就会被 错误的执行。而相关的电路监测到了这个情况,就会在指令结果被写回的时候

把指令废除,而进入一个称为 Replay Queue 的执行单元,顾名思义,Replay = 重放,也就 add 指令要在

7 clk 之后被再次送回流水线执行。因为 L2 延迟为 7 Clk,所以如果数据在 L2 中,7 clk 之后正好到达 L1/Register,从而得出正确的结果。


但是,事实远比这个复杂。如果数据不在 L2 中,会发生生么???

add 指令 7 clk 后仍然被 错误执行,所以还会被 第二次送入 Replay Queue重新执行第三次

这种状况将一直持续下去,直到数据到达 Register。结果是,如果 [ecx] 的数据在 RAM 中,这条指令将被重复执行数十次,直到得出正确的结果


这不是天方夜谭,大家可以细细的看完整的文章来研究

相关链接:
http://www.xbitlabs.com/articles/cpu/display/netburst-1.html
http://www.xbitlabs.com/articles/cpu/display/netburst-2.html


注意,次贴仅供 Netburst 超长流水线的学术研究,禁止进来起哄的。谢谢合作!
zhangcono 该用户已被删除
80#
发表于 2010-5-8 23:15 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

79#
发表于 2009-8-25 17:30 | 只看该作者
又是一部天书呵呵
回复 支持 反对

使用道具 举报

漠路狂徒 该用户已被删除
78#
发表于 2007-4-27 02:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

77#
发表于 2007-4-2 11:32 | 只看该作者
cool!!!!
回复 支持 反对

使用道具 举报

76#
发表于 2007-3-28 23:16 | 只看该作者
P4果然牛:loveliness: :loveliness:
回复 支持 反对

使用道具 举报

75#
发表于 2007-3-24 11:33 | 只看该作者
看不懂。。。。。。。
回复 支持 反对

使用道具 举报

74#
发表于 2007-3-17 13:15 | 只看该作者
我认为netburst是很成功的设计,只是太过前卫了,制程,工艺,材料都跟不上。相信若干年后intel再次祭出netburst的时候将会势不可挡。

如果没有材料,工艺方面的限制的话,我们现在用的可能就不是3G的C2D而是10G的P4E了:lol: :lol:
回复 支持 反对

使用道具 举报

73#
发表于 2007-3-13 11:21 | 只看该作者
不懂:loveliness:
回复 支持 反对

使用道具 举报

72#
发表于 2007-2-15 23:22 | 只看该作者
那篇图形加速的文章太迷人了
回复 支持 反对

使用道具 举报

71#
发表于 2007-2-1 18:14 | 只看该作者
崇拜楼主中....
回复 支持 反对

使用道具 举报

mgsolid 该用户已被删除
70#
发表于 2007-1-25 16:23 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

69#
发表于 2007-1-20 10:39 | 只看该作者
虽然看不大懂,但是技术文章是要支持的w00t)
回复 支持 反对

使用道具 举报

68#
发表于 2007-1-20 09:33 | 只看该作者
学习学习!!!!!
回复 支持 反对

使用道具 举报

67#
发表于 2007-1-10 18:02 | 只看该作者
Originally posted by Christopher at 2005-6-3 15:21
基本上……
看不懂……
::>
回复 支持 反对

使用道具 举报

ernme64 该用户已被删除
66#
发表于 2006-10-12 22:58 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

65#
发表于 2006-8-29 00:25 | 只看该作者
简介(我对文章分析的理解):

P4 NetBurst 因为为了提高频率,采用了超长流水线,从而导致了 Decoder 和实际的 Execution Unit 相隔了很多个时钟周期

这个时候如果执行两条 Dependent Instructions 的话,就会出现麻烦:例如

mov eax, [ecx]
add ebx, eax

这个时候 [ecx] 所指向的数据不知道在 L1/L2 还是 RAM,甚至 Page File 中。如果等第一条指令的结果出来以后

Decoder 再发送第二条指令到流水线,那么第二条指令就要用十几个时钟周期才能传输到 Execution Unit,这将造成严重的流水线

气泡,使效率降低一大截,是不可取得方案。而 Intel Netburst 设计团队想出了让人觉得不可思议的处理方法:


决定以PCI里对NetBurst最高专业水准, 教育一下I粉丝MM HeavenPR,纯学术教育:
P4 NetBurst采用Trace Cache, 从Trace Cache到Exec级,没有Decoder的。

谈谈L1 miss的情况

而是调度器和 Execution Unit之间的存在时钟间距,POWER4和POWER5和APHLA21264也都是有的。所以POWER4和POWER5和APHLA21264以及Netburst,都不会说是等到前一条相关指令真正写回结果后,才开始从调度器向Execution Unit发送下一指令。而是提前根据具体的指令延迟,预先猜测性的wake up下一条指令了, 例如:不管是否L1miss,随后2或3时钟就猜测发射。

POWER4和POWER5、APHLA21264他们为了避免理想猜测和实际不一致,猜测指令发射后,不会从保留站RS(/调度器/发射队列)删除,而是继续留在保留站RS(/发射队列)中, 直到有确认信息返回,如果出现异常(L1 miss等等),可从保留站RS重新发射。 这种方法的代价是,会导致已经发射的指令占用保留站RS,影响其他指令使用保留站RS资源。

NetBurst相当天才的一招是,猜测指令发射后,就离开了调度器,没有再继续占用调度器。如果出现异常,例如L1 miss,有staging replay机制来处理,而不是从调度器发射。

更深更激进的猜测,可能带来更大的功耗, 这点是对的。 不过呢,加强猜测,是提升性能的有效手段。
AMD的下下代处理器,必然是有replay的。

还是那句老话,我们不能因为刘翔跑不到100米短跑的世界前八, 就说刘翔的敏捷性和协调性不好。

[ 本帖最后由 hopetoknow2 于 2006-8-29 00:28 编辑 ]
回复 支持 反对

使用道具 举报

sc_bj 该用户已被删除
64#
发表于 2006-8-21 23:41 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

RacingPHT 该用户已被删除
63#
发表于 2006-8-20 14:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

62#
发表于 2006-8-18 20:20 | 只看该作者
楼主是I FAN人人都知,但楼主是用事实和数据说明,不像某些人随口而出。

支持楼主的技术性文章。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-21 06:37

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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