· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.A&O —› копирование памяти

<< . 1 . 2 .

Посл.отвђт Сообщен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 компилируемых быстрых функций.
Но всеже не хочется цитировать Козьму Пруткова :(

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.271