PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

论指令集和超线程的作用与重要性(二)x265效能对比-完成版

[复制链接]
跳转到指定楼层
1#
chungexcy 发表于 2015-11-4 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:39553|回复数:102
本帖最后由 chungexcy 于 2015-11-10 03:26 编辑

更新:非常感谢大家热心帮助和提供的测试数据,表格全部覆盖intel近十年的所有架构了,包括Core2中的迭代更新。[Core2->Skylake]

在我之前“论指令集和超线程的作用与重要性”那贴中,我谈及了FMA、AVX、SSE对于特定环境下的浮点运算有翻倍的提升,而超线程的引入能大大提高这些SIMD运算单元的使用率,通俗地说就是让计算单元不要因为其他原因而闲着。

今天我来谈谈AVX2对整数运算的加成,并用一个实际的应用的性能提升来说明。

一、简单介绍一下SIMD相关的指令集

首先提高cpu的性能主要有4个方面:IPC,频率,核心数(+超线程),以及SIMD。SIMD的意思是单个SIMD指令可以同时处理多个数据。高性能科学计算的理论极限可以简单写为IPC  x 频率 x 核心数 x SIMD,单位就是我们熟悉的GFlops。

对于32位浮点运算:例如一个SIMD为128位的SSE,就是说一次SIMD操作,可以对连续的4个浮点数做加法或乘法,如上图所示。一个SIMD为256位的AVX,可以一次做8个加法或乘法,而一个SIMD为256位的FMA,可以一次同时作8个加法+乘法。这样理论性能就能翻倍,也就是我们在我上一贴中看到Skylake能比Sandy bridge翻一倍的理论基础。

AVX/FMA是浮点运算单元,而AVX2则是将整数运算的SIMD单元由原来的128位提升到256位,大大提高了理论性能。

二、测试软件x265的介绍

先简单科普一下视频编码的一些概念。

对视频编码有点兴趣的都应该听在下载的视频文件名中注意到H264或x264这个关键字。简单解释的话,视频就是一个快递盒子,里面包了一个视频,一个或几个音频,以及可选的一些字幕。这个盒子就是我能常见的文件名后缀mp4/mkv/ts。而里面的视频现在通常使用的是一个叫做H264的文件。这个H264就是我们看到的图像画面。而x264就是编码这个H264文件的一个常用工具。一般我们拍摄过的视频,或者fraps的游戏录像,都要先经过H264编码,x264的性能直接决定了一个视频得花几个小时才能编码好,之后才能分享到视频网站去。

H265/HEVC是H264/AVC的下一代标准,今年底很快就会有商业应用4k蓝光发售,而4k蓝光的视频编码格式将从H264进化到H265。这里大家应该知道了x265就是对应H265的编码工具,现在依然在开发中,未来的应该还能有不少的性能提升空间。

同一段视频的截图示例,左边这段为 x264 10bit 96.7 KB, 右边这段为 x265 10bit 96.4 KB)

由于视频编码中有大量的整数运算,而x265前期开发刚好是Haswell发布引入AVX2的时候,自然就优先采用AVX2进行优化。等到H265普及的时候,AVX2也差不多普及了。现在的版本已经到1.8,但由于1.8版本发布不到1个月,实际性能并不如1.7的最后一个版本。我在测试中决定使用1.7-511。

测试软件是一个叫做x265 benchmark的程序,有一些评测网站对6700k是用过。但这个benchmark发布较早,内部用的是x265的1.4的版本,由于是基准测试不好更换版本。但现在这个1.7的已经比1.4有了接近40%的提升,我在测试中就换成了1.7。

三、不同架构的x265性能比较

