Информация об изменениях

Сообщение Re[4]: Что именно делают /volatile:ms и /volatile:iso на x86 от 06.01.2022 11:35

Изменено 06.01.2022 11:45 Alexander G

Re[4]: Что именно делают /volatile:ms и /volatile:iso на x86 ?
Здравствуйте, Евгений Музыченко, Вы писали:


ЕМ>Это лишь о чтении/записи, и только выровненных данных в пределах ширины магистрали. Разве такие операции не везде атомарны? Даже представить не могу, для чего могло бы потребоваться выполнять их иначе, чем за один цикл.


Ну вот 64битный тип на 32-битной системе нет.
Но 32битный тип на 64битной системе — да.
Это уже менее "очевидно, что везде так".

На каком-нибудь CUDA нативных атомарных операций на 16 бит нет, что мешало бы иметь 64-битную архитектуру и без 32-битных атомарных операций?

ЕМ>Это уже откровенное извращение через XMM.


Или ещё большее извращение с FPU /arch:IA32, но оно того может стоить, чтобы все операции на 64-битный атомике делать через CAS.
(Чтобы случай чтения оптимизировать; также, если верить комментарию в исходниках, чтобы 64-битный атомик мог читаться из расшаренной только-для-чтения памяти)

Жаль, для на x64 для 128битного атомика такое "извращение" не пройдёт (нет гарантий со стороны процессора, хоть и на большинстве x64 процессоров выровненный 128битный тип разрываться не будет)
Re[4]: Что именно делают /volatile:ms и /volatile:iso на x86
Здравствуйте, Евгений Музыченко, Вы писали:


ЕМ>Это лишь о чтении/записи, и только выровненных данных в пределах ширины магистрали. Разве такие операции не везде атомарны? Даже представить не могу, для чего могло бы потребоваться выполнять их иначе, чем за один цикл.


Ну вот 64битный тип на 32-битной системе нет.
Но 32битный тип на 64битной системе — да.
Это уже менее "очевидно, что везде так".

На каком-нибудь CUDA нативных атомарных операций на 16 бит нет, что мешало бы иметь 64-битную архитектуру и без 32-битных атомарных операций?

ЕМ>Это уже откровенное извращение через XMM.


Или ещё большее извращение с FPU при /arch:IA32, но оно того может стоить, чтобы не все операции на 64-битный атомике делать через CAS.
(Чтобы случай чтения оптимизировать; также, если верить комментарию в исходниках, чтобы 64-битный атомик мог читаться из расшаренной только-для-чтения памяти)

Жаль, для на x64 для 128битного атомика такое "извращение" не пройдёт (нет гарантий со стороны процессора, хоть и на большинстве x64 процессоров выровненный 128битный тип разрываться не будет)