【问题标题】:RAW, WAW, and WAR dependencies not detected未检测到 RAW、WAW 和 WAR 依赖项
【发布时间】:2015-08-06 21:33:10
【问题描述】:

考虑以下汇编语言程序:

I1: Move R3, R7      /R3 ← (R7)/  
I2: Load R8, (R3)    /R8 ← Memory (R3)/
I3: Add R3, R3, 4    /R3 ← (R3) + 4/
I4: Load R9, (R3)    /R9 ← Memory (R3)/
I5: BLE R8, R9, L3   /Branch if (R9) > (R8)/ 

此程序包括 WAW、RAW 和 WAR 依赖项。显示这些。

我已经解决了这个问题:

WAW: (I3, I1, r3) -> meaning I3 is dependant on I1 regarding r3

RAW: (I2, I1, r3); (I3, I1, r3); (I4, I3, r3); (I5, I2, r8); (I5, I4, R8)

WAR: (I3, I2, R3)

但是我在网上找到了这个练习的解决方案,上面写着:

•写-写:I1,I3
•读写:I2、I3
•写-读:I1。 I2

我真的不明白他们是如何得出这个解决方案的,以及为什么它似乎缺少这么多 RAW 依赖项。哪种解决方案是正确的?我的还是他们的?

【问题讨论】:

    标签: assembly parallel-processing dependencies computer-science cpu-registers


    【解决方案1】:

    好的,在与几个了解这类事情的人交谈后,他们确认我的解决方案是正确的,而解决方案书中的那个是错误的。另外,我在网上找到了同样问题的另一种解决方案,链接如下:http://www.ida.liu.se/~TDDI03/lecture-notes/seminar-2.frm.pdf

    希望它可以帮助那些像我一样压力过大的人! :D

    【讨论】:

      【解决方案2】:

      register(intruction #, instruction #) 格式的危害是:

      • 哇:R3(1,3)
      • 战争:R3(2,3)
      • 原始:R3(1,2), R3(1,3), R3(3,4), R8(2,5), R9(4,5)

      【讨论】:

      • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
      • @MarkRotteveel:这实际上不是代码,它应该是一个项目符号列表。它只是以 register(insn#, insn#) 的形式列出每种危害的出现。是的,最好解释一下,并且可能有一些文本摘要,例如“是的,你是对的”。此外,我们已经知道以不同格式发布在问题中的相同列表是正确的;询问者发布了一个答案,并附有支持链接。 (不幸的是,虽然没有为本书提供官方勘误表。)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 2012-11-01
      • 1970-01-01
      相关资源
      最近更新 更多