На процессорах Intel Sandy Bridge и выше - до Broadwell, инструкция ADC занимает 2uop при декодировании и имеет latency 2.
Это та информация которую вы легко можете найти у Агнера Фога: agner.org/optimize.
Однако, эта информация не полна. Начиная с Intel Sandy Bridge Family, процессор при обработке данной команды поддерживает специальный случай, а именно:
#optimization #asm
Это та информация которую вы легко можете найти у Агнера Фога: agner.org/optimize.
Однако, эта информация не полна. Начиная с Intel Sandy Bridge Family, процессор при обработке данной команды поддерживает специальный случай, а именно:
ADC Reg64, 0
Здесь мы получим декодирование ADC как 1uop и latency 1. Факт, вообще говоря нигде не описанный и мало кому известный. Да, теперь ты знаешь больше!#optimization #asm
agner.org
Software optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X
Software optimization manuals for C++ and assembly code. Intel and AMD x86 microprocessors.
Windows, Linux, BSD, Mac OS X. 16, 32 and 64 bit systems. Detailed denoscriptions of microarchitectures.
Windows, Linux, BSD, Mac OS X. 16, 32 and 64 bit systems. Detailed denoscriptions of microarchitectures.
Вот здесь^ найдешь FAQ по замеру Latency / Throughput на Arm Cortex A53, а также, некоторые произведенные замеры, что бесспорно улучшит качество твоего ПО под мобильные платформы: +скорость, +энергоэкономность.
#optimization #arm #asm
#optimization #arm #asm
О обратной связи с автором этого канала, красивых цифрах и просто хвастовстве:
=========================
Phone: +7 987 111 1337
Автомобильный номер вида x777xx
Site: https://1337.xxx
=========================
#callback #contacts
=========================
Phone: +7 987 111 1337
Автомобильный номер вида x777xx
Site: https://1337.xxx
=========================
#callback #contacts
dynamic_cast<void*>(T)
возвращает указатель на 'Самый Производный Класс' в иерархии!#cxx #interesting
image_2019-09-18_15-24-00.png
29.1 KB
О том, почему компиляторы не так хороши, как тебе говорят^. Фиксится, кстати, заменой uint64_t на int64_t.
#optimization #asm #cxx
#optimization #asm #cxx
0x1337
image_2019-09-18_15-24-00.png
Ну и раз уж пошли такие тЁрки, вот тебе советец:
Работая с RT преобразованиями типов, обязательно проверяй генерируемый ASM код. Особенно, когда речь заходит о преобразованиях знаковых типов в беззнаковые. Интуитивно кажется что с беззнаковыми типами работать быстрее. Однако, это ловушка, которая очень круто показывает себя, например при преобразовании double->uint64_t.
#asm #cxx #missoptimization
Работая с RT преобразованиями типов, обязательно проверяй генерируемый ASM код. Особенно, когда речь заходит о преобразованиях знаковых типов в беззнаковые. Интуитивно кажется что с беззнаковыми типами работать быстрее. Однако, это ловушка, которая очень круто показывает себя, например при преобразовании double->uint64_t.
#asm #cxx #missoptimization
Да, ты ведь знаешь, что static_cast<integer_type> из double / float типа, хотя и выполняется compile-time - дает накладные расходы в run-time? Неплохие такие расходы, я бы сказал!
#cxx #optimisation
#cxx #optimisation
Табличка с замерами Latency / Throughput, которой ну очень удобно пользоваться. Кстати, информация куда более полная чем у Агнера Фога:
https://uops.info/table.html
#optimization #asm
https://uops.info/table.html
#optimization #asm
xor R, R - куда больше чем просто зануление регистра R. Дело в том, что процессор 'умный' и видя эту строчку может сделать вывод о том, что все дальнейшие действия с этим регистром не зависят от предыдущих. Другими словами, имея последовательность действий с регистром R, где каждое следующее действие зависит от предыдущего и зависит от R, процессор встретив xor R, R, делает вывод, что все то, что дальше будет происходить с R - не зависит от всего того, что было раньше и, таким образом, вместо того чтобы ждать результат прошлых вычислений, сможет начать выполнять будущие - параллельно, используя Register Renaming, Out - Of - Order Execution техники. Да, у процессора есть виртуальные регистры, к которым имеет доступ он и только он, и эти регистры он может сопоставлять с регистрами общего назначения, подменяя их.
#asm #interesting #optimization
#asm #interesting #optimization
Cortex-A53, увы не умеет в OOR execution, а вот его собрат, Cortex-A57 могЁт. Выбор, конечно очевиден, да и знать полезно.
#interesting
#interesting
Одно дело - разглагольствовать в чатиках и канале, другое - находить конкретные ошибки, весьма конкретных людей с Именем. Настоящим именем^. Ошибаться это нормально, но разве правки - не повод для радости, Приятель?
#asm #peter_cordes
#asm #peter_cordes
Ребята, как я и обещал - радую годным, авторским контентом. Увы, скидывать целиковые статьи, а точнее читать их тут - дело не из простых. Поэтому, сами статьи публикую 'где-то', а сюда скидываю ссылку. Так вот, авторский контент подъехал:
https://habr.com/ru/post/468581/
#publication #asm #cxx #optimization
https://habr.com/ru/post/468581/
#publication #asm #cxx #optimization
Хабр
Делись, рыбка, быстро и нацело
Деление — одна из самых дорогих операций в современных процессорах. За доказательством далеко ходить не нужно: Agner Fog[ 1 ] вещает, что на процессорах Intel / AMD мы легко можем получить Latency в...
Hey, dudes, here i wrote some interesting stuff about how can u do your integer divisions - faster. Pls. check this:
https://habr.com/ru/post/468581/
#publication #asm #cxx #optimization
https://habr.com/ru/post/468581/
#publication #asm #cxx #optimization
Хабр
Делись, рыбка, быстро и нацело
Деление — одна из самых дорогих операций в современных процессорах. За доказательством далеко ходить не нужно: Agner Fog[ 1 ] вещает, что на процессорах Intel / AMD мы легко можем получить Latency в...