Найти в Дзене
IT. Как это работает?

Кэш память процессора и "продувка" коровы

Оглавление

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

Работа с двумерными массивами

Прекрасный летний вечер собрал нескольких гиков недоучек на квартире с одной общей целью: поболтать о разном, употребить пенный напиток и сразиться по сети в стрелялку из босоногого детства. Это не три разных задачи, а одна, ибо без чего-то одного встреча теряла много смысла. На первом этапе началось обсуждение потрясающего эксперимента, описанного в журнале "Популярная механика".

Источник: https://www.popmech.ru/magazine/2017/177-issue/
Источник: https://www.popmech.ru/magazine/2017/177-issue/

Если изложить просто и коротко, то специалисты в области аэродинамики решили посмотреть какие силы действуют на рогатое животное при ветровой нагрузке. Получен весьма интересный результат: при скорости ветра около 300 км\ч со стороны головы на корову действует подъемная сила 500 Н или около 50 кг.

Сам подход к вопросу оказался настолько интересным, что повеселевшая компания тут же начала мозговой штурм с целью повторить результат. Для понимания всей серьезности ситуации нужно отметить вот что - специалисты из института аэро и гидродинамики использовали готовый пакет программ, а у парней в данный момент оказалось: 1 компьютер, 3 ноутбука, локальная сеть и 4 комплекта среды разработки с компилятором С++.

Математическая модель

Пусть специалисты бросаются тапками, но если модель не отклоняется по точности хотя бы на 10 % от реальности, то она считается точной (из лекции по "Моделированию систем"). Помня эту мантру, парни взялись за дело и в общих чертах набросали следующее...

Корова сразу была забыта, ибо под рукой не оказалось 3D модели животного, а более простые объемные фигуры описать оказалось делом не сложным. Поверхность некоторого тела представляется в виде двумерного массива высот от некоторой плоскости, на которой лежит фигура (рисунок ниже).

Модель объемного тела
Модель объемного тела

Каждый элемент в матрице m*n это высота h точки поверхности над плоскостью. С точки зрения программы это примерно вот что:

Квадратная матрица
Квадратная матрица

Шаг между точками (элементами матрицы) это 1 мм. Ветер приходит сверху под прямым углом к воображаемой плоскости и состоит из кубических миллиметров воздуха. Каждый кубический миллиметр, как и все сущее на этой планете обладает массой, а потому и инерцией. По этой причине воздух не может изменить направление своего движения моментально, на это нужна сила и время. Сила берется от давления всех соседей, идущих следом.

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

Отклонение воздуха в конкретной точке происходит по касательной к поверхности в этой точке, а школьная программа нас научила находить тангенс угла наклона касательной:

Упрощенное вычисление тангенса угла наклонной касательной к поверхности
Упрощенное вычисление тангенса угла наклонной касательной к поверхности

Что-то пошло не так

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

Размер матрицы составлял 2000*2000 элементов, что в ближайшей перспективе позволяло поместить в модель корову. Первые "продувки", как водится, начались с исправления ошибок, но потом стало ясно, что с какого-то портала в наш мир проникло НЕЧТО...

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

Кэш память это "дырявая" абстракция

Только прочитав книгу Джоуэла Спольски ответ на все вопросы был найден. Виной падения производительности стало то, что было призвано поднять эту самую производительность.

Источник: http://memesmix.net/meme/dq5b1v
Источник: http://memesmix.net/meme/dq5b1v

В 1989 году миру был представлен процессор Intel 80486. Среди процессоров для настольных компьютеров в линейке производителя он был первым, получившим кэш память размером 8 кб общую для программ и данных. Конечно же, при разработке программы использовались совсем другие процессоры, но принцип с того времени не изменился.

И так, что такое дырявость абстракции? Если человек едет за рулем, то лобовое стекло и дворники прекрасно абстрагируют его от дождливой погоды, но есть одно но... Торможение на мокрой дороге с такими же навыками, как и на сухой часто заканчивается в придорожной канаве. В этом плане стекло это абстракция с дыркой. Не всегда и не от всего оно защищает.

Кто понял в чем оказалось дело - напишите в комментариях, а ответ от ведущего этого интеллектуального казино не заставит долго ждать)

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

Также не обойдите вниманием канал на YouTube. Подписки и лайки будут приятным ответом от аудитории.

Наука
7 млн интересуются