Синхронизация MIPS (ll / sc) - PullRequest
       1

Синхронизация MIPS (ll / sc)

3 голосов
/ 11 февраля 2012

Я хотел бы знать, что если при использовании ll / sc перед выполнением оператора sc произойдет смена процессора, то что будет результатом.

Например,

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

ЦП 2 ==> $ t1 = 30, $ t0 = 40

MEMORY ==> $ 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

Я не знаю, что случится с $ s0 и $ t0 после последней команды CPU 1.Будет ли $ s0 = 2 ??

1 Ответ

2 голосов
/ 12 февраля 2012

Хорошо ... Я сам нашел решение ... Поскольку в CPU произошли изменения с момента первого выполнения оператора ll на CPU1, и этот CPU2 изменяет ту же область памяти, поэтому sc в строке 5 (последняялиния) потерпит неудачу.Поэтому при сбое sc $ t0 = 0 & поскольку память не изменяется из-за сбоя sc в последней строке, поэтому $ s0 = 100

Источник: http://www.weblearn.hs -bremen.de / risse / RST / docs/MIPS/mips-isa.pdf

Считать выдержки с привязкой к нагрузке (LL) и сохранить условные (SC).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...