POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 33583|回复: 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 15:21 | 只看该作者
基本上……
看不懂……
::>
回复 支持 反对

使用道具 举报

3#
发表于 2005-6-3 16:45 | 只看该作者
对于有1MB/2MB L2的P4来说,这似乎不是大问题。
回复 支持 反对

使用道具 举报

4#
发表于 2005-6-3 16:50 | 只看该作者
Originally posted by Christopher at 2005-6-3 15:21
基本上……
看不懂……
::>

:sweatingbullets:
回复 支持 反对

使用道具 举报

5#
发表于 2005-6-3 17:07 | 只看该作者
Originally posted by HECATE at 2005-6-3 17:06



那P4 3.0E为什么实测效能与3.0C差不多呢

延迟高了
:charles:
回复 支持 反对

使用道具 举报

6#
发表于 2005-6-3 17:35 | 只看该作者
访问缓存的延迟高了……
缓存容量增大,搜索缓存中的数据需要的时间就多
回复 支持 反对

使用道具 举报

7#
发表于 2005-6-3 17:48 | 只看该作者
Originally posted by HECATE at 2005-6-3 17:39


访问SRAM会拖慢性能?..那么P4应该比同频塞羊慢的多才对...

赛扬的缓存延迟好像是被人为的限制了
但这不是主要问题,你自己想想,缓存小了为什么还慢
回复 支持 反对

使用道具 举报

8#
发表于 2005-6-3 17:50 | 只看该作者
慢慢看,觉得xbitlabs废话n多......居然有几十页
回复 支持 反对

使用道具 举报

9#
发表于 2005-6-3 18:01 | 只看该作者
Originally posted by HeavenPR at 2005-6-3 14:54
xbitlabs 经过数月的研究写成的报告

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

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

前两天用了 5 个小时慢 ...


归根到底还是超长的流水线造成的效率低下~~~

我不觉得这种处理方法是不可接受的,因为,
超长的流水线使得常见的 forwarding 等技术都无能为力了~~

而且,更重要的是,有人能想到更好的方法来避免重复计算带来的损失吗?

Netburst 的低效是毋庸置疑的。但是超长流水线带来的高频率也是毋庸置疑的

如果不是随之而来的意料之外的高功耗,Netburst 这个架构究竟是成功还是失败还很难说~~~
回复 支持 反对

使用道具 举报

10#
发表于 2005-6-3 18:03 | 只看该作者
Originally posted by Christopher at 2005-6-3 17:35
访问缓存的延迟高了……
缓存容量增大,搜索缓存中的数据需要的时间就多

SRAM是有固定的延迟时间的,而不会像DRAM那样
地址是固定的,响应速度也是固定的
回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2005-6-3 18:17 | 只看该作者
Celeron 之所以速度慢,是因为 L2 不仅容量小,而且 Associativity 减小到了 1/4

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

使用道具 举报

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

使用道具 举报

13#
发表于 2005-6-3 18:32 | 只看该作者
Originally posted by HECATE at 2005-6-3 18:12
这么复杂的结构自然要用更多的电晶体,怎么能说功耗是"意料之外"的呢...Netburst如果找预定的跑在10G上那么将是一颗了不起的CPU,但这似乎有些违反物理法则了..


抱歉,糊涂了~~~我是指 Prescott 的高功耗

而且目前的说法是,这个主要是因为90nm带来的漏电流~~

长流水自然带来更多的电路,因此增加发热。

不过从 Northwood 的情况看,这个增加的功耗并不是那么严重~~
回复 支持 反对

使用道具 举报

14#
发表于 2005-6-3 18:36 | 只看该作者
Originally posted by zbing at 2005-6-3 18:32


抱歉,糊涂了~~~我是指 Prescott 的高功耗

而且目前的说法是,这个主要是因为90nm带来的漏电流~~

长流水自然带来更多的电路,因此增加发热。

不过从 Northwood 的情况看,这个增加的功耗并不是那么严 ...


跑题了~~呵呵

重申一下我的观点,文章里Netburst这种处理方法并不一定不合理

对于20甚至31级流水线的cpu来说,部分时钟周期的损失是必然的


对于10多级的cpu,比如 dothan 和 A64,也会有时钟周期的损失,只不过损失相对较小罢了
回复 支持 反对

使用道具 举报

15#
发表于 2005-6-3 18:43 | 只看该作者
Originally posted by HeavenPR at 2005-6-3 18:17
Celeron 之所以速度慢,是因为 L2 不仅容量小,而且 Associativity 减小到了 1/4

Associativity 是 Cache 很重要的指标,减小了 1/4,效率会严重降低


类似减少TLB出口的结果?
回复 支持 反对

使用道具 举报

16#
发表于 2005-6-3 19:04 | 只看该作者
Originally posted by HeavenPR at 2005-6-3 18:17
Celeron 之所以速度慢,是因为 L2 不仅容量小,而且 Associativity 减小到了 1/4

Associativity 是 Cache 很重要的指标,减小了 1/4,效率会严重降低


就我看到的,celeron 并非减小 L2 的 Associativity~~应该是减小了每路的 line 数目
至少 Tualatin 核心的 Celeron 与 Pentium,L2 是相同的8way associativity,见图

[ Last edited by zbing on 2005-6-3 at 20:55 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

17#
发表于 2005-6-3 19:33 | 只看该作者
Originally posted by zbing at 2005-6-3 19:04


就我看到的,celeron 并非减小 L2 的 Associativity~~应该是减小了每路的 line size

至少 Tualatin 核心的 Celeron 与 Pentium,L2 是相同的8way associativity,见图


P4 Celeron呢?
回复 支持 反对

使用道具 举报

18#
 楼主| 发表于 2005-6-3 20:29 | 只看该作者
Northwood Celeron 是 128KB, 2-way 的

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

使用道具 举报

19#
发表于 2005-6-3 20:49 | 只看该作者
Originally posted by zbing at 2005-6-3 18:32


抱歉,糊涂了~~~我是指 Prescott 的高功耗

而且目前的说法是,这个主要是因为90nm带来的漏电流~~

长流水自然带来更多的电路,因此增加发热。

不过从 Northwood 的情况看,这个增加的功耗并不是那么严 ...

參照90nm的Pentium M Dothan核心的產品,

發熱量很小,所以Prescott核心發熱量大不是90納米的問題!
回复 支持 反对

使用道具 举报

20#
发表于 2005-6-3 20:49 | 只看该作者
Originally posted by HeavenPR at 2005-6-3 20:29
Northwood Celeron 是 128KB, 2-way 的

相对于 Northwood P4, 512KB, 8-way


呵呵,怪不得 Northwood Celeron 这么低能~~~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 19:12

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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