SIMD - загрузка в регистры из выравненной и не выравненной памяти
Подскажите пожалуйста, вот есть две SIMD-"функции" загружающие данные из памяти в регистры:
1)_mm_load_si128 (__m128i const* mem_addr) 2)_mm_loadu_si128 (__m128i const* mem_addr)
__m128i _mm_load_si128 (__m128i const* mem_addr):
Загружает 128-битные целочисленные данные из памяти в dst . mem_addr должен быть выровнен по 16-байтовой границе, иначе может быть сгенерировано исключение общей защиты.
.
__m128i _mm_loadu_si128 (__m128i const* mem_addr):
Загружает 128-битные целочисленные данные из памяти в dst . mem_addr не нужно выравнивать по какой-либо конкретной границе.
Я ни как не могу понять, как в данном случае влияет выравнивание источника памяти по 16-байтовой границе.
Ну то есть обе "функции" принимается на вход указатель на па память, обе функции считывают от этого указателя ровно 16 байт к себе в регистры. Что в данном контексте означает выравнивание памяти по 16 байтовой границе ?