![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.09.2015
Сообщений: 28
|
![]() Код:
Вопрос в том, как оптимально задействовать кэш процессора при таком чтении. Из кода видно, что либо первое поле, либо второе в любом случае придётся читать в обратном направлении. Как я понимаю, с адреса [R11] в кэш будут прочитаны сразу несколько байт на опережение, а с R12 каждый раз будет идти обращение к ОЗУ. Может есть какая-то команда, которая загрузит второе поле в кэш с самого начала? Ну, и вообще, возможно ли тут получить какой-то прирост в производительности? |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 15.04.2015
Сообщений: 30
|
![]()
В целом можно подчерпнуть в Optimizing subroutines in assembly language by Agner Fog.
ROL 16 это ведь как псевдо "bswap ax ; bswap eax ; bswap ax", тогда я вроде корректно сделал пшафл. У меня получилось лишь в 2 раза формально(читай: синтетически) ускорить через sse, набросок: Код:
Код:
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 05.09.2015
Сообщений: 28
|
![]()
О! Я тоже в эту сторону посмотрел сегодня и вот, что получилось:
Код:
Ещё немного покопался с разных статьях. Нашёл информацию о том, что данные из ОЗУ в кэш загружаются обычно пачками по 64 байта, выровненными на 64. Если так, то код из первого поста никак больше не улучшить. Там и там всё нормально кэшируется. Если второй массив весь умещается в такой выровненный на 64 блок из 64х байт, то при чтении последнего элемента массива, весь массив будет загружен в кэш. А если массив размазан на два блока, то в любом случае (для полного сравнения) придётся эти два блока загружать полностью из памяти. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывести символы в обратном порядке в оперативной памяти | Oxidous | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 12.12.2015 12:45 |
Вывод из БД в обратном порядке | Parallelogram | PHP | 10 | 22.05.2014 07:35 |
перестановка байтов в обратном порядке с++ | Niklitel | Помощь студентам | 1 | 17.03.2014 09:10 |
Столбцы в обратном порядке | Арианна | Microsoft Office Excel | 5 | 16.01.2014 06:05 |
В обратном порядке | mari.ha | Общие вопросы C/C++ | 7 | 25.12.2008 21:36 |