zoukankan      html  css  js  c++  java
  • 优化代码CPU层面

    今天在看《支撑处理器的技术》,其中,讲到了CPU流水线。在指令之间,如果下一条指令,需要用到上一条指令的结果,会影响到流水线的执行。书上给出了几种解决方案,一个是在指令中间插入一下无关的指令。这个可以用指令乱序实现,这里可以看出,指令乱序是确实可以提高指令运行效率。还有就是可以通过软件进行优化,代码。给出了一个例子,求数组和的例子。下面是demo

            int c = 0;
            for(int i = 0; i < N; i++){
                c = c + a[i];
            }

    这里可以看出,第一次指令c = c + a[i],这里第二个c是上一次执行的结果,有依赖。会影响到指令流水执行。这里进行了一下改造

            int c1, c2, c3, c4, c5, c6;
            for(int i = 0; i < N; i = i + 6){
                c1 = c1 + a[i];
                c2 = c2 + a[i + 1];
                //...
                c6 = c6 + a[i + 5];
            }
            c = c1 + c2 + c3 + c4 + c5 + c6;

    这样c2不依赖c1,后面以此类推,都不会造成依赖,对指令流水线不会造成影响。

  • 相关阅读:
    NET中的类型和装箱/拆箱原理
    转 C# 装箱和拆箱[整理]
    理解线程同步
    IsBackground的理解
    赛马会面试题
    FTP上传类
    FTPS加密上传
    转载WPF SDK研究 之 AppModel
    SQL Server查看错误日志存档编号及其详情
    Hive基础编程入门(一)
  • 原文地址:https://www.cnblogs.com/luckygxf/p/7087662.html
Copyright © 2011-2022 走看看