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

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

[复制链接]
跳转到指定楼层
1#
chungexcy 发表于 2015-11-4 14:15 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
点击数:39629|回复数: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#
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的吧。

4#
chungexcy  楼主| 发表于 2015-11-4 17:29 | 显示全部楼层
NOIP117 发表于 2015-11-4 17:11
4690K 双4.5G
52.82s 21.36fps
52.54s 21.47fps

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

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

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

simd适合于多媒体处理那一类,不是所有的应用用上了就有明显的提升的,edge在做sse的优化。游戏cpu具体在做什么我也不清楚。
7#
chungexcy  楼主| 发表于 2015-11-4 18:20 | 显示全部楼层

谢谢,看来并行上去了再加上双路,效率要低一些。用你第一个数据,估算了一下大约是对应架构4c8t的84%.
8#
chungexcy  楼主| 发表于 2015-11-4 18:23 | 显示全部楼层

谢谢测试,请问一下4遍的结果分别是多少?
9#
chungexcy  楼主| 发表于 2015-11-4 18:35 | 显示全部楼层
li2921578 发表于 2015-11-4 18:30
楼主 我的运行主频是3.5  ..

编辑格式中,你这一来变成16线程了,我又要加一列。改过来了3.6

10#
chungexcy  楼主| 发表于 2015-11-4 18:37 | 显示全部楼层

谢谢拉。4组分别是多少,直接打给我就行了,不用都截图。还有你的运行频率是4核都超频4.0g的吧。
11#
chungexcy  楼主| 发表于 2015-11-4 18:44 | 显示全部楼层
zhupilan 发表于 2015-11-4 18:40
测试平台:
CPU:I7-4710MQ
主板型号:Clevo W35xSS/370SS (我的是准系统,所以没有其他贴牌厂商的型号) ...

写了这么多,谢谢啦。

虽然频率不是很稳,不过后三次的结果应该稳定在2.9g下跑出来的吧?频率稳定的话参考价值大一些~~

12#
chungexcy  楼主| 发表于 2015-11-4 18:56 | 显示全部楼层
overthink 发表于 2015-11-4 18:42
已经在19楼更新了,是4G频率。

感觉这成绩没到我的预期,不过我还是已经把你的测试贴前面了,你跑的时候是空闲的,把全部计算资源都给这个程序了吗?

13#
chungexcy  楼主| 发表于 2015-11-4 19:02 | 显示全部楼层
sonyzhj 发表于 2015-11-4 18:53
这个没注意 取了个差不多的吧
最低有31.83吧 最高好象31.97吧
但内存只有一根8G的 测试有影响吗?

我认为内存没影响

14#
chungexcy  楼主| 发表于 2015-11-4 19:03 | 显示全部楼层
zhupilan 发表于 2015-11-4 18:55
对,后面三次的频率都稳定在2.9G左右。

我再观望一下吧,成绩有点低,另外一个i7 haswell也不到预期。

15#
chungexcy  楼主| 发表于 2015-11-4 19:05 | 显示全部楼层
overthink 发表于 2015-11-4 19:02
开了QQ和Chrome。系统里其他软件也比较多,也可能拖累了。

在WINPE上能不能跑?

只要不是虚拟机都没问题。
跑之前看看当前cpu占用几乎为0,跑的时候等一下。我把原来默认的从优先级高改成高于标准,怕你们会卡住,所以靠你们自己把资源全部让给这个程序。
16#
chungexcy  楼主| 发表于 2015-11-4 19:15 | 显示全部楼层
zhupilan 发表于 2015-11-4 19:07
我平时用电脑的时候开的软件挺多的,加上笔记本的CPU有温度和功耗等限制,或许对成绩也有影响吧。要不我 ...

没事,已经这么麻烦你了,这个架构i7已经有人在跑了,毕竟笔记本不好控制主频。后台占用也是一个变数。谢谢啦
17#
chungexcy  楼主| 发表于 2015-11-4 19:53 | 显示全部楼层
overthink 发表于 2015-11-4 19:29
把优先级设置为实时,其他程序全部关掉,成绩提高1FPS左右。

4G  4770K

修正了,谢谢啦。这张表在你们的帮助下基本完成了~~

18#
chungexcy  楼主| 发表于 2015-11-4 19:57 | 显示全部楼层
qilifan 发表于 2015-11-4 19:37
I7-3770K    主频4.3G第一次:

第二次:

加第一张表了,结果差不多后面就不重复了

19#
chungexcy  楼主| 发表于 2015-11-5 07:20 发自PCEVA移动客户端 | 显示全部楼层
gtx9 发表于 2015-11-5 07:04
为什么单核同架构同频率差这么多?

单核算上HT了?

算的,超线程带来约20%的提升
20#
chungexcy  楼主| 发表于 2015-11-5 07:57 | 显示全部楼层
fastslz 发表于 2015-11-4 22:08
包里的CPUZ 1.71 32位版搞的Win10蓝屏了一次,自己优化了一下代码
i7-4790K 睿频4.4G
...

成绩好像挺高,只是把跑完后面的那段去掉了吧。满载运行频率是正常的睿频4.2,还是拉到4.4了?

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

本版积分规则

快速回复 返回顶部