Что подразумевается под FENCE.TSO в RISC-V ISA? - PullRequest
2 голосов
/ 22 июня 2019

Я не очень понимаю разницу между обычным FENCE в RISC-V (здесь был дан ответ: Что подразумевается под инструкцией FENCE в наборе команд RISC-V? ) и FENCE.TSO.В руководстве говорится:

Необязательная инструкция FENCE.TSO кодируется как инструкция FENCE с fm = 1000, предшественник = RW и преемник = RW.FENCE.TSO упорядочивает все операции загрузки в своем наборе предшественников перед всеми операциями с памятью в своем наборе преемников, и все операции сохранения в своем наборе предшественников перед всеми операциями хранения в своем наборе преемников. Это оставляет операции хранения без AMO в предшественнике FENCE.TSO.набор неупорядоченный с загрузками без AMO в его наборе преемника.

Хорошо, так вот мое предположение.Я просто покажу свой набросок из того, что понял.

Существует два набора (включая инструкции), которые разделяются инструкцией FENCE, а именно набор предшественников и набор преемников.

Load Operation 1
Load Operation 2
Load Operation 3
Store Operation 1
Store Operation 2
Store Operation 3
**FENCE.TSO**
Memory Operation 1
Memory Operation 2
Memory Operation 3
Store Operation 4
Store Operation 5
Store Operation 6

Вот как я это понимаю.Но меня все еще смущает предложение Это оставляет операции хранения без AMO в наборе предшественников FENCE.TSO неупорядоченными с нагрузками без AMO в его наборе преемников. Что такое загрузки без AMO и без AMOоперации с хранилищем?

Хорошо, AMO, по-видимому, означает «Операция с атомарной памятью».Тем не менее, я задаюсь вопросом, почему я не могу просто использовать «нормальный» ЗАБОР.

...