POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
楼主: itany
打印 上一主题 下一主题

让T神高潮的A15 Geekbench的真相

[复制链接]
21#
发表于 2012-11-5 22:14 | 只看该作者

RE: 让T神高潮的A15 Geekbench的真相

Tempestglen 发表于 2012-11-5 11:11
geekbench支持超线程,我拿出来比较,就已经算是开恩了,实际软件pk,A15优势更大。

你的余下的全是废话 ...

它不兼容完全的x86指令,不会兼容windows,做再强也伤不到i5,i7
回复 支持 反对

使用道具 举报

22#
 楼主| 发表于 2013-1-28 12:12 | 只看该作者
鉴于T神又出来胡扯,我顶一下以正视听
回复 支持 反对

使用道具 举报

23#
发表于 2013-1-28 13:56 | 只看该作者
居然没有人反汇编来吐槽一下?

用objdump反汇编libgeekbench-jni.so,以Mandelbrot测试项目为例:

1. x86:

  1. 000ccb2a <_ZN10Mandelbrot6workerEi>:
  2.    ccb2a:       55                      push   %ebp
  3.    ccb2b:       89 e5                   mov    %esp,%ebp
  4.    ccb2d:       57                      push   %edi
  5.    ccb2e:       56                      push   %esi
  6.    ccb2f:       53                      push   %ebx
  7.    ccb30:       83 ec 3c                sub    $0x3c,%esp
  8.    ccb33:       8b 75 08                mov    0x8(%ebp),%esi
  9.    ccb36:       e8 86 91 f6 ff          call   35cc1 <pthread_join@plt+0x109>
  10.    ccb3b:       81 c3 01 34 17 00       add    $0x173401,%ebx
  11.    ccb41:       c7 45 e0 00 00 00 00    movl   $0x0,-0x20(%ebp)
  12.    ccb48:       c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  13.    ccb4f:       8b 46 38                mov    0x38(%esi),%eax
  14.    ccb52:       8b 4e 3c                mov    0x3c(%esi),%ecx
  15.    ccb55:       f2 0f 10 bb 4c af f8    movsd  -0x750b4(%ebx),%xmm7
  16.    ccb5c:       ff
  17.    ccb5d:       f2 0f 10 b3 e4 e6 f8    movsd  -0x7191c(%ebx),%xmm6
  18.    ccb64:       ff
  19.    ccb65:       f2 0f 2a c0             cvtsi2sd %eax,%xmm0
  20.    ccb69:       89 45 d8                mov    %eax,-0x28(%ebp)
  21.    ccb6c:       f2 0f 5e f8             divsd  %xmm0,%xmm7
  22.    ccb70:       89 4d dc                mov    %ecx,-0x24(%ebp)
  23.    ccb73:       f2 0f 2a c1             cvtsi2sd %ecx,%xmm0
  24.    ccb77:       31 c0                   xor    %eax,%eax
  25.    ccb79:       f2 0f 5e f0             divsd  %xmm0,%xmm6
  26.    ccb7d:       e9 aa 00 00 00          jmp    ccc2c <_ZN10Mandelbrot6workerEi+0x102>
  27.    ccb82:       8d b3 ec e6 f8 ff       lea    -0x71914(%ebx),%esi
  28.    ccb88:       f2 0f 2a c8             cvtsi2sd %eax,%xmm1
  29.    ccb8c:       f2 0f 59 cf             mulsd  %xmm7,%xmm1
  30.    ccb90:       f2 0f 5c 0e             subsd  (%esi),%xmm1
  31.    ccb94:       8b 75 c4                mov    -0x3c(%ebp),%esi
  32.    ccb97:       8d bb c4 aa f8 ff       lea    -0x7553c(%ebx),%edi
  33.    ccb9d:       f2 0f 2a da             cvtsi2sd %edx,%xmm3
  34.    ccba1:       0f 28 c1                movaps %xmm1,%xmm0
  35.    ccba4:       f2 0f 59 de             mulsd  %xmm6,%xmm3
  36.    ccba8:       31 c9                   xor    %ecx,%ecx
  37.    ccbaa:       f2 0f 58 1f             addsd  (%edi),%xmm3
  38.    ccbae:       0f 28 d3                movaps %xmm3,%xmm2
  39.    ccbb1:       0f 28 e2                movaps %xmm2,%xmm4
  40.    ccbb4:       f2 0f 59 c0             mulsd  %xmm0,%xmm0
  41.    ccbb8:       41                      inc    %ecx
  42.    ccbb9:       f2 0f 59 e2             mulsd  %xmm2,%xmm4
  43.    ccbbd:       f2 0f 5c c4             subsd  %xmm4,%xmm0
  44.    ccbc1:       f2 0f 58 c1             addsd  %xmm1,%xmm0
  45.    ccbc5:       0f 28 e0                movaps %xmm0,%xmm4
  46.    ccbc8:       f2 0f 58 e0             addsd  %xmm0,%xmm4
  47.    ccbcc:       f2 0f 59 d4             mulsd  %xmm4,%xmm2
  48.    ccbd0:       0f 28 e0                movaps %xmm0,%xmm4
  49.    ccbd3:       f2 0f 58 d3             addsd  %xmm3,%xmm2
  50.    ccbd7:       0f 28 ea                movaps %xmm2,%xmm5
  51.    ccbda:       f2 0f 5c e1             subsd  %xmm1,%xmm4
  52.    ccbde:       f2 0f 5c eb             subsd  %xmm3,%xmm5
  53.    ccbe2:       f2 0f 59 e4             mulsd  %xmm4,%xmm4
  54.    ccbe6:       f2 0f 59 ed             mulsd  %xmm5,%xmm5
  55.    ccbea:       8d bb f4 e6 f8 ff       lea    -0x7190c(%ebx),%edi
  56.    ccbf0:       f2 0f 58 e5             addsd  %xmm5,%xmm4
  57. ...