该程序对同一段视频做4遍一样的x265编码,得出4个编码速度FPS,我以平均值为参考标准。这里我测得不多,希望大家帮我测一下其他的数据。
  1. 型号        运行频率     指令集       2线程           4线程            8线程            12线程            16+线程          数据来源ID
  2. n2910        1.6g       SSE4.2                    1.56 FPS                                                            mercuryfall
  3. qx6700       2.66g      SSSE3                     3.17 FPS                                                            Cubelia
  4. e8500        3.16g      SSE4.1     3.76 FPS                                                                           chungexcy
  5. e5540        2.8g       SSE4.2                                      8.46 FPS                                          gtboy
  6. x5677 x2     3.6g       SSE4.2                                                                      18.74 FPS (16T)   li2921578
  7. i5 2400      3.1g       AVX                       9.44 FPS                                                            Cubelia
  8. i7 2600      3.5g       AVX                                        12.41 FPS                                          chungexcy
  9. i5 3470      3.8g       AVX                      12.70 FPS                                                            mercuryfall
  10. i7 3630qm    3.2g       AVX                                        12.32 FPS                                          cdlh28
  11. e3 1230v2    3.5g       AVX                                        12.85 FPS                                          SuperbirdRIP
  12. i7 3770k     4.3g       AVX                                        16.64 FPS                                          qilifan
  13. e5 2660 x2   2.4g       AVX                                                                         22.07 FPS (24T)   847681220
  14. i5 4590r     3.0g       AVX2                     14.39 FPS                                                            chungexcy
  15. i5 4690k     4.5g       AVX2                     21.51 FPS                                                            NOIP117
  16. i7 4710hq    3.0g       AVX2                                       16.80 FPS  (est.)                                  hym_21
  17. e3 1231v3    3.6g       AVX2                                       19.75 FPS                                          Cogae
  18. i7 4770k     4.0g       AVX2                                       22.55 FPS                                          overthink
  19. i7 4790k     4.4g       AVX2                                       24.92 FPS                                          fastslz
  20. i7 5820k     3.3g       AVX2                                                        26.22 FPS                         Aillen
  21. i5 5200u     2.5g       AVX2       6.03 FPS       7.28 FPS                                                            chungexcy
  22. i7 6700k     4.9g       AVX2                                       32.65 FPS  (est.)                                  sonyzhj
复制代码

每代架构选了一些代表,换算成同频率:
  1. 型号        运行频率     指令集       2线程           4线程            8线程            12+线程
  2. n2910        1.6g       SSE4.2                   0.972 FPS
  3. qx6700       1.0g       SSSE3                    1.192 FPS
  4. e8500        1.0g       SSE4.1     1.189 FPS
  5. e5540        1.0g       SSE4.2                                     3.020 FPS
  6. x5677 x2     1.0g       SSE4.2                                                      5.206 FPS (16T)
  7. i5 2400      1.0g       AVX                      3.045 FPS
  8. i7 2600      1.0g       AVX                                        3.546 FPS
  9. i5 3470      1.0g       AVX                      3.341 FPS
  10. i7 3630qm    1.0g       AVX                                        3.850 FPS
  11. e5 2660 x2   1.0g       AVX                                                         9.196 FPS (24T)
  12. i5 4690k     1.0g       AVX2                     4.780 FPS
  13. i7 4790k     1.0g       AVX2                                       5.663 FPS
  14. i7 5820k     1.0g       AVX2                                                        7.945 FPS (12T)
  15. i5 5200u     1.0g       AVX2       2.411 FPS     2.913 FPS
  16. i7 6700k     1.0g       AVX2                                       6.664 FPS
复制代码
以此推断:Sandy Bridge超线程提升16.5%;Haswell/Broadwell超线程提升18-21%。
关于并行效率,16线程cpu利用率大约95%,24线程大约90%,36线程大约75%。双路实际表现相对于cpu使用率还再要降一些。

换算成同频率单核心:
  1. 型号        运行频率     指令集       1核心       百分比          架构                备注
  2. n2910        1.0g       SSE4.2    0.243 FPS     27.39%        Silvermont (22nm)  寨版(每核128位SIMD单元数为Core(2个)的一半)
  3. qx6700       1.0g       SSSE3     0.298 FPS     33.60%        Core 2 (65nm)      胶水4核心
  4. e8500        1.0g       SSE4.1    0.595 FPS     67.07%        Core 2 (45nm)
  5. e5540        1.0g       SSE4.2    0.757 FPS     85.16%        Nehalem
  6. i5 2400      1.0g       AVX       0.761 FPS     85.88%        Sandy Bridge
  7. i7 2600      1.0g       AVX       0.887 FPS    100.00%        Sandy Bridge
  8. i5 3470      1.0g       AVX       0.835 FPS     94.23%        Ivy Bridge
  9. i7 3630qm    1.0g       AVX       0.963 FPS    108.57%        Ivy Bridge
  10. i5 4690k     1.0g       AVX2      1.195 FPS    134.72%        Haswell
  11. i7 4790k     1.0g       AVX2      1.416 FPS    159.69%        Haswell
  12. i5 5200u     1.0g       AVX2      1.457 FPS    164.30%        Broadwell          双核推断的4核
  13. i7 6700k     1.0g       AVX2      1.666 FPS    187.92%        Skylake
