Hotspots, FLOPS, and uOps: To-The-Metal CPU Optimization

link:

http://software.intel.com/file/34646

 

intel在gdc2011上介绍cpu架构和优化的一个paper,还介绍了avx和vtune amplifier。

 


 

底层优化在游戏开发中还是富有生命力,因为我们的确需要它们来获得高于行业水准的执行效率。

这个也是加深对计算机理解的一个重要方式。

carmack说的好:底层编程对于程序员的灵魂有好处。

一句废话:刻意强调底层很重要很牛逼或者说现在这硬件底层没用都是有待商榷的,它有什么的影响力就需要相应的工作量,没什么特别之处。

 


 

4个方面可以好好注意一下现代cpu的架构:

  • cache
  • branch prediction
  • out of order uOp scheduling
  • wide range register(sse是128bit,到avx是256bit)

除了最后一个其实和我们上学时候学的体系结构没什么不同。

 

然后一个数据很好,fetch data的时间:

  • register : 1cycle
  • L1 cache : 4cycle
  • L2 cache : 10 cycle
  • L3 cache : 40--75cycle
  • memory : 60--100ns

 


 

一些tips:

cache:

  • 注意数据结构
  • hardware prefetch

branch:

有一个branch prediction的部件

 

out of order:

降低dependency,可以让compiler产生出更具并行性的代码

scheduler模块有一些port,例子中是6个port,2个load,1个store,1个乘除法,1个加减法,一个shuffle,所以整个是围绕data dependent来进行的乱序执行。

在这种模式下,汇编指令的执行类似下面,一坨汇编分配到各个port之后,吞吐量很大:

 

wide range register部分和sse之前的思路一样的,根据不同情况选择structure of array或者array of structure。

 

 


 

latency:一个指令完成需要的时间

throughput:新指令可以issue的频率

所以可能一个指令(比如mul)完成需要很多cycle,但是在执行的过程中很多mul指令可以issue,最后的throughput还是很好的。

这个表很好:

 

Operation  Latency Throughput

+ -* rsqrt,

rcp, hadd,

min,max 3-5 1

div, sqrt 14 14

sin,cos 160-200 130

move load/store >=1 .5

dot product 12 2

 

 

 


 

avx cloth的视频挺酷的。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值