Какой процессор тестировать C++11/C11 получить семантику выпуска

Я ищу процессор, который выполняет чтение/сохранение выпуска с той же семантикой, которая указана в стандартах C11/C++11.

Синхронизация процессора x86 слишком сильна, поэтому невозможно протестировать алгоритм без блокировок с использованием семантики получения/освобождения.

Похоже, то же самое относится и к процессору ARM, поскольку эта архитектура предлагает либо более сильную, либо более слабую синхронизацию чтения/сохранения. Возможно, ARMv8.3 может предложить правильную семантику, но я считаю, что на рынке нет процессоров ARMv8.3.

На каком процессоре или архитектуре я должен протестировать алгоритм без блокировки, используя семантику получения-освобождения?


person Oliv    schedule 29.08.2017    source источник
comment
Спецификации C и C++ используют абстрактную модель для памяти и ЦП. Не обязательно, чтобы существующий (старый или новый) процессор следовал этой абстрактной модели.   -  person Some programmer dude    schedule 29.08.2017
comment
Общеизвестно, что PowerPC слабо упорядочен, так что это может быть хорошей ISA для тестирования. Если возможно, было бы хорошо провести тестирование на нескольких ISA с несколькими компиляторами, потому что переупорядочение во время компиляции может выявить или скрыть проблемы. (Это больше проблема для x86, где каждое хранилище является релиз-хранилищем, и вам нужен только барьер для переупорядочивания StoreLoad. И фактические реализации x86 часто выходят за рамки официальных правил x86 с недокументированными гарантиями, чтобы избежать нарушения важного устаревшего кода ( в основном винда))   -  person Peter Cordes    schedule 29.08.2017
comment
@PeterCordes Если я нацеливаюсь на PowerPC и компилирую код с использованием атомарной операции получения/освобождения, не будет ли компилятор генерировать инструкции, которые вызывают гораздо более сильную синхронизацию памяти, чем атомарные операции получения/освобождения, потому что невозможно сгенерировать эту семантику на PowerPC?   -  person Oliv    schedule 29.08.2017
comment
Как вы сказали, ARM предлагает еще более слабую семантику. Таким образом, в такой архитектуре любая правильная реализация C11 atomics должна иметь возможность реализовать семантику acq_rel с разумными оптимизациями, которые позволят вам исследовать пути кода, которые вы никогда не наткнулись на x86.   -  person Jens Gustedt    schedule 29.08.2017
comment
@Oliv: PowerPC имеет отдельные инструкции для разных типов барьеров. ARM64 имеет фактические инструкции по сбору-загрузке и освобождению-сохранению. (включая версии LL/SC, поэтому он может реализовать mo_acq_rel). Я бы порекомендовал протестировать оба, если это возможно! (И не только симулятор/эмулятор виртуальной машины, если только это не симулятор, специально запрограммированный для имитации переупорядочения памяти.) IDK, если аппаратное обеспечение DEC Alpha все еще доступно и поддерживается современными версиями компиляторов; вы можете в конечном итоге найти ошибки компилятора.   -  person Peter Cordes    schedule 01.09.2017