复制代码

2. ARMv7:

  1. 000a7f88 <_ZN10Mandelbrot6workerEi>:
  2.    a7f88:       e92d 47f0       stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
  3.    a7f8c:       ed2d 8b06       vpush   {d8-d10}
  4.    a7f90:       6c05            ldr     r5, [r0, #64]   ; 0x40
  5.    a7f92:       ee02 5a10       vmov    s4, r5
  6.    a7f96:       eeb8 7bc2       vcvt.f64.s32    d7, s4
  7.    a7f9a:       ed9f 6b3b       vldr    d6, [pc, #236]  ; a8088 <_ZN10Mandelbrot6workerEi+0x100>
  8.    a7f9e:       f8d0 8044       ldr.w   r8, [r0, #68]   ; 0x44
  9.    a7fa2:       ee02 8a90       vmov    s5, r8
  10.    a7fa6:       4604            mov     r4, r0
  11.    a7fa8:       2600            movs    r6, #0
  12.    a7faa:       2700            movs    r7, #0
  13.    a7fac:       2300            movs    r3, #0
  14.    a7fae:       ed9f 8b38       vldr    d8, [pc, #224]  ; a8090 <_ZN10Mandelbrot6workerEi+0x108>
  15.    a7fb2:       ed9f 0b39       vldr    d0, [pc, #228]  ; a8098 <_ZN10Mandelbrot6workerEi+0x110>
  16.    a7fb6:       ed9f 1b3a       vldr    d1, [pc, #232]  ; a80a0 <_ZN10Mandelbrot6workerEi+0x118>
  17.    a7fba:       ee86 ab07       vdiv.f64        d10, d6, d7
  18.    a7fbe:       ed9f 6b3a       vldr    d6, [pc, #232]  ; a80a8 <_ZN10Mandelbrot6workerEi+0x120>
  19.    a7fc2:       eeb8 7be2       vcvt.f64.s32    d7, s5
  20.    a7fc6:       ee86 9b07       vdiv.f64        d9, d6, d7
  21.    a7fca:       e03f            b.n     a804c <_ZN10Mandelbrot6workerEi+0xc4>
  22.    a7fcc:       ee06 3a90       vmov    s13, r3
  23.    a7fd0:       eeb8 5be6       vcvt.f64.s32    d5, s13
  24.    a7fd4:       2100            movs    r1, #0
  25.    a7fd6:       eeb0 7b48       vmov.f64        d7, d8
  26.    a7fda:       ee15 7b0a       vnmls.f64       d7, d5, d10
  27.    a7fde:       eeb0 5b47       vmov.f64        d5, d7
  28.    a7fe2:       ee07 2a90       vmov    s15, r2
  29.    a7fe6:       eeb8 4be7       vcvt.f64.s32    d4, s15
  30.    a7fea:       eeb0 2b40       vmov.f64        d2, d0
  31.    a7fee:       ee04 2b09       vmla.f64        d2, d4, d9
  32.    a7ff2:       eeb0 6b45       vmov.f64        d6, d5
  33.    a7ff6:       eeb0 4b42       vmov.f64        d4, d2
  34.    a7ffa:       eeb0 7b42       vmov.f64        d7, d2
  35.    a7ffe:       ee27 3b07       vmul.f64        d3, d7, d7
  36.    a8002:       3101            adds    r1, #1
  37.    a8004:       ee16 3b06       vnmls.f64       d3, d6, d6
  38.    a8008:       ee33 6b05       vadd.f64        d6, d3, d5
  39.    a800c:       ee36 3b06       vadd.f64        d3, d6, d6
  40.    a8010:       eeb0 2b44       vmov.f64        d2, d4
  41.    a8014:       ee03 2b07       vmla.f64        d2, d3, d7
  42.    a8018:       ee32 3b44       vsub.f64        d3, d2, d4
  43.    a801c:       ee23 3b03       vmul.f64        d3, d3, d3
  44.    a8020:       eeb0 7b42       vmov.f64        d7, d2
  45.    a8024:       ee36 2b45       vsub.f64        d2, d6, d5
  46.    a8028:       ee02 3b02       vmla.f64        d3, d2, d2
  47.    a802c:       eeb4 3bc1       vcmpe.f64       d3, d1
  48.    a8030:       eef1 fa10       vmrs    APSR_nzcv, fpscr
  49.    a8034:       da01            bge.n   a803a <_ZN10Mandelbrot6workerEi+0xb2>
  50.    a8036:       29ff            cmp     r1, #255        ; 0xff
  51.    a8038:       d1e1            bne.n   a7ffe <_ZN10Mandelbrot6workerEi+0x76>
  52.    a803a:       fb00 f101       mul.w   r1, r0, r1
  53.    a803e:       1876            adds    r6, r6, r1
  54.    a8040:       f147 0700       adc.w   r7, r7, #0
  55.    a8044:       3201            adds    r2, #1
  56.    a8046:       4542            cmp     r2, r8
  57. ...
复制代码

很明显:

1、这个项目,测的是fp64(不代表其它项目也是fp64)
2、x86上,用的是标量的SSE,没有矢量化
3、ARMv7上,用的是VFP,没有动用NEON(fp64也无法NEON)。


回复 支持 反对

使用道具 举报

头像被屏蔽
24#
发表于 2013-1-28 13:59 来自手机 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽
25#
发表于 2013-1-28 14:03 来自手机 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽
26#
发表于 2013-1-28 14:05 来自手机 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

27#
发表于 2013-1-28 14:05 | 只看该作者
Tempestglen 发表于 2013-1-28 13:59
惊喜看到很多坟,exynos5250的tdp不是8w了嘛,怎么没爆炸?性能也不是0啊。

GPU、CPU同时满载下CPU靠降频把功耗从4瓦多压到0.5瓦以下,性能和0也差不多





回复 支持 反对

使用道具 举报

28#
 楼主| 发表于 2013-1-28 14:06 | 只看该作者
本帖最后由 itany 于 2013-1-28 14:20 编辑
开普勒 发表于 2013-1-28 13:56
居然没有人反汇编来吐槽一下?

用objdump反汇编libgeekbench-jni.so,以Mandelbrot测试项目为例:

果然没有矢量化啊

谢谢您的反汇编! 主贴已经更新了。多谢执教!
回复 支持 反对

使用道具 举报

29#
发表于 2013-1-28 14:07 | 只看该作者
Tempestglen 发表于 2013-1-28 14:05
猪神,你家atom的sun spider被日了,哈哈。

是吗?



本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

30#
发表于 2013-1-28 14:12 | 只看该作者
itany 发表于 2013-1-28 14:06
果然没有矢量化啊

这个ARM也是标量阿,x86的SIMD效率会比NEON高很多?
回复 支持 反对

使用道具 举报

31#
 楼主| 发表于 2013-1-28 14:24 | 只看该作者
the_god_of_pig 发表于 2013-1-28 14:12
这个ARM也是标量阿,x86的SIMD效率会比NEON高很多?

呵呵,Arm家的Neon不支持双精度浮点,所以……
http://www.arm.com/zh/products/processors/technologies/neon.php
回复 支持 反对

使用道具 举报

32#
发表于 2013-1-28 14:26 | 只看该作者
the_god_of_pig 发表于 2013-1-28 14:12
这个ARM也是标量阿,x86的SIMD效率会比NEON高很多?

A15有两条流水线可以执行NEON指令(而且跟VFP共用),对fp32来说每条可以处理两个lane。但是,一部分NEON指令(例如加、乘等)可以发射到两条流水线,这部分指令的吞吐量就是4倍而latency不变。另一部分指令只能发射到其中一条流水线(例如整型转浮点),这部分指令的吞吐量就只有2倍。另外ARMv7对fp64没有NEON,只有ARMv8才支持。

ATOM的SSE性能如何没有测过,看坛里有没有x86专家能解答。
回复 支持 反对

使用道具 举报

33#
发表于 2013-1-28 14:30 | 只看该作者
另外,不要指望NEON/SSE能对性能提高多少。编译器自动矢量化的能力相当有限,只对特定的一些模式有效。一般靠程序员显式书写SIMD代码。不过很多算法实际上无法转为用SIMD实现。
回复 支持 反对

使用道具 举报

34#
发表于 2013-1-28 14:37 | 只看该作者
开普勒 发表于 2013-1-28 14:26
A15有两条流水线可以执行NEON指令(而且跟VFP共用),对fp32来说每条可以处理两个lane。但是,一部分NEON ...

多谢科普

没记错的话atom SIMD单次吞吐量是128bit,执行4个单精度,不过这是理论值,主要还是看实测NEON和SSE的效率变化
回复 支持 反对

使用道具 举报

35#
发表于 2013-1-28 14:52 | 只看该作者
似乎跨平台测试应该提供源码用户自行编译测得才比较有价值,Geekbench这种提供不同平台版本的套路水分很大,基本是想怎么搞怎么搞
回复 支持 反对

使用道具 举报

36#
发表于 2013-1-28 14:55 | 只看该作者
the_god_of_pig 发表于 2013-1-28 14:37
多谢科普

没记错的话atom SIMD单次吞吐量是128bit,执行4个单精度,不过这是理论值,主要还是看实测NE ...

微架构的东西最好用小程序实测

比较标量浮点的话,个人认为A15的效率是相当高的:两条VFP流水线+乱序发射,相当低的latency,以及与fp32一样快的fp64。
回复 支持 反对

使用道具 举报

G70 该用户已被删除
37#
发表于 2013-1-28 15:01 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

38#
发表于 2013-1-28 15:02 | 只看该作者
开普勒 发表于 2013-1-28 14:55
微架构的东西最好用小程序实测

比较标量浮点的话,个人认为A15的效率是相当高的:两条VFP流水线+乱序 ...

不过比实际性能就不能这么测了吧,至少要让带宽有压力

有64bit FP单元标量双精单精就应该一样快了吧,貌似Atom早就是这样了,ARM之前是A8时代64bit浮点还要多周期执行,A9似乎已经改了

回复 支持 反对

使用道具 举报

39#
发表于 2013-1-28 15:13 | 只看该作者
Tempestglen 发表于 2013-1-28 13:59
惊喜看到很多坟,exynos5250的tdp不是8w了嘛,怎么没爆炸?性能也不是0啊。

非要炸掉地球才算爆炸是吧?就这低能生产出来做电暖器的?
回复 支持 反对

使用道具 举报

头像被屏蔽
40#
发表于 2013-1-28 15:38 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-4 09:54

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

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