POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 33603|回复: 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 超长流水线的学术研究,禁止进来起哄的。谢谢合作!
2#
 楼主| 发表于 2005-6-3 18:17 | 显示全部楼层
Celeron 之所以速度慢,是因为 L2 不仅容量小,而且 Associativity 减小到了 1/4

Associativity 是 Cache 很重要的指标,减小了 1/4,效率会严重降低
回复 支持 反对

使用道具 举报

3#
 楼主| 发表于 2005-6-3 18:20 | 显示全部楼层
发热高是必然的,因为用到了大量的 LVS 电路 (Low Voltage Swing) 有兴趣的自己查一下资料吧
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2005-6-3 20:29 | 显示全部楼层
Northwood Celeron 是 128KB, 2-way 的

相对于 Northwood P4, 512KB, 8-way
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2005-6-3 21:44 | 显示全部楼层
短信看到了,那个 div 时钟周期我是现编的,嘿嘿

还有 Prescott 的 Rapid Exec Engine 用了发热量超高的 LVS 低压浮动电路,所以导致功耗狂增

本来准备借 LVS 再次提高频率,可是却被功耗给卡主了
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2006-5-11 14:39 | 显示全部楼层
Northwood 2G 肯定比 P3 1.4 好,P3 的内存带宽拖后腿拖的太厉害了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 13:33

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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