美文网首页
处理器的猜测执行(gold_axe)

处理器的猜测执行(gold_axe)

作者: 胖达_4b7e | 来源:发表于2020-02-05 18:53 被阅读0次

https://book.douban.com/subject/27034721/

cpu的一种乱序执行

先执行if里面的内容, 再算if语句, 如果是false, 扔掉就好了

比如

public class SpeculativeLoadExample {
  
  private boolean ready = false;
  private int[] data = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };

  public void writer() {
   
    for (int i = 0; i < data.length; i++) {// 语句①(for循环语句)
      data[i] =1;
    }
    ready = true;// 语句②
  }

  public int reader() {
    int sum = 0;
    int[] snapshot;
    if (ready) {// 语句③(if语句)
      for (int datum : data) {// 语句④(for循环语句)
        sum += datum;// 语句⑤
      }

    }
    return sum;
  }
}

里面

    if (ready) {// 语句③(if语句)
      for (int datum : data) {// 语句④(for循环语句)
        sum += datum;// 语句⑤
      }
     }

sum可能会先算好(大不了ready是false不成立,就浪费一下白算)

如果是多线程执行, 一个线程执行writer, 另一个线程同时执行reader,

原来的目的是, write好了 把ready改成 true 以后, reader才可以执行里面的sum求和,
但是 因为猜测执行, 先算了sum求和
这样reader就返回了一个不符合原本预期的sum

相关文章

  • 处理器的猜测执行(gold_axe)

    https://book.douban.com/subject/27034721/ cpu的一种乱序执行 先执行i...

  • 进程

    定义 正在执行的程序 正在计算机上执行的程序实例。 能分配给处理器并由处理器执行的实体。 包含元素 标识符 状态 ...

  • 浅谈ARMv7-A协处理器CP15

    协处理器,顾名思义就是协助型处理器,主要协助做一些主处理器无法执行或者执行效率不佳的事情,比如浮点、图像、音频处理...

  • nginx与php-fpm

    进程 进程是什么?进程是正在执行的程序;进程是正在计算机上执行的程序实例;进程是能分配给处理器并由处理器执行的实体...

  • 05_jmeter之BeanShell PreProcessor

    前置处理器:BeanShell PreProcessor前置处理器: 在请求发送之前执行BeanShell Pre...

  • ARM体系结构与汇编指令

    ARM体系结构 ARMnTDMI ARM处理器状态 ARM状态:32位,处理器执行字方式的ARM指令,处理器在系统...

  • Jemeter预处理器元素

    预处理器元素在采样器发出请求之前执行,如果预处理器附加到采样器元素,那么它将在该采样器元素运行之前执行。预处理器元...

  • 操作系统-进程

    1.1进程的定义(操作系统71页) 一个正在执行的程序 一个正在计算机执行的程序实例 能分配给处理器并由处理器执行...

  • Bean的后置处理器

    这个处理器在 set注入完成之后执行

  • 指令

    C预处理器在程序执行之前查看程序(故称为预处理器),根据程序中的预处理器指令,预处理器把符号缩写替换成其表示的内容...

网友评论

      本文标题:处理器的猜测执行(gold_axe)

      本文链接:https://www.haomeiwen.com/subject/kjxexhtx.html