Полностью оптимизированный memcpy/memmove для Core 2 или архитектуры Core i7?

Оказывается, API вернет ошибку неверного запроса, если запрос на извлечение не может быть объединен из-за конфликтов.

Насколько я могу видеть, это поведение недокументировано.

10
задан 5 March 2009 в 01:37
поделиться

3 ответа

При определении/ARCH:SSE2 к MSVC, он должен предоставить Вам настроенный memcpy (по крайней мере, мой делает).

При сбое этого используйте выровненную загрузку и хранение SSE intrinsics сами для копирования памяти в больших блоках, используя Устройство Вареного пудинга чтений слова в случае необходимости для контакта с головой и хвостом данных для получения его к выровненной границе. Необходимо будет использовать управление кэшем intrinsics также для получения хорошей производительности.

Вашим ограничивающим фактором являются, вероятно, неудачные обращения в кэш и пропускная способность южного моста, а не циклы ЦП. Учитывая, что там всегда будет большим другим трафиком в шине памяти, я обычно рад добраться приблизительно до 90% теоретической пропускной способности пропускной способности памяти в таких операциях.

6
ответ дан 3 December 2019 в 22:39
поделиться

При измерении пропускной способности Вы принимали во внимание, что memcpy был и чтением и записью, таким образом, 3 ГБ/с скопированной памяти - на самом деле 6 ГБ/с пропускной способности?

Помните, пропускная способность является теоретическим максимумом - использование реального мира будет намного ниже. Например, одно отсутствие страницы и Ваша пропускная способность спадут до МБ/с.

memcpy/memmove являются компилятором intrinsics и будут обычно встраиваться представителю movsd (или соответствующие инструкции SSE, если Ваш компилятор может предназначаться для этого). Может быть невозможно улучшить codegen по этому, так как современный ЦП обработает инструкции представителя как это очень, очень хорошо.

7
ответ дан 3 December 2019 в 22:39
поделиться

Вы могли записать свое собственное. Попытаться использовать оптимизирующий компилятор Intel для прямого предназначения для архитектуры?

Intel также производит что-то названное VTune (компилятор и независимый от языка) для оптимизации приложений.

Вот статья об оптимизации игрового механизма.

2
ответ дан 3 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: