POPPUR爱换

标题: [纯技术]流水线长度的测试 可能还是不可能? [打印本页]

作者: hopetoknow    时间: 2006-12-17 22:35
标题: [纯技术]流水线长度的测试 可能还是不可能?
以前用一个含有大量不可预测分支汇编程序测试,其利用分支错误开销的原理,可以显示相同体系结构的长流水线的U,会有更高消耗。 也由此可以确定流水线长度级别。

以相同原理,但是以酷睿2的14级流水线为基准, 来测试其它U的大致相当的流水线长度。 是什么结果呢? 准确性如何?

纯粹技术探索,请各位无阵营之见,踊跃测试。 注意如果出现结果特不正常,估计是某双核,则因设置在单核模式下测试,但好像桌面双核U一般没有遇上问题。

源代码如下可供编译(为便于大众测试,也有编译好的测试程序), 如果怕exe有问题,能不能请管理员帮忙编译出exe,给各位使用。

请各位有P3,PM,CM,Yonah,P4C,P4E,K7,K8等等,都来给出测试结果。   (先预测下:90%的精度还是有的)

[ 本帖最后由 hopetoknow 于 2006-12-17 22:36 编辑 ]
作者: hopetoknow    时间: 2006-12-17 22:38
先给个酷睿2的结果,示范一下
Ratio=14.02
Pipeline=14 stages
作者: hopetoknow    时间: 2006-12-17 22:41
//源代码
#include "stdio.h"
#include "time.h"

void main(void)
{
        unsigned int r_eax0, r_edx0, r_eax2, r_edx2, clk;
        double v0, v2;

        printf("Pipeline test starts, please waiting for ......n");

        _asm{
                rdtsc
                mov r_eax0,eax
                mov r_edx0,edx
        }

        clk = clock();
        _asm
        {       
                mov ecx,2*970000
                mov edi,211309892;
                mov edx,738904833;
                mov eax,23459;
                mov ebx,586909;
L1:

L1a:
                sub eax,ebx;               
                xor edx,eax;
                jpe L1a;

                add edi,edx;
                xor ebx,edi;
                jpe L1a;

L2a:
                sub eax,ebx;               
                xor edx,eax;
                jpe L2a;

                add edi,edx;
                xor ebx,edi;
                jpe L1a;

L3a:
                sub eax,ebx;               
                xor edx,eax;
                jpe L3a;

                add edi,edx;
                xor ebx,edi;
                jpe L1a;

L4a:
                sub eax,ebx;               
                xor edx,eax;
                jpe L4a;

                add edi,edx;
                xor ebx,edi;
                jpe L1a;

L5a:
                sub eax,ebx;               
                xor edx,eax;
                jpe L5a;

                add edi,edx;
                xor ebx,edi;
                jpe L1a;

L6a:
                sub eax,ebx;               
                xor edx,eax;
                jpe L6a;

                add edi,edx;
                xor ebx,edi;
                jpe L1a;

                dec ecx;
                jnz L1;
        }
        clk=(clock()-clk);

        _asm{
                rdtsc
                mov r_eax2,eax
                mov r_edx2,edx
        }

        v0 = (double) r_eax0 + ((double) r_edx0 ) * 4294967296.0;
        v2 = (double) r_eax2 + ((double) r_edx2 ) * 4294967296.0;
       

        printf("Time = %5.3f s, %gMHz, Ratio = %gnn",(float)(clk)/1000.0,
                (float)(v2 - v0) /(float)(clk)/1000.0,
                (v2 - v0)/8520000000.0 * 14.0);

        printf("Pipeline = %.2g stagesnTest ends. Press ENTER to exit.", (v2 - v0)/8520000000.0 * 14.0);
        getchar();
}
作者: potomac    时间: 2006-12-17 22:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 自然之道    时间: 2006-12-17 23:05
原帖由 potomac 于 2006-12-17 22:45 发表
:p w00t) :lol:

老P4么?
作者: gjxz    时间: 2006-12-17 23:16
Time=3.953S.Ratio=12.963.pipeline=13
PM760
作者: hopetoknow    时间: 2006-12-17 23:18
对,可给出Ratio,这个技术意义最大了

测试时间很短,  多测几次,取最好的一次。后台程序最好也关了。
作者: potomac    时间: 2006-12-17 23:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: itany    时间: 2006-12-17 23:34
Pipeline test starts, please waiting for ......
Time = 4.578 s, 1867.51MHz, Ratio = 14.0484

Pipeline = 14 stages
Test ends. Press ENTER to exit.


后台没关尽,就是把漂着Flash的IE和QQ关了。
很准确啊

