У меня вопрос по протоколу МЭСИ.
(1) Рассмотрим следующий фрагмент кода, работающий в однопроцессорной системе, реализующей протокол когерентности кэша MESI:
I1: загрузить $s1, [A] I2: загрузить $s2, [B] I3: добавить $s1, $s2, $s3 I4: сохранить $s3, [C] I5: добавить $s3, 1, $s4 I6: сохранить $s3, [A]
Предположим, что используется политика кэширования со сквозной записью. Если блок памяти A, B и C загружен (при необходимости) в два разных блока кэша (изначально пустых) на одном процессоре, заполните следующую таблицу, чтобы определить состояние кэша блоков, содержащих A, B, C, после каждого инструкция выполняется.
Мой ответ на это:
Step/State A B C
I1 E I I
I2 E E I
I3 E E I
I4 I I E
I5 I I E
I6 E I I
(2) В следующем RTL
I1: R1 <-[6]
I2: R2 <-[4]
I3: R3 <- R1 + R2
I4: [6]<- R3
I5: R4 <- R4 - 1
I6: [4]<- R4
Предположим, что используется политика кэширования со сквозной записью. Если блоки памяти 4 и 6 загружаются в два разных блока кэша (изначально пустых) на одном процессоре
Мой ответ
Step/state Block 4 Block 6
Initial I I
I1 I E
I2 E E
I3 E E
I4 I E(write miss, AOW)
I5 I E
I6 E(write miss, AOW) I
Пожалуйста, мой ответ правильный? Заранее большое спасибо.