复制代码

四、结论

更新:
简单来讲,由于AVX2的加成,x265 1.7的表现在Haswell/Broadwell上的编码效率比Sandy Bridge高了60-64%;Skylake比Sandy Bridge高了88%,提升非常可观。[这里没有4核i7对比,我只能估测一下,实际线程多利用率应该低一点,有了数据会更新之前的表格]。
超线程提升了21%。比之前那个神优化的浮点运算的33%提升略少。这是结论一。

结论二,新指令集平台的潜力未来是无限的。

我这里引用官方基于 1.4 版本的测试数据
Intel Core i7-2600K     DT     4     4.5     DDR3     1600     2     14.23
Intel Core i7-3770K     DT     4     4.5     DDR3     2200     2     15.02     
Intel Core i7-4790K     DT     4     4.4     DDR3     2000     2     17.73   

Haswell相对Sandy Bridge提升27%,相对Ive Bridge提升20%。

贴吧的一个贴子关于 x265 1.7 的初版的测试说明:
haswell同频同核心,性能比Ivy高36%,比SNB高42%。

而现在我发现HSW比SNB高了60%。27%->42%->60%,差距在越来越大。

这就是我说的软件优化对新版本的支持只会越来越好。从1.4到1.7,Sandy Bridge只提升了12.13%,而Broadwell提升了45.12%。任何脱离软件优化来谈硬件性能只能得到片面的结论。所以我不是很喜欢spec的测试,而是找一些有实际意义并且有心追求效率的软件来对比硬件带来的提升。



PS,Skylake上AVX2的效率优化是一个关键,有测试显示相对于Haswell,提升了14.40%。

PPS,大家帮忙测一下吧,我的数据覆盖范围不太够。http://pan.baidu.com/s/1hq8mUQo,4核haswell应该在4分钟左右。
解压后双击运行 bench_script.bat。
第一个提示地方,随便输入你的主频,比如100*35,然后回车。第二个提示,键入 2。
这个编码测试会跑同样4遍,每一遍有一个FPS的速度结果,大家记一下给我,或者取个平均值给我就好了,谢谢啦~~不一定要截图,要4组数据或者你算出平均值给我。还有CPU实际运行是保持的频率。

谢谢所有提供测试数据的坛友,我会把一些有代表性的架构的成绩加到对比表格中~~





补充内容 (2015-11-11 15:06):
i5 6600k    4.0g     21.42 FPS      from: yanfeixiang
单位性能               1.339 FPS      151.02%

补充内容 (2015-11-13 04:13):
i7 3960x    3.6g     18.55 FPS      from: satanisgod
单位性能               0.859 FPS      96.85%

补充内容 (2016-1-14 06:42):
i7 5775c    4.1g     22.52 FPS      from: cannibal2008

本帖子中包含更多资源

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

x

评分

参与人数 4代金券 +100 绝对值 +3 收起 理由
Cubelia + 1 很给力!
111alan + 1 很给力!
羽落风尘 + 1 很给力!
石头 + 100 1精,优秀

查看全部评分

2#
chungexcy  楼主| 发表于 2015-11-4 14:45 | 只看该作者
本帖最后由 chungexcy 于 2015-11-4 14:53 编辑

大家来帮忙测一下吧
@royalk @McLaren @overthink
3#
overthink 发表于 2015-11-4 15:02 | 只看该作者
回家就测试一下,单位在用Deneb没AVX
4#
royalk 发表于 2015-11-4 15:53 | 只看该作者
明天我测一下看看
5#
easybeing 发表于 2015-11-4 16:06 | 只看该作者
现在的问题是主流应用程序能在多大程度上支持这些新指令集,firefox貌似连sse都不支持,游戏情况不清楚
6#
cdlh28 发表于 2015-11-4 16:54 | 只看该作者
     型号        运行频率     指令集       2线程           4线程            8线程
