Как оптимизировать для двух-, четырех- и более мощных мультипроцессоров?

Друзья, я программирую высокоскоростное программное обеспечение более 20 лет и знаю практически каждый трюк в книге от микро-бенч, делая кооператив, профилирование, пользовательский режим многозадачности, хвост рекурсии, вы называете это для очень высокой производительности вещи на Linux, Windows, и многое другое.

Проблема в том, что я нахожусь в замешательстве от того, что происходит, когда несколько потоков интенсивной работы процессора подвергаются воздействию многоядерных процессоров.

Результаты производительности в микро-бенчмарках различных способов разделения даты между потоками (на разных ядрах), кажется, не поддаются логике.

Очевидно, что между ядрами существует некое "скрытое взаимодействие", которое не очевидно из моего собственного программного кода. Я слышал о кэше L1 и других проблемах, но они непрозрачны для меня.

Вопрос в том, где я могу изучить этот материал? Я ищу подробную книгу о том, как работают многоядерные процессоры, как программировать, чтобы использовать кэш памяти или другие аппаратные архитектуры, а не быть наказанным ими.

Есть какие-нибудь советы или хорошие сайты или книги? После долгих гуглений я ничего не нашел.

Искренне, Уэйн

11
задан Wayne 26 December 2011 в 04:42
поделиться