Если вы указываете / ARCH: SSE2 для MSVC, он должен предоставить вам настроенный memcpy (по крайней мере, мой делает).
В противном случае, используйте встроенные встроенные функции загрузки / хранения SSE, чтобы скопировать память большими кусками, используя устройство чтения слов Даффом, где это необходимо, чтобы иметь дело с заголовком и хвостом данных, чтобы получить их к выровненной границе. Вам также понадобится использовать встроенные функции управления кэшем, чтобы получить хорошую производительность.
Вероятно, вашим ограничивающим фактором являются пропуски кеша и пропускная способность южного моста, а не циклы процессора. Учитывая, что на шине памяти всегда будет много другого трафика, я обычно рад получить около 90% теоретической пропускной способности памяти при таких операциях.