不知道上边PM怎么不准呢。难道是后台程序开着造成的?
作者: Prescott    时间: 2006-12-17 23:56
如果利用Performance counter采集一下branch predict miss rate,应该能获得更准确的结果 :p
作者: hopetoknow    时间: 2006-12-17 23:56
是一种相对的对比测试。 不一定是绝对等于流水线长度。

多测几次,关后台, 取Ratio最低时的数据,就行了。
作者: Edison    时间: 2006-12-18 00:22
我的Prescott在挂着msn和杀毒/防火墙的情况下测试出的是29。

Pipeline test starts, please waiting for ......
Time = 4.734 s, 3734.66MHz, Ratio = 29.0514

Pipeline = 29 stages
作者: jaguard    时间: 2006-12-18 00:33
................某双核

[ 本帖最后由 jaguard 于 2006-12-18 01:53 编辑 ]
作者: 风聆夜语    时间: 2006-12-18 00:37
崇拜这种牛人...
作者: delphi5-10    时间: 2006-12-18 00:49
Turion64 MT-28
-----------------------
Pipeline test starts, please waiting for ......
Time = 4.937 s, 1596.56MHz, Ratio = 12.952

Pipeline = 13 stages
Test ends. Press ENTER to exit.
作者: lzy24    时间: 2006-12-18 11:31
00年流行的经典U来也:p
作者: hopetoknow    时间: 2006-12-18 11:32
原帖由 Prescott 于 2006-12-17 23:56 发表
如果利用Performance counter采集一下branch predict miss rate,应该能获得更准确的结果 :p

好的, Vtune过了, 各种U大约都是50.x%。 还比较均衡

程序指令构成是 简单ALU指令 66.5x%, 剩下的是Branch。大约是2:1。
一条ALU耗时1或0.5时钟,但是一个错误Branch十几以上

耗时构成:错误Branch指令、正确的Branch指令、 ALU指令
错误Branch指令耗时,占大部分。
作者: RacingPHT    时间: 2006-12-18 12:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: 阿蓝2代    时间: 2006-12-18 13:20
提示: 作者被禁止或删除 内容自动屏蔽
作者: Illuminati    时间: 2006-12-18 13:25
PM 测成 13 级不无道理,本来就比 P3 多了 MicroOps Fusion stage
作者: itany    时间: 2006-12-18 13:33
原帖由 Illuminati 于 2006-12-18 13:25 发表
PM 测成 13 级不无道理,本来就比 P3 多了 MicroOps Fusion stage


我怎么记得P3是10级,而PM是12级呢?
请I大稍微详细的指教一下
作者: Illuminati    时间: 2006-12-18 13:35
有用 P3 的么,贴一个上来学习一下:huh:
作者: jheng0    时间: 2006-12-18 13:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: star_wrx    时间: 2006-12-18 15:06
牛人啊
进来瞻仰一下子
作者: itany    时间: 2006-12-18 19:03
原帖由 Illuminati 于 2006-12-18 13:35 发表
有用 P3 的么,贴一个上来学习一下:huh:


我转了一大圈,好不容易找到一个还存活的P3

Pipeline test starts, please waiting for ......
Time = 7.961 s, 801.942MHz, Ratio = 10.4906

Pipeline = 10 stages
Test ends. Press ENTER to exit.

作者: dsawdsaw    时间: 2006-12-19 08:51
prescott

.....:huh:
作者: Ephyer    时间: 2006-12-19 09:09
2号机上某神U ...图钉1.4@1.73G

[ 本帖最后由 Ephyer 于 2006-12-19 09:10 编辑 ]
作者: sharptime    时间: 2006-12-19 09:18
Pipeline = 12 stages

Athlon XP 1700+

发现以前本科时候学的C全忘光光了
作者: cool_exorcist    时间: 2006-12-19 09:47
Duron 1.1G Mrogan核心

Pipeline = 12 Stages

开QQ和Maxthon变13,再开卡巴变14
作者: Illuminati    时间: 2006-12-19 11:24
AMD X2 不是有 rdtsc bug 么,测到 bug 出来的时候,一下流水线级数成了负的了 w00t)
作者: 阿蓝2代    时间: 2006-12-19 11:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: Illuminati    时间: 2006-12-19 11:26
说到这个 AMD dual core optimizer 就来气

我也不知道咋吃饱了撑得,装了一下 AMD 出的这个补丁,原本不卡,变卡了,前天重装了系统才弄好! :mad:
作者: RacingPHT    时间: 2006-12-19 11:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: jaguard    时间: 2006-12-19 17:41
原帖由 Illuminati 于 2006-12-19 11:24 发表
AMD X2 不是有 rdtsc bug 么,测到 bug 出来的时候,一下流水线级数成了负的了 w00t)

