Как я могу регистрировать неравномерные обращения к памяти на Linux/aarch64 (Cortex-a57)?Регистрация и отладка несвязанных доступов на Linux/aarch64
Я понимаю, что есть две разные вещи, связанные здесь:.
- Выбор, чтобы вызвать прерывание от центрального процессора на выровненным доступа (т.е. прерывания для выровненным доступа к памяти, которые могли бы быть поддержаны процессору в снижение производительности)
- Выбор, как обрабатывать эти прерывания в Linux (зарегистрировать их/огонь SIGBUS/мягкий эмулировать невыровненное доступа)
Моя проблема заключается в том, что во-первых, я не знаю, как управлять регистров управления ЦП из моя программа (и если я должен действительно сделать это в своем приложении для пользовательского пространства), а во-вторых, интерфейс /proc/cpu/alignment
для управления неустановленными доступом в Linux, кажется, пропал (я использую ядро 4.4.0), см. ссылку ниже.
Управления невыровненных доступов из ядра: https://www.kernel.org/doc/Documentation/arm/mem_alignment (вероятно, устарелый)
Связанные: Does AArch64 support unaligned access?
Таким образом, ядро не может установить другую обработку ошибок выравнивания для себя и для пользовательского пространства? Как вы упомянули, профилирование - это путь сюда; Мне было интересно, если понадобится более строгая проверка памяти (если это имеет смысл) –