|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 10, 2004 21:56:54 · Поправил: boozook S_T_A_S_ "IMHO самым быстрым будет всёже такой поиск" Честно говоря, сомнительно - не вникая в подробности, сразу видно, что основной цикл будет выполняться как минимум 5 тактов(ибо зависимости), т.е. скорость поиска меньше байта за такт(со scasb'ом наверное 1байт/такт). Можно попробовать и здесь "распараллелить", но тут и с регистрами напряг будет, да и вообще стремно как-то... но хуже от этого точно не станет ;) Зачем 2мя? одного должно хватить Имелось ввиду "одной парой команд" :) (см. картинку) CodeAnalyst. Качал как-то себе эту штуку... не найти, затерялась куда-то. А как она анализирует, только для АМД, основываясь на теории? или с любым процом может скорость меррить? |
|
|
Дата: Сен 11, 2004 01:26:25 boozook > со scasb'ом наверное 1байт/такт Это медленная команда как на intel так и на AMD (latency 4 такта) Вообще, в том моём варианте возможно и ошибки есть :) Но это самый быстрый способ поиска байта в больших объёмах памяти (+ prefetch конечно) по моим опытам. CodeAnalyst - это симулятор, так что возможно будет работать и на не-AMD процах, но я не проверял. Прога полезная, в графике показывает состояние пайпа, видно какие команды от чего зависят и какие тормозят. Кстати, порой расходится с теорией (или я просто что-то не так понимаю). Для intel есть VTune - она и по объёму больше, и не бесплатная, но я не смотрел даже.. |
|
|
Дата: Сен 11, 2004 06:44:35 хм пока меня не было стока случилось люди прежде чем что то выкладывать проверяете - некоторые коды не находят 55AAh например в таком масиве some_array db 12,35,55,55,AA,34,0A,99 и всё потоу что люди наивно пологают что заданное значение будет находится по четному смещению и потому сканируют по два слова сразу... |
|
|
Дата: Сен 11, 2004 13:50:25 "Это медленная команда" хм.. выходит строковые команды тормозят даже с префиксом повторения :( "Но это самый быстрый способ поиска байта в больших объёмах памяти (+ prefetch конечно) по моим опытам" Да, и по моим тоже быстрее выходит. Можно еще с MMX пробовать ускорить. Same Вообще-то тут люди не только код выкладывают... не мешало бы и комментарии к нему почитать |
|
|
Дата: Сен 11, 2004 23:00:25 AFAIK на PIV строковое копирование ускоряется аппаратно - по-видимому осущствляетя без превлечения ядра (ALU и т.п.) (на Athlon такого нет - там movs медленный, быстрее копировать просто "разложив эту команду на составляющие".) scasb же влияет на флаги, поэтому тут без ядра не обойтись - приходится раскладывать команду на несколько микроопераций, и выполнять уже их. Поэтому и получается, что "обычные" команды работают как правило быстрее. Здесь под "обычными" я понимаю команды, которые состоят из 1-2 микроопераций и способны за счёт этого паралелиться с другими. У AMD для таких команд применяется термин Direct Path (для первых Vector Path). У intel подобного чёткого деления нет, но всё равно можно проследить деление команд на 2 подобные группы. Всё идёт от того, что процессоры внутри имеют RISC архитектуру. Direct Path команды - это похоже те, которые имеют непосредственные RISC аналоги, а для выполнения Vector Path запускается "подпрограмма" в microcode ROM, таким образом все ресурсы процессора идут на выполнение этой одной команды, а остальные ждут. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.258 |