我的测试根本没关核心,就是双核测试的,连测了3次
作者: hopetoknow    时间: 2006-12-19 19:44
前面的结果显示 一般误差在10%内。  流水线短的U,大约有1级的误差

对于短流水线,其实用这个测试,也许区别会更大一点?  近似扣除相同数量的ALU和100%正确Branch。
(只是近似)看看结果如何?

就是不知道某双核是否有特效? 如果有, 可用单核模式测试。

源码和exe如下:
结果,请给出Ratio1和Ratio2 (分别代表不扣除和扣除)
作者: Illuminati    时间: 2006-12-19 19:48
13.9998

14.0047


Conroe
作者: jaguard    时间: 2006-12-19 19:54
某双核,还是没关核心测试,忙着
作者: 飞鸟真    时间: 2006-12-19 20:06
楼上都是什么烂u,我的31条:p
作者: Illuminati    时间: 2006-12-19 20:10
原帖由 飞鸟真 于 2006-12-19 20:06 发表
楼上都是什么烂u,我的31条:p


赛扬宰w00t)
作者: 飞鸟真    时间: 2006-12-19 20:25
原帖由 Illuminati 于 2006-12-19 20:10 发表


赛扬宰w00t)


是笨死 ,第一边其实是30,然后再测都是31:lol:
作者: hopetoknow    时间: 2006-12-19 20:49
原帖由 飞鸟真 于 2006-12-19 20:25 发表


是笨死 ,第一边其实是30,然后再测都是31:lol:

是哪个测试? 是原br还是 第2个b2r?
作者: 飞鸟真    时间: 2006-12-19 21:02
原帖由 hopetoknow 于 2006-12-19 20:49 发表

是哪个测试? 是原br还是 第2个b2r?


原br
作者: hopetoknow    时间: 2006-12-19 22:38
可以说下原br的结果了:

测试结果主要出现了以下图示情况, 基本按照流水线长短变化, 也基本接近真实的流水线长度。
原因是程序中的指令并非全是错误的Branch。所以误差主要是由br程序中ALU指令和正确Branch分成分带来的。

对于P3/K7/K8/PM/C2D等,它们的ALU指令延迟是一样的, 但是 正确Branch 和错误的Branch 就不一定了。而P4的ALU延迟要小一倍。
作者: hopetoknow    时间: 2006-12-19 22:43
对于短流水线间距过近的现象, b2r采用"近似"抵消, K8的测试结果为12,看上去是区别出2级的差异了。

但是PM、K7和P3等,还没有结果,还有待验证。
作者: ernme64    时间: 2006-12-22 19:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: hopetoknow    时间: 2006-12-22 20:01
原帖由 iXFXi 于 2006-12-22 19:07 发表
K7闪龙
Pipeline test starts, please waiting for ......
Time = 4.156 s, 1803.85MHz, Ratio = 12.3187
Pipeline = 12 stages(_(
欢迎加偶的qq群34352593

b2r的结果?
作者: 铁血烈鹰    时间: 2006-12-22 21:52
原帖由 ernme64 于 2006-12-22 19:57 发表
我的k8 闪龙  br 总是15  ??

我也是15,还测出过一次17
作者: jackyangel    时间: 2006-12-22 22:15
xp 3200 >_<
作者: hopetoknow    时间: 2006-12-22 23:15
SP再测测b2r看看。

b2r在上一页可下载的。
作者: ernme64    时间: 2006-12-22 23:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: weiky    时间: 2006-12-24 01:45
- -5555555
P4E 30条。哎。。。。。
作者: cyberbass    时间: 2006-12-25 10:29
标题: P3 来了
如题.P3-S 1.4  的测试结果.
作者: jhj9    时间: 2006-12-25 10:52
这个测试有什么意义吗?
作者: itany    时间: 2006-12-25 11:09
原帖由 jhj9 于 2006-12-25 10:52 发表
这个测试有什么意义吗?


好不容易出来一个技术贴,不管有没有实际意义,都要支持
作者: cyberbass    时间: 2006-12-25 12:25
标题: P3 的B2R
如题.好象有点问题.
作者: cscscs2    时间: 2006-12-25 16:29
Pipeline test starts, please waiting for
Time = 4.306 s, 1472.53MHz, Ratio = 10.41

Pipeline = 10 stages
Test ends. Press ENTER to exit.
图拉丁1.1@1.47
作者: squll    时间: 2006-12-25 18:45
P4C   :a)




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