Друзья, я программирую высокоскоростное программное обеспечение более 20 лет и знаю практически каждый трюк в книге от микро-бенч, делая кооператив, профилирование, пользовательский режим многозадачности, хвост рекурсии, вы называете это для очень высокой производительности вещи на Linux, Windows, и многое другое.
Проблема в том, что я нахожусь в замешательстве от того, что происходит, когда несколько потоков интенсивной работы процессора подвергаются воздействию многоядерных процессоров.
Результаты производительности в микро-бенчмарках различных способов разделения даты между потоками (на разных ядрах), кажется, не поддаются логике.
Очевидно, что между ядрами существует некое "скрытое взаимодействие", которое не очевидно из моего собственного программного кода. Я слышал о кэше L1 и других проблемах, но они непрозрачны для меня.
Вопрос в том, где я могу изучить этот материал? Я ищу подробную книгу о том, как работают многоядерные процессоры, как программировать, чтобы использовать кэш памяти или другие аппаратные архитектуры, а не быть наказанным ими.
Есть какие-нибудь советы или хорошие сайты или книги? После долгих гуглений я ничего не нашел.
Искренне, Уэйн