Упорядочивание обращения к памяти
Задержки при доступе в память возникают в следующих случаях:
Чтение большой порции данных из памяти следует за записью малой порции по адресу из той же 32-байтной выровненной области, или в область памяти, перекрывающейся с той, откуда идет чтение.
Чтение малой порции следует за записью большой порции по другому адресу, и области памяти перекрываются. Если адреса относятся к одной 32-байтной выровненной области, а области памяти не перекрываются, то задержка не возникает.
Данные одного размера вначале записываются, затем загружаются с другого адреса; области памяти перекрываются и пересекают границу 32-байтной выровненной области.
Для предотвращения таких задержек следует:
Использовать выровненные данные одного размера в коде, который производит чтение и запись по одному и тому же адресу.
Размещать операции чтения и записи в одну и ту же область памяти как можно дальше друг от друга.