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 байтовой границе ?


Ответы (0 шт):