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 в...
Однооперандная команда x86 / 64 : {I}MUL{X} R32 / R64 имеет разный latency[3;4], хотя Агнер Фог и рапортует о том, что latency у этой команды постоянен и всегда равен 4 - он ошибается:
Если после команды умножения данной выше мы обращаемся к регистру содержащему младшие биты результата, то latency будет 3, а если обращаемся к старшим - 4.
Речь идет, конечно, о поколении процессоров Intel Sandy Bridge и выше.
#asm #optimization #interesting
Если после команды умножения данной выше мы обращаемся к регистру содержащему младшие биты результата, то latency будет 3, а если обращаемся к старшим - 4.
Речь идет, конечно, о поколении процессоров Intel Sandy Bridge и выше.
#asm #optimization #interesting
Данные в процессор загружаются из памяти. Дело это не быстрое:
https://www.7-cpu.com/
Вот тут^ выбери модель интересующего тебя процессора и посмотри, какова цена работы процессора с 'Голой' памятью. На Haswell, например, 90 clock cycles.
#measurments #ram #processor #link
https://www.7-cpu.com/
Вот тут^ выбери модель интересующего тебя процессора и посмотри, какова цена работы процессора с 'Голой' памятью. На Haswell, например, 90 clock cycles.
#measurments #ram #processor #link
Продолжая рассуждения на тему обмена данных между Процессором и Памятью:
Есть Out Of Order Execution процессор, есть кусочек кода который подгружает данные из Памяти в Кеш Процессора и как-либо обрабатывает их после, и есть код который отрабатывает ДО места где эти данные загружаются / используются.
Из поста выше мы знаем, что обмен данными между Памятью и Процессором - долог: если на момент пользования обмениваемыми данными, в Кеше Процессора их нету - работа встанет. Процессор, конечно, не дурак и просматривая Фреймы наперед, начнет загрузку данных в Кеш еще до того как они реально понадобятся, параллельно выполняя команды идущие ДО. То есть я к чему: нужно писать код так, чтобы до Работы с Памятью можно было сделать какую-либо полезную Память-Независимую работу, на фоне выполнения которой и будет происходить опережающая выгрузка данных из Памяти.
#memory #cache #prefetching
Есть Out Of Order Execution процессор, есть кусочек кода который подгружает данные из Памяти в Кеш Процессора и как-либо обрабатывает их после, и есть код который отрабатывает ДО места где эти данные загружаются / используются.
Из поста выше мы знаем, что обмен данными между Памятью и Процессором - долог: если на момент пользования обмениваемыми данными, в Кеше Процессора их нету - работа встанет. Процессор, конечно, не дурак и просматривая Фреймы наперед, начнет загрузку данных в Кеш еще до того как они реально понадобятся, параллельно выполняя команды идущие ДО. То есть я к чему: нужно писать код так, чтобы до Работы с Памятью можно было сделать какую-либо полезную Память-Независимую работу, на фоне выполнения которой и будет происходить опережающая выгрузка данных из Памяти.
#memory #cache #prefetching
Также, не забывай, что Кеш в который недавно были загружены нужные данные - Горячий, а кеш в котором этих данных нет - Холодный. И все тесты, бенчмарки и прочее-прочее, лучше проводить на Холодный Желудок, прочищая его от вызова к вызову.
#terminology #cache
#terminology #cache
image_2019-09-27_16-29-22.png
96.1 KB
Смотри, какие выводы можно сделать из таблички выше:
Моя x64 программа написанная на C++, работает на Windows x64 медленнее чем на Nix, MacOS потому что...:
Внутри функции мне нужно использовать больше 7ми регистров общего назначения, но Microsoft Call ABI требует, чтобы все что свыше этого числа - сохранялось в стек, а затем, восстанавливалось обратно. Linux / MacOS Call ABI имеют бОльшую границу, позволяя использовать больше регистров. Выше, на картинке, пример - сравни количество строк кода.
#asm #performance
Моя x64 программа написанная на C++, работает на Windows x64 медленнее чем на Nix, MacOS потому что...:
Внутри функции мне нужно использовать больше 7ми регистров общего назначения, но Microsoft Call ABI требует, чтобы все что свыше этого числа - сохранялось в стек, а затем, восстанавливалось обратно. Linux / MacOS Call ABI имеют бОльшую границу, позволяя использовать больше регистров. Выше, на картинке, пример - сравни количество строк кода.
#asm #performance
Новое, не всегда лучше старого и подтверждение тому, команды ассемблера SHLD / SHRD :
На процессорах Intel Haswell и выше - latency 3, однако на процессорах Intel Sandy Bridge и до Haswell - latency этой команды 1.
#interesting #asm
На процессорах Intel Haswell и выше - latency 3, однако на процессорах Intel Sandy Bridge и до Haswell - latency этой команды 1.
#interesting #asm
Привет, смотри как мне удалось получить доступ ко ВСЕМ пользовательским аккаунтам сайтов: vc.ru, dtf.ru, tjournal.ru. Это было просто и безумно скучно, но ведь было же. А вы тут о СберБанке вопли... Уверен, и с оным все было проще-некуда.
https://vc.ru/bugs/75864-your-tokens-are-my-tokens-ili-istoriya-odnoy-radio-aktivnoy-xss-na-vseh-servisah-komiteta
#noscripting #pwn
https://vc.ru/bugs/75864-your-tokens-are-my-tokens-ili-istoriya-odnoy-radio-aktivnoy-xss-na-vseh-servisah-komiteta
#noscripting #pwn
vc.ru
Your tokens are my tokens, или история одной [радио]активной XSS на всех сервисах «Комитета» — Сломалось на vc.ru
Иван Петров Сломалось 18.07.2019
Не забывай, что realloc - C / C++, при невозможности расширить текущий блок памяти, сделает копирование текущего блока памяти с раширением до нужного размера. А это, в свою очередь, может быть совсем не то, что тебе нужно. Другими словами - применимо лишь для trivially copyable типов.
Продвинутые версии STL-Like контейнеров, типа Библиотеки Facebook Folly - содержат свою реализацию класса vector, работающего со специальным аллокатором и функцией realloc, отличной по поведению от той, что предоставляет стандарт языка C:
Появляется возможность спросить у аллокатора, а может ли он расширить текущий блок памяти, и если да, то на сколько. Если нет, то, соответственно мы можем либо скопировать данные в новое место, либо переместить их. Как никак, а где-то в плане Performance, это может давать свои ощутимые плюсы.
#cxx #performance #memory #allocator
Продвинутые версии STL-Like контейнеров, типа Библиотеки Facebook Folly - содержат свою реализацию класса vector, работающего со специальным аллокатором и функцией realloc, отличной по поведению от той, что предоставляет стандарт языка C:
Появляется возможность спросить у аллокатора, а может ли он расширить текущий блок памяти, и если да, то на сколько. Если нет, то, соответственно мы можем либо скопировать данные в новое место, либо переместить их. Как никак, а где-то в плане Performance, это может давать свои ощутимые плюсы.
#cxx #performance #memory #allocator
Привет! Джем и Горячий чай уже ждут тебя:
https://habr.com/ru/post/470674/
Контент авторский, тут все по плану. Ну а утро бывает не только добрым, но и теплым, да.
#link #publication #cxx #allocator #data_structure #interesting
https://habr.com/ru/post/470674/
Контент авторский, тут все по плану. Ну а утро бывает не только добрым, но и теплым, да.
#link #publication #cxx #allocator #data_structure #interesting
Хабр
Inside The JeMalloc. Базовые Структуры Данных: Pairing Heap & Bitmap Tree
Тема Аллокаторов частенько всплывает на просторах интернета: действительно, аллокатор — эдакий краеугольный камень, сердце любого приложения. В этой серии постов я хочу в подробностях рассказать о...