MIPS同步(ll / sc)

时间:2012-02-11 16:28:32

标签: synchronization mips

我想知道,如果在使用ll / sc时,在执行sc语句之前处理器发生了变化,那将是结果。

E.g。

CPU 1 ==> $ t1 = 1,$ t0 = 2

CPU 2 ==> $ t1 = 30,$ t0 = 40

记忆==> $ s0 = 99

如果我们执行这些陈述:

ll $t1, 0($s0)    # CPU 1
ll $t1, 0($s0)    # CPU 2
addi $t1, $t1, 1  # CPU 2
sc $t1, 0($s0)    # CPU 2 ($t1 = 1, $s0 = 100)
sc $t0, 0($s0)    # CPU 1

我知道执行后(纠正我,如果我错了):

CPU 2 ==> $ t1 = 1,$ t0 = 40

CPU 1 ==> $ t1 = 99

我不知道在最后一个CPU 1命令之后$ s0和$ t0会发生什么。请问$ s0 = 2 ??

1 个答案:

答案 0 :(得分:2)

好吧......我自己找到了解决方案......因为从CPU1上首次执行ll语句并且CPU2正在修改相同的内存区域时CPU发生了变化,所以sc在第5行(最后一次)线)会失败。所以当sc失败时,$ t0 = 0&由于最后一行的sc故障导致内存未被修改,因此$ s0 = 100

来源:http://www.weblearn.hs-bremen.de/risse/RST/docs/MIPS/mips-isa.pdf

读取加载链接(LL)和存储条件(SC)提取。