Понятно, что после такой замены зависимых команд не стало больше, однако время работы чуть-чуть выросло.
Выходит, что у нас не остается времени на перенос данных из MMX-регистров в обычные для формирования адреса.
Затем развернул цикл в два раза и использовал в 2 раза большую таблицу (16x256 значений). С учетом времени на перенос данных, получил примерно ту же скорость на E6850, что и без MMX. Поэтому отказался от этой затеи.
Использование MMX-инструкций для вычисления CRC64.
Была у меня такая мысль. Для проверки поставил 2 эксперимента.
Сначала попробовал заменить пары команд вида:
на одну:
где N=0,1,2,3,4,5,6,7 или N=0,1,0,1,0,1,0,1
Понятно, что после такой замены зависимых команд не стало больше, однако время работы чуть-чуть выросло.
Выходит, что у нас не остается времени на перенос данных из MMX-регистров в обычные для формирования адреса.
Затем развернул цикл в два раза и использовал в 2 раза большую таблицу (16x256 значений). С учетом времени на перенос данных, получил примерно ту же скорость на E6850, что и без MMX. Поэтому отказался от этой затеи.