|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Янв 28, 2004 14:06:21 · Поправил: S_T_A_S_ О. я тормоз :) Сейчас посмотрю [edited] Посмотрел. Это по большему счету общие слова об усовершенствовании MOVSD, на сколько я понял. Внутринние механизмы работы не описаны, возможно там тоже префетчинг делается и т.п. (еще меня смущает номер тома) Но померить мне не где. На athlone это точно медленнее. Так что я буду считать, что я уже ответил раньше |
|
|
Дата: Янв 28, 2004 18:59:08 вот таким кодом удалось секономить 1 такт: sub esp, 20h mov [esp+1Ch], eax mov [esp+18h], ecx mov [esp+14h], edx mov [esp+10h], ebx ;;mov [esp+0Ch], esp; за счёт этого и экономим 1 такт;(а AMD сохраняет esp?) mov [esp+08h], ebp mov [esp+04h], esi mov [esp], edi =7 тактов. 30 байтов кода; "Ваша взяла!?" но зачем засорять код изза одного такта +29-ю байтами!? ладно, возвращаясь к теме, вот такой вариант теста скорости копирования я соделал и вместе с моими данными аттачкую. ну и короче, лучше всех и по скорости и по длине кода - F3A5. давай потом твой дамп. _625848617__memcpytest.zip |
|
|
Дата: Янв 29, 2004 11:46:48 je_ А как вы определили, что те команды ^^ занимают 7 тактов? ;-) У меня, думаю, будет раза в 2 быстрее В общем-то, идея не втом, чтобы менять КАЖДУЮ pushad на такую цепочку. Идея в том, что в реальном коде можно эти самые mov [esp], edi параллелить не только друг с другом, но и с другими инструкциями. Тода и выигрыш будет. По поводу программы. Посмотрите PDF, на который я давал линк. Там есть пример, как надо правильно пользовать mmx. С вашим exe, конечно же, будут такие результаты!! Я даже к loop придираться не буду :) Мой дамп (AthlonXP / KT266A DDR ) Кстати, результат интересный :) 2137391240__rdtsc.dmp |
|
|
Дата: Янв 29, 2004 12:39:54 нда, ну с этих результатов ваш вывод насёт AMD>F3A5 правильный |
|
|
Дата: Янв 30, 2004 10:10:24 воо, этот movntq и вправду силён! 2x даёт на больших обьёмах. |
|
|
Дата: Фев 2, 2004 13:24:20 Вот я сделал кое-какую прогу для удобства тестирования Мои результаты: --------------------------- memcopy benchmark by S.T.A.S. --------------------------- CPU AuthenticAMD @ 1666 MHz Test results: copy method bytes to copy / bandwidth 16,0 Mb 1,0 Mb 64 Kb movsd: 607 Mb/sec 572 Mb/sec 430 Mb/sec mov w/GPRs: 603 Mb/sec 568 Mb/sec 431 Mb/sec mmx (8*qwords): 663 Mb/sec 620 Mb/sec 456 Mb/sec mmx/movntq: 1023 Mb/sec 852 Mb/sec 566 Mb/sec optimized mmx: 1821 Mb/sec 1335 Mb/sec n/a --------------------------- ОК --------------------------- 1265175786__memcopy2.zip |
|
|
Дата: Фев 11, 2004 03:30:08 · Поправил: S_T_A_S_ А вот интересные пезультаты дает маздай на той же машине (выше XP) н-ничего не понимаю ;-) CPU AuthenticAMD @ 1667 MHz Test results: copy method bytes to copy / bandwidth 16,0 Mb 1,0 Mb 64 Kb movsd: 686 Mb/sec 647 Mb/sec 578 Mb/sec mov w/GPRs: 684 Mb/sec 648 Mb/sec 578 Mb/sec mmx (8*qwords): 721 Mb/sec 690 Mb/sec 599 Mb/sec mmx/movntq: 1114 Mb/sec 956 Mb/sec 770 Mb/sec optimized mmx: 1535 Mb/sec 1233 Mb/sec n/a |
|
|
Дата: Фев 23, 2004 21:35:31 предлагаю всё-же: 1. определять скорость по количеству RDTSC-циклов(а не мб/сек). 2. репорт делать в файл (зачем альбомы скриншотов?) 3. не нужно priority повышать. (лучше cli-sti). 161195464__SCREEN.png |
|
|
Дата: Фев 24, 2004 08:03:26 je_ определять скорость по количеству RDTSC-циклов(а не мб/сек). Какой смысл? A1600 & A2000 имеют ОДИНАКОВУЮ скорость копирования, но в тактах будут совсем разные цифры. репорт делать в файл (зачем альбомы скриншотов?) "альбомы скриншотов" удобно смотреть. Например в оффлайн версии. К тому же я не могу посмотреть ваш png. mozilla/IE лучше cli-sti Какие прерывания в винтдосе????? Или я чего не понял :( Приоритет я повышаю для улучшения точности. Возможно это и не правильно - исходник есть выше. FASM, если надо мой инклуд PE.inc - тоже положу (пока он в разработке, поэтому не тороплюсь) 2 ALL Хотелось бы услышать замечания о предложенном способе тестирования. А так же увидеть результаты других компьютеров. |
|
|
Дата: Фев 24, 2004 10:14:35 todo: - автодетект процессора и его способность выполнять некоторые инструкции - автодетект обьема физической памяти - добавить тесты с использованием prefetch-ей - расширить диапазон тестируемых размеров блоков: как минимум все степени двойки, доступные способу копирования и обьему памяти - тестировать с различными factor-ами loop unrolling-а - тестировать различные значения prefetch schedule distance - работать при запрещенных прерываниях - показывать результаты в наглядном (графическом) виде - упихать все перечисленное в один boot sector... |
|
|
Дата: Фев 24, 2004 11:48:13 captain cobalt prefetch у меня используется в последнем варианте копирования. Даже лучший, чем Явный :) А вот все остальное.. Ну это я в 2 кб не уложусь ;-) Хотя для todo самое то! Это хороший шаг к написанию JIT компилируемых быстрых функций. Но всеже не хочется цитировать Козьму Пруткова :( |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.271 |