Выдалось время, написал макросный вариант. Уже используется SMC для ограничения цикла. После его внедрения я код стал выполнятся быстрее, потому...
а вот аттач, с первой (2,3,4,5,6) попытки не отправилось. [img] 1214971353__fscanfrm.zip
Вот значит алгоритм поиска на сдвигах. На 64Мб тратит 141мс (495мб/c). Правда код еще не "размазан" и не распараллелен, есть дополнительные...
Крис Касперски утверждает что для полноценной оптимизации нужны обе проги, Intel Compliler 7.0 (+VTune) у меня триальный закачан, правда триал...
Вот я и хочу посильнее размазать этот код по телу цикла, чтобы и 30 тактов не сильно замедлили работу остального алгоритма. Конечно 30 тактов не...
Не знаю как на других процах, но на Celeron'e со свигами есть небольшой выигрыш: 140 против 172 миллисекунд. ROR еще на 486 могла до 1 такта...
Решил переделать алгоритм поиска. Использовать только три (eax, ecx, edx) регистра для хранения множества (64 бита). Проблема попрежнему в...
Вот он момент истины, исправил все на места встало. Скорость сразу в 3 раза уменьшилась. Проглядел каюсь
S_T_A_S_ плиз кинь ссылку на PE.inc, добавил следующие команды: or esi, 1fh inc esi or edi, 1fh inc edi Хочу проверить......
Показывает 615 Mb/s . Надо посмотреть отладчиком адреса источника-назначения, если не кратны 32, проблема в известном месте. [img]...
S_T_A_S_ можешь для сравнения в memcopy мой код копирования перенести? Я надеюсь адреса источника/приемника выровнены по кэш линейкам, иначе...
S_T_A_S_> Скорости нового memread2 unrolled:2560 и prefetch: 1084 Что касается memcopy2, на Athlone пока проверить не могу, на Celeron...
Алгоритм копирования dword'ами, идеальный результат 484мс / 10 итераций по 64Мб = 1322Mb/s. Максимально достижимый наверное порядка 1490Мб/с (в...
В разогнаном до 3207 (память 266x2 = 533 = DDR4264?) выдает 3400 и 1400 mb/s соответственно.
S_T_A_S_> Насчет зависимости test мне еще не все понятно, эта инструкция флажки выставляет, а значит процессор может все последующие...
Решил с пересечением пакетных циклов бороться прежним образом: сдвигать два регистра для получения 3 последних 4-байтных слов. Пока еще не доделал...
Альтернативный вариант распараллеливания: cmp dword ptr [esi + 1], esp sete al cmp dword ptr [esi + 2], esp sete bl or ah, al...
S_T_A_S_> Это скорее всего повредит, т.к в каждом куске явная зависимость от операндов, и соответсвенно кол-во регистров роли не играет, надо...
2 > S_T_A_S_ На счет предложенного алгоритма - обязательно попробую, может будет выигрыш на редко-встречающихся-значениях. Главное чтобы...
Скриншот для 2 из 3 одновременно запущенных экземпляров memread2.exe [img] 1705223748__2.jpg
Имена участников (разделяйте запятой).