Я пишу микротест для генерации трафика в основную память (DRAM) с использованием C++ и G++. Я знаю, что могу встроить ассемблер для создания некэшируемого доступа. Однако я хочу, чтобы это работало на нескольких системах (x86, ARM, RISC-V), и мне интересно, есть ли в g++ возможность помечать буфер памяти как некэшируемый?
Я посмотрел на malloc документацию, и, похоже, она не позволяет мне передавать какие-либо флаги, которые отмечают регион как некэшируемый (или, за исключением этого, невременный).
Я знаю таблицы страниц, по крайней мере, в ARM разрешить страницу он выделен для атрибутов кэширования. Есть ли в g++ способ портативно попытаться обойти кэш области памяти?
Подробнее здесь: https://stackoverflow.com/questions/793 ... y-accesses