POPPUR爱换

标题: 回头看看: NetBurst的SSE为什么那么强?! [打印本页]

作者: RacingPHT    时间: 2007-5-28 13:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: Edison    时间: 2007-5-28 13:31
这两个alu在pipeline上是可以并行执行的,port上它们是交叠发射的,可以达到每个周期两个2 flop。
作者: RacingPHT    时间: 2007-5-28 13:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: Prescott    时间: 2007-5-28 13:43
原帖由 RacingPHT 于 2007-5-28 13:16 发表
大家都知道, 其实K8的SSE ALU资源比P4多一倍。K8具有FP_ADD/FP_MUL两个单元与port, 而P4只有一个FP_MUL/ADD。
NetBurst的理论双精度浮点峰值只有1 flop/cycle/core。(MULPD/ADDPD的thoughput都是2 cycle)

而 ...

throughput的定义是相同指令之间的cycle数,并没有说一条ADDPD之后不能跟着一条MULPD。所以,P4的理论峰值是2FLOPS/cycle。
至于为什么P4的efficiency要高于K8,呵呵,我不知道。
作者: Edison    时间: 2007-5-28 13:48
架构图上画的是issue port,不是ALUs。

效率和求解的规模、编译环境有很大的关系。上面的文章是在windows + cygwin下测试出来的,榨取得不够尽。

后来已经采用了Fedora来跑,情况显著改善:

http://www.pcinlife.com/article/cpumb/2006-09-26/1159207275d221_8.html
作者: RacingPHT    时间: 2007-5-28 13:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: RacingPHT    时间: 2007-5-28 14:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: Prescott    时间: 2007-5-28 14:27
原帖由 RacingPHT 于 2007-5-28 13:52 发表
quite misleading... :)

那么只能说, P4就是128bit ALU了。

不是,无论是FP_ADD还是FP_MUL都是64bit,所以执行一个ADDPD或者一个MULPD都需要两个cycle,而FP_ADD和FP_MUL共享一个port,所以第一个cycle issue一条ADDPD,下一个cycle issue一条MULPD,正好合适。

而Core只需要一个cycle,所以MUL单元和ADD单元被分到了两个Port,每个port都可以每cycle分别issue一条ADDPD/MULPD,所以浮点理论峰值doubel了。
作者: neeze    时间: 2007-5-28 14:40
请问一下各位大大
NetBurst还有可能借尸还魂么
作者: RacingPHT    时间: 2007-5-28 14:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: wahahayawahaha    时间: 2007-5-28 23:33
完全看不懂,拜一下楼上诸位走人:blink:
作者: shike_cuke    时间: 2007-5-29 10:07
进来学习学习..................




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4