Дайте глобальной переменной собственную строку кэша - PullRequest
0 голосов
/ 02 мая 2019

Я хочу поместить статическую глобальную переменную (32-разрядное целое число) в ее собственную строку кэша в программе на Си (и я также хочу сделать это для внешней глобальной переменной). Каков наилучший способ сделать это? Должен ли я определить глобальный в структуре и дополнить структуру? Директива выравнивания игнорируется компилятором.

Это необходимо для повышения производительности, поскольку глобальная переменная используется одним потоком, а выше и ниже определены другие переменные, которые используются другими потоками на других физических ядрах. Я бы предпочел не создавать структуры, но я не уверен, как это сделать иначе. Я использую GCC 7.4.1 и компилирую для AArch64.

1 Ответ

1 голос
/ 02 мая 2019

Вы просто не можете поместить вещи в строку кэша вручную, используя только C (как я подозреваю из тегов). Обратите внимание, что некоторые переменные не могут быть помещены туда (например, переменные с модификатором volatile); не существует переносимого способа сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...