C语言编译器和amd兼容吗,Intel的“霸道”:深究编译器对CPU性能的影响

Intel的“霸道”:深究编译器对CPU性能的影响

2012-09-28 21:00:46     编辑:上方文Q[爆料]d5c21bddceb8f18d6ed747e695d82fd1.pngfa237b3517752e298599a26bca01f80b.png 收藏文章

4f8d98c0a77544071c6666e8504a0260.png036d7ac31131cf810b00e3e5bd91f4c2.png

编译器:CPU性能对比的另一秘诀

当前的CPU市场格局大家都有个了解,Intel从Core架构特别是进入Core i7/i5/i3之后以Tick-Tock战略连连得胜,而且在CPU架构和制造工艺上一骑绝尘,AMD这几年时间只更新了K10及Bulldozer推土机两代,后者独特的模块化设计也一言难尽,并没有达到预期目标,已经落于下风了。

如今的对比就是这样,Intel在CPU性能上大幅领先AMD,AMD只能用性价比以及APU的剑走偏锋来应对。虽然豪言CPU速度竞争已经不再重要,但是个中滋味也自在心头。

除了架构设计,CPU性能高低是不是还存在别的影响因素?一个由来已久的争论就是编译器(compiler)优化。江湖人人皆知,Intel不仅有自己的编译器,而且在针对性的优化中区分Intel系及非Intel系,并针对自家的处理器做重点优化。

2008年开始美国联邦贸易委员会在调查Intel垄断案件中就以编译器优化作为Intel不公平竞争的证据。2010年,FTC与Intel达成和解,Intel承诺编译器不再区分Intel和非Intel处理器,优化时一视同仁。

906015891ac1eda41eed9566fbdd61e0.png

Intel的编译器优化注意事项中就提到在Intel处理器上会有额外的性能提高

这是前因后果,但是具体到测试上不同的编译器又对CPU性能有多少影响呢?很少有媒体做这样的测试,不过Behardware网站出手了,他们以Core i7-2600K、AMD FX-8150以及上一代的Phenom II X4 975处理器为例对比了不同的编译器下的性能。

全文内容非常多,基础原理、SSE/AVX指令集特点、编译器优化历史等等都有涉及,这部分内容就不再翻译了,因为内容过于专业,大部分人都不是专业人士,读起来晦涩难懂,同行超能网为我们选取了其中的重点内容。

编译器有各种各样的,Behardwar的测试以使用最多的C/C++编译器作为测试对象,编译环境是微软的VS 2010 SP1、Intel的C++ Compiler XE 12.0u5以及TDM-GCC (MinGW/GCC 4.6.1)三种,

f481d95486ccdf92c778f9f7bbeb9a14.png

VS 2010 SP1

cefb89cff5a522d7e5452cc3209063c2.png

C++ Compiler XE 12.0u5

03ed8a535647430dd3c46974794bfacd.png

TDM-GCC (MinGW/GCC 4.6.1)

重要问题:AMD为什么没有自己的编译器

这个要着重写一下,Intel在CPU上有优势主要是因为他们有自己的编译器,为什么AMD没有?这倒不是说AMD不关注这个问题,因为他们主要选择了跟其他厂商或者开发组织合作。首先,AMD也参与了GCC编译器工程,而微软开发VS时也会跟AMD及Intel保持合作以便对他们的CPU作出公正(微软语)而又统一的优化支持。

另外,AMD赞助并推广了Open64编译器,它脱胎于一个编译器研究计划,后者最早是Intel赞助的、针对安腾架构所优化的编译器项目。安腾架构或多或少地应用了VLIW指令,每条指令其实包含三条指令,可以由三个超标量单元执行。它实际上超越了编译器,在安腾架构上可以选择混合哪条指令以获得最大性能,这是一个非常困难的任务。

后来,Intel不再继续这个项目了,AMD还在选择性支持部分Open64编译器,Intel只在Linux平台下才支持Open64,这就与本文无关了。

测试平台及软件说明

测试的CPU前面已经提过了,是Core i7-2600K、AMD FX-8150以及上一代的Phenom II X4 975这三颗,他们支持的指令集也不一样,适合对比,具体如下:

·Intel Core i7 2600k:Sandy Bridge架构,支持所有的SSE、AVX指令集,除了SSE4a

·AMD Phenom II X4 975:Deneb架构,支持最高SSE4a

·AMD FX-8150:(Bulldozer架构,支持所有的SSE、AVX指令集,包括SSE4a

需要说明的是SSE4a指令是AMD支持的指令,而Intel从没支持这个指令。它实际上使用的也非常少,后面的测试中只有一个例子用到了这个指令,而X4 975也不支持任何SSE 4.1或者SSE 4.2指令。

另外,SSE 4.1与SSE4a之间只有很少部分是重叠的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值