Лишние вычисления
Если говорить о производительности вне существующих решений в железе, то интуиция будет подсказывать достаточно простую модель выполнения, когда процессор обрабатывает инструкции, а память поставляет данные, и чем быстрее и то и другое, тем быстрее работает программа. Но процессоры научились выполнять миллиарды опер...
Если говорить о производительности вне существующих решений в железе, то интуиция будет подсказывать достаточно простую модель выполнения, когда процессор обрабатывает инструкции, а память поставляет данные, и чем быстрее и то и другое, тем быстрее работает программа. Но процессоры научились выполнять миллиарды операций в секунду, а память наращивает скорость доступа намного медленнее, и разрыв между скоростью вычислений и доступа к данным стал настолько большим, что именно ожидание памяти, превратилось в главный источник потерь производительности.Ответом на это стало не ускорение памяти, а усложнение самих процессоров, которые перестали быть просто пассивными исполнителями кода и стали решать задачи управления потоком данных: выполнять инструкции вне порядка, переупорядочивать зависимости и на каком-то этапе подошли к идее спекулятивно исполнять код, который, возможно, вообще не понадобится.Предсказание ветвлений стало один из ключевых механизмов в этой системе, которая должна была снять часть времени простоя потока вычислений, но если удачное предсказание стало возможностью начать дорогие загрузки заранее и скрыть их латентность, то ошибка предсказания скрывает не только потерянные такты, но и зря использованные ресурсы памяти: шину, буферы загрузки, пропускную способность контроллера и сами кэш-линии, которые могли бы быть заняты полезными данными.Именно здесь возникает интересный и неочевидный компромисс, позволяющий с одной стороны, писать branchless-код и полностью избавиться от ошибок предсказания, а с другой лишающий процессор возможности работать на опережение и запускать доступ к памяти раньше времени. Но в зависимости от того, где находятся данные в памяти выигрывать будет то один, то другой подход.Если вы собираетесь писать branchless код, надо помнить как именно спекулятивное выполнение и предсказание ветвлений взаимодействуют с подсистемой памяти, потому что “лишняя работа” иногда ускоряет программу, а в некоторых случаях попытка сделать код более “предсказуемым” приводит к обратному эффекту.
Связанные теги
Компании и люди
Линия сюжета
Продолжить следить за темой
Переходите к связанным материалам, страницам сущностей и активным линиям сюжета.
Идеальный Store в Pinia (Vue)
Если спустя время у вас происходило такое, что компонент-стор разрастался, а каждое добавление или исправление логики уже пугало, то эта статья для вас.Сегодня я не буду читать ...
Когда UI-kit начинает дрейфовать: плагин для WebStorm против поломок React-контрактов
В любом зрелом фронтенде проблема редко в том, чтобы написать еще один Button.Проблема начинается позже. Когда у компонента уже есть десятки использований, Storybook, типы, обвя...
Неразработчик + чат с ИИ + Android Studio: промежуточные результаты после публикации двух приложений
Я бизнес‑аналитик. Пишу мобильные приложения с нуля — без исходных знаний кода, архитектуры, дизайна и маркетинга. Инструменты те же: Claude в чате и копипаст в Android Studio.Э...
Решение ошибки You do not have required role or permission to perform an operation
Решение ошибки You do not have required role or permission to perform an operation при загрузке в TestFlight через XcodeСтолкнулся с ошибкой при отправке сборки в TestFlight из ...
Миграция базы данных в Legacy системах
Миграция базы данных в Legacy системахЕсли ваша система не использует ORMЕсли промышленное окружение вашей Системы находится не у Вас под контролемЕсли нет возможности внедрить ...
Делаю менеджер политик Browser Policy Manager для Firefox. Буду рад обратной связи
Идея этого проекта пришла мне в голову около семи лет назад, но до реализации я добрался только сейчас, т.к. есть некоторое время на это, пока ищу новую работу. Ну, и важно упом...
Страницы сущностей
Рекламный слот
Встроенный блок в статье
Зарезервированный партнерский слот для релевантных инструментов, сервисов и аккуратных редакционных интеграций.
Похожие статьи
Еще материалы, которые пересекаются по тегам, источнику или категории.
Идеальный Store в Pinia (Vue)
Если спустя время у вас происходило такое, что компонент-стор разрастался, а каждое добавление или исправление логики уже пугало, то эта статья для вас.Сегодня я не буду читать ...
Когда UI-kit начинает дрейфовать: плагин для WebStorm против поломок React-контрактов
В любом зрелом фронтенде проблема редко в том, чтобы написать еще один Button.Проблема начинается позже. Когда у компонента уже есть десятки использований, Storybook, типы, обвя...
Неразработчик + чат с ИИ + Android Studio: промежуточные результаты после публикации двух приложений
Я бизнес‑аналитик. Пишу мобильные приложения с нуля — без исходных знаний кода, архитектуры, дизайна и маркетинга. Инструменты те же: Claude в чате и копипаст в Android Studio.Э...
Решение ошибки You do not have required role or permission to perform an operation
Решение ошибки You do not have required role or permission to perform an operation при загрузке в TestFlight через XcodeСтолкнулся с ошибкой при отправке сборки в TestFlight из ...
Еще материалы от Habr
Свежие публикации и продолжение темы от той же редакции.
Идеальный Store в Pinia (Vue)
Если спустя время у вас происходило такое, что компонент-стор разрастался, а каждое добавление или исправление логики уже пугало, то эта статья для вас.Сегодня я не буду читать ...
Когда UI-kit начинает дрейфовать: плагин для WebStorm против поломок React-контрактов
В любом зрелом фронтенде проблема редко в том, чтобы написать еще один Button.Проблема начинается позже. Когда у компонента уже есть десятки использований, Storybook, типы, обвя...
Неразработчик + чат с ИИ + Android Studio: промежуточные результаты после публикации двух приложений
Я бизнес‑аналитик. Пишу мобильные приложения с нуля — без исходных знаний кода, архитектуры, дизайна и маркетинга. Инструменты те же: Claude в чате и копипаст в Android Studio.Э...
Решение ошибки You do not have required role or permission to perform an operation
Решение ошибки You do not have required role or permission to perform an operation при загрузке в TestFlight через XcodeСтолкнулся с ошибкой при отправке сборки в TestFlight из ...