Size: a a a

2019 October 03

ЕК

Евгений Красников (Jin X) in pro.asm
Замечания, дополнения лучше в личку.
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Ioann_V
Самое главное, это тесты. Их очень сложно делать грамотно. Это прям, надо точно не в инете гуглить. В инете неправильно тестируют. То лишние call ы накидают, то кеш инструкций набьют. И все такое. Ну и да, наверное на RTOS тестировать надо.
источник

I

Ioann_V in pro.asm
думаю, что штука годная, надо бы сказать.
источник

I

Ioann_V in pro.asm
но, на изучение надо время. Вечерочком отпишу. И по поводу без ветвлений, если будет что отписать, конечно.
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Там как раз про технологию замера.
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Я вообще, когда поточнее нужно, делаю примерно так:
rdtscp
push eax
push edx
push ecx
cpuid
call ebp
rdtsc
mov esi,eax
mov edi,edx
mov ebp,ecx
cpuid
pop ecx
pop edx
pop eax


Сначала запускаю код с ebp = адресу просто ret-а. Раз 10 вхолостую, потом несколько раз с замером среднего. Затем аналогично с ebp = адресу на заменяемый код. И вычитаю разницу, сравниваю номера процессоров (вернее, номера раньше, после замеров сразу).

Перед этим максимальный приоритет процесса и треда.
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Оба заменяемых кода выравнены на границу 64 байт.
источник

I

Ioann_V in pro.asm
Евгений Красников (Jin X)
Оба заменяемых кода выравнены на границу 64 байт.
да, я примерно также делаю. Внутрь передавая данные разные, разной длины, без закономерностей.
источник

I

Ioann_V in pro.asm
Вопрос к тебе, по твоей статье. Там ты пишешь о минимуме и максимуме, что взял их у Фога.
источник

I

Ioann_V in pro.asm
А скинь, где это почитать можно. Ощущение, что cmov будет быстрее.
источник

I

Ioann_V in pro.asm
Ну, на скейлейке так точно. Там он 1 cc занимает.
источник

I

Ioann_V in pro.asm
а тут еще и dep chain вырисовывается
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Ioann_V
А скинь, где это почитать можно. Ощущение, что cmov будет быстрее.
xk8.ru/agneroptasm
По словам minimum или maximum ищи. Там про вариант с cmovcc вроде тоже говорится.
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Ioann_V
да, я примерно также делаю. Внутрь передавая данные разные, разной длины, без закономерностей.
У меня вопрос по cpuid: он очень долгий. И не внесет ли он погрешность наоборот? Сдается мне, что он может выполняться разное время.
источник

ЕК

Евгений Красников (Jin X) in pro.asm
Ioann_V
Ну, на скейлейке так точно. Там он 1 cc занимает.
На какой склейке и кто он? :)
источник

I

Ioann_V in pro.asm
skylake, интел ж. А он - cmov
источник

I

Ioann_V in pro.asm
на хасвеле 2 латенси
источник

I

Ioann_V in pro.asm
ну, да он и пишет:
источник

I

Ioann_V in pro.asm
Conditional moves are not very efficient on Intel processors and not available on old
processors. Alternative implementations may be faster in some cases. The following
example gives the same result as example 9.18a.
источник

I

Ioann_V in pro.asm
на старых процах действительно это будет медленно. Но старые это те, что до SnB
источник