i7-3630QM       3.2g          AVX                                            12.32FPS

不过笔记本上3630QM三缓是6M的,不是IVB完整的8M,可能没法完全代表IVB的水平,仅供参考下吧
7#
NOIP117 发表于 2015-11-4 17:11 | 只看该作者
4690K 双4.5G
52.82s 21.36fps
52.54s 21.47fps
52.20s 21.61fps
52.23s 21.60fps
8#
gtboy 发表于 2015-11-4 17:12 | 只看该作者
本帖最后由 gtboy 于 2015-11-4 18:13 编辑


型号:1366 e5540
频率:2.8g
指令集:没有avx啊。。。
四核8线程:8.46     8.49   8.52  8.35
三缓是8m。avx的作用还是很明显的。

本帖子中包含更多资源

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

x
9#
chungexcy  楼主| 发表于 2015-11-4 17:24 | 只看该作者
本帖最后由 chungexcy 于 2015-11-4 18:07 编辑
gtboy 发表于 2015-11-4 17:12
型号:1366 e5440
频率:2.8g
指令集:没有avx啊。。。

谢谢~~是5440吗?你的截图是5540,估计你打错了,是运行时保持睿频到2.8g的吧。

10#
chungexcy  楼主| 发表于 2015-11-4 17:29 | 只看该作者
NOIP117 发表于 2015-11-4 17:11
4690K 双4.5G
52.82s 21.36fps
52.54s 21.47fps

谢谢~~我把你的结果加到第一张表了,由于和4590r效能一致,后面就不加了。
11#
chungexcy  楼主| 发表于 2015-11-4 17:40 | 只看该作者
cdlh28 发表于 2015-11-4 16:54
型号        运行频率     指令集       2线程           4线程            8线程
i7-3630QM       3. ...

谢谢测试,数据加进去了。相比sandy bridge提升8%,符合预期。我觉得这个程序跟缓存内存影响不大。

12#
chungexcy  楼主| 发表于 2015-11-4 17:47 | 只看该作者
easybeing 发表于 2015-11-4 16:06
现在的问题是主流应用程序能在多大程度上支持这些新指令集,firefox貌似连sse都不支持,游戏情况不清楚 ...

simd适合于多媒体处理那一类,不是所有的应用用上了就有明显的提升的,edge在做sse的优化。游戏cpu具体在做什么我也不清楚。
13#
li2921578 发表于 2015-11-4 18:13 | 只看该作者
本帖最后由 li2921578 于 2015-11-4 18:21 编辑

双5677  24G内存忘记是要1到4  重新测试了下


本帖子中包含更多资源

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

x
14#
gtboy 发表于 2015-11-4 18:14 | 只看该作者
chungexcy 发表于 2015-11-4 17:24
谢谢~~是5440吗?你的截图是5540,估计你打错了,是运行时保持睿频到2.8g的吧。

...

嗯,打错了,已修正
平常是133*19
寨板,节能都没开。所以最低的12没到过。嘿嘿
15#
sonyzhj 发表于 2015-11-4 18:17 | 只看该作者
6700K 4.9G 31.92FPS


本帖子中包含更多资源

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

x
16#
chungexcy  楼主| 发表于 2015-11-4 18:20 | 只看该作者

谢谢,看来并行上去了再加上双路,效率要低一些。用你第一个数据,估算了一下大约是对应架构4c8t的84%.
17#
li2921578 发表于 2015-11-4 18:22 | 只看该作者
chungexcy 发表于 2015-11-4 18:20
谢谢,看来并行上去了再加上双路,效率要低一些。用你第一个数据,估算了一下大约是对应架构4c8t的84%.
...

忘记要4个的  我重新测试了下  
我都是开浏览器的。。
18#
chungexcy  楼主| 发表于 2015-11-4 18:23 | 只看该作者

谢谢测试,请问一下4遍的结果分别是多少?
19#
overthink 发表于 2015-11-4 18:30 | 只看该作者
本帖最后由 overthink 于 2015-11-4 18:40 编辑







本帖子中包含更多资源

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

x
20#
li2921578 发表于 2015-11-4 18:30 | 只看该作者
楼主 我的运行主频是3.5  ..   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部