Unix smurf написал серию по Барьерам памяти ARM . DSB
- это супер-набор DMB
или, другими словами, DSB
является более ограничительным. DMB
достаточно, чтобы убедиться, что запись в x1
и x2
завершена до обновления y1
или y2
с использованием обычной памяти. То есть это достаточный заменитель барьер в вашем примере на большинстве систем ARM с DSB
, также работающими.
ОС может использовать различные свойства в таблицах MMU, и этоможет повлиять на ваши результаты. Например, при использовании графического ОЗУ или буфера некоторых сетевых устройств в качестве резервного хранилища для x1
, x2
может не потребоваться выдавать dmb
или dmb
могут потребоваться другие параметры, так как этот тип памяти может быть помещен вдругой домен.
Фактически, ОС, вероятно, может полностью подорвать эти механизмы. Это не будет фактором для большинства случаев использования, и я просто заявляю, что это будет завершено. Также возможно иметь системы AMP (асимметричные многопроцессорные), где это не будет работать. Если у вас есть система с ARMv8 и Cortex-M, например.
Ссылка: