Post Thumbnail

Автор ставит забавный эксперимент: найти самый медленный способ просуммировать массив из 2^26 целых чисел на C++, меняя только порядок доступа к элементам. Он умудряется превзойти по медлительности даже случайный доступ более чем на 30%.

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

Короче, действительно интересная статья, которая может многому научить по работе с памятью. Несмотря на нарочито комичную цель, статья служит наглядным уроком о работе кэшей, префетчеров, MMU и DRAM

Похожее

Post Thumbnail

Ода форумам

Автор статьи размышляет о закате веб-форумов и том, что мы потеряли с их уходом....

Post Thumbnail

DOOM на Cobol

Так, так, сча будут шикарные новости Ютубер с ником icitry написал полноценны...

Post Thumbnail

Глитчарт

Начнем понедельник с искусства. Кстати, я уже как-то писал про гличарт: https://...

Post Thumbnail

Детектив

Детективная история про взлом колонки Исследователь обнаружил критические уяз...