IA32平台指令优化一些使用过的有用技术

1.【短】循环展开。

    优点:1. 明显减少指令预测带来的开销

                 2.明确去掉一次错误的指令预测机会

                 3.少维护一个计数变量

    缺点:指令变长,可能因为取指时间变长而失去性能优化。

   使用:基于实际测试。一般用于短循环是有用处的。

2.指令选择:

   做法采用移位,加法减法,而最末选择乘法除法。

   一个除法的指令周期是加法的40倍。

   如欧几里德法计算最大公约数,比除法快很多。

 

3.数据相关与指令并行。

   应该给更多的机会让CPU有机会去并行执行代码。

   如

   for(i=0;i<10000;i++)  sum+= a[i]

   可以修改完

  for(i=0;i<2500;i++) 

 {

    s1 += a[i] ,s2 += a[i+1] ,s3+= a[i+2],s4 += a[i+3] ;

 }

  sum =  s1+s2+s3+s4 ;

 

4.显式优化分支预测的机会,使分支更容易预测

   比如,检查是否三个数全部为0:

   if( t1==0 && t2==0 && t3==0 )  可以修改为 :

   if( ( t1 | t2 | t3 )==0 )

   根据产生的随机数是奇还是偶来预测的话,前者每个分支都是0.5的预测正确率,很糟糕的分支预测

   后者取真的概率是0.125,取假的概率是0.875,可以很好的预测

 

 5.内存:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值