Nano Hash - криптовалюты, майнинг, программирование

ARM Cortex-M4/7: делает ли регулярный доступ к памяти между LDREX/STREX недействительным эксклюзивный монитор

Я пытаюсь переписать раздел кода, который в настоящее время работает с отключением/включением прерываний с помощью LDREX/STREX на STM32F7 (одно ядро, микроконтроллер).

Может показаться, что вопрос простой, но после нескольких дней исследований, похоже, не было найдено окончательного ответа ни в документации ARM, ни в ответах сообщества:

Не приведет ли обычный доступ к памяти между LDREX/STREX к аннулированию исключительного состояния монитора (и, следовательно, всегда приведет к сбою STREX)?

Здравый смысл заключается в том, что он должен быть признан недействительным, но все же документация ARM не указывает регулярный доступ к памяти как один из случаев, которые делают недействительным монопольный монитор.

Дело в том, что в большинстве ситуаций работа между LDREX и STREX может производиться только в регистрах, поэтому вопрос будет не актуален, но в моем случае этого недостаточно и мне нужен доступ к памяти. Я в основном пытаюсь сделать детектор "произошло ли прерывание между этими строками?"

В мануале ST указано, что EGR - это вся память, но все же это не дает ответа на вопрос.

Раздел кода:

failed:
LDR     R2, =g_Exclusive_Var
LDREX   R0, [R2]
...
LDR     ...  ---> is this OK
STR     ...  ---> is this OK
...
STREX   R3, R0, [R2] 
CMP     R3, #0
BNE     failed  

  • Вместо этого он рассматривает любой доступ как соответствующий адресу предыдущей инструкции LDREX. 24.09.2017
  • Между монопольным чтением и монопольной записью могут быть другие неэксклюзивные передачи. 24.09.2017
  • Помимо того, что вы просто просматриваете документацию по руке (нужно сопоставить правильную версию с рассматриваемым ядром, что я мог или не мог сделать), вы можете просто попробовать. Вы пробовали свой приведенный выше код и что он произвел? то, что m7 является однопроцессорным, немного противоречит этой документации (почему вы указали M4?) 24.09.2017
  • и затем, конечно, есть логика руки и логика поставщика микросхем, которые обе вступают в игру ... так что документы руки - это не то, на чем вы останавливаетесь, и интерпретация поставщиком микросхем, тогда реализация может отличаться, поэтому вам нужно спросить их или сделать достаточно эксперименты, чтобы удовлетворить ваши требования. 24.09.2017
  • Насколько я помню, серия M рассматривает всю память как резервную гранулу. Обычный доступ не должен давать сбой strex, clrex или другой ldrex будет. С резервной гранулой размером 32 бита это означает, что это просто глобальный семафор с повторными попытками. Это, вероятно, хуже, чем swp, и, вероятно, только для совместимости кода и в остальном бесполезно на cortex-m (если резервная гранула - это вся память). 25.09.2017
  • @artlessnoise: если вам нужны гарантии задержки прерывания, ldrex/strex - это то, что вам нужно. Единственная проблема, с которой вы столкнулись бы, если бы у вас были десятки пар ldrex/strex, и также выполняли кучу вычислений между ними, увеличивая ваши шансы на повторную попытку. 04.07.2018
  • @Lou, это справедливо, но большинство людей беспокоит производительность тела ldrex/strex, а не прерывания. Тем не менее, это, безусловно, дает вариант использования, но, вероятно, не такой, как могут ожидать библиотеки Cortex-A, настроенные без блокировки. 20.07.2018
  • Может быть связано: Когда CLREX действительно нужен на ARM Cortex M7? 09.01.2021

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..