zoukankan      html  css  js  c++  java
  • Data Dependency

    https://en.wikipedia.org/wiki/Data_dependency

    (There’s some misleading expression on the flow/data dependency statement.)

    1, what is data dependency

    A data dependency in computer science is a situation in which a program statement (instruction) refers to the data of a preceding statement.

    2, Bernstein Condition

    The Bernstein Condition defines what data dependency’s logic format:

    image

    If above conditions are met, we say S2 depends on S1.

    3, types

    There’re 3 types of data dependencies: ante-dependency, flow(data) dependency and output dependency.

    Their definitions as followed:

    (1) ante-dependency

    definition: I(S1) AND O(S2), S1->S2, S1 reads a memory location before S2 writes it.

    To be more specific, S1->S2 means this is the correct order that S1 reads first before S2 writes, otherwise there may be execution error.

    This is also known as WAR, writer-after-read.

    Be aware that WAR is not an error; we should not confuse it with WAR hazard.

    WAR hazard is a ‘hazard’, and WAR is the rule that’s violated that caused the hazard. The hazard happens because the rule of WAR is not followed.

    Let’s see an example below:

          1,  B = 3

           2, A = B+1

           3, B = 7

    (2, 3) is an ante-dependency example.

    In this example, S1 is (A=B+1), and S2 is (B=7), so I(S1) targets memory B (read from B), and O(S2) also targets memory B(write to B).

    (2) flow/data dependency

    definition: O(S1) AND I(S2), S1->S2, S1 writes a memory location before S2 reads it.

    This is also named as RAW. Some people also call this true data dependency.

    Note: Statement in wikipedia is a little misleading.

    (3) output dependency

    definition: O(S1) AND O(S2), S1->S2, both write to the same memory location

    This is WAW.

    4, how to reduce data dependency

    One of the disadvantages is data dependency may hinder parallelism. One of the ways to avoid that is :

    (1) use scoreboarding to avoid RAW;

    (2) use register renaming to cover WAR and WAW.

  • 相关阅读:
    二重循环
    汇编中的大小写转换
    编译出错:must be index or base register
    [bx]和loop指令
    poj1012约瑟夫
    fenshijin
    poj3050
    抹蛋糕
    poj1190
    uuu
  • 原文地址:https://www.cnblogs.com/freshair_cnblog/p/8676178.html
Copyright © 2011-2022 走看看