News Grower

Независимое покрытие AI, стартапов и технологий.

Лишние вычисления

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

Лишние вычисления

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

Связанные теги

Компании и люди

Линия сюжета

Продолжить следить за темой

Переходите к связанным материалам, страницам сущностей и активным линиям сюжета.

Когда UI-kit начинает дрейфовать: плагин для WebStorm против поломок React-контрактов

Когда UI-kit начинает дрейфовать: плагин для WebStorm против поломок React-контрактов

В любом зрелом фронтенде проблема редко в том, чтобы написать еще один Button.Проблема начинается позже. Когда у компонента уже есть десятки использований, Storybook, типы, обвя...

Неразработчик + чат с ИИ + Android Studio: промежуточные результаты после публикации двух приложений

Неразработчик + чат с ИИ + Android Studio: промежуточные результаты после публикации двух приложений

Я бизнес‑аналитик. Пишу мобильные приложения с нуля — без исходных знаний кода, архитектуры, дизайна и маркетинга. Инструменты те же: Claude в чате и копипаст в Android Studio.Э...

Миграция базы данных в Legacy системах

Миграция базы данных в Legacy системах

Миграция базы данных в Legacy системахЕсли ваша система не использует ORMЕсли промышленное окружение вашей Системы находится не у Вас под контролемЕсли нет возможности внедрить ...

Делаю менеджер политик Browser Policy Manager для Firefox. Буду рад обратной связи

Делаю менеджер политик Browser Policy Manager для Firefox. Буду рад обратной связи

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

Рекламный слот

Встроенный блок в статье

Зарезервированный партнерский слот для релевантных инструментов, сервисов и аккуратных редакционных интеграций.

Партнерский слот

Похожие статьи

Еще материалы, которые пересекаются по тегам, источнику или категории.

Когда UI-kit начинает дрейфовать: плагин для WebStorm против поломок React-контрактов

Когда UI-kit начинает дрейфовать: плагин для WebStorm против поломок React-контрактов

В любом зрелом фронтенде проблема редко в том, чтобы написать еще один Button.Проблема начинается позже. Когда у компонента уже есть десятки использований, Storybook, типы, обвя...

Неразработчик + чат с ИИ + Android Studio: промежуточные результаты после публикации двух приложений

Неразработчик + чат с ИИ + Android Studio: промежуточные результаты после публикации двух приложений

Я бизнес‑аналитик. Пишу мобильные приложения с нуля — без исходных знаний кода, архитектуры, дизайна и маркетинга. Инструменты те же: Claude в чате и копипаст в Android Studio.Э...

Еще материалы от Habr

Свежие публикации и продолжение темы от той же редакции.

Открыть страницу источника
Когда UI-kit начинает дрейфовать: плагин для WebStorm против поломок React-контрактов

Когда UI-kit начинает дрейфовать: плагин для WebStorm против поломок React-контрактов

В любом зрелом фронтенде проблема редко в том, чтобы написать еще один Button.Проблема начинается позже. Когда у компонента уже есть десятки использований, Storybook, типы, обвя...

Неразработчик + чат с ИИ + Android Studio: промежуточные результаты после публикации двух приложений

Неразработчик + чат с ИИ + Android Studio: промежуточные результаты после публикации двух приложений

Я бизнес‑аналитик. Пишу мобильные приложения с нуля — без исходных знаний кода, архитектуры, дизайна и маркетинга. Инструменты те же: Claude в чате и копипаст в Android Studio.Э...