Ориентированный на данные дизайн
Эта статья нуждается в дополнительных цитатах для проверки . ( июль 2020 г. ) |
В вычислительной технике проектирование , ориентированное на данные, — это подход к оптимизации программ, основанный на эффективном использовании кэша ЦП , часто используемый при разработке видеоигр . [ 1 ] Подход заключается в том, чтобы сосредоточиться на расположении данных, разделении и сортировке полей в зависимости от того, когда они необходимы, а также подумать о преобразовании данных. Среди сторонников - Майк Эктон, [ 2 ] Скотт Мейерс , [ 3 ] и Джонатан Блоу .
Параллельный массив (или структура массивов ) является основным примером проектирования, ориентированного на данные. Он контрастирует с набором структур, типичных для объектно-ориентированных проектов.
Определение дата-ориентированного проектирования как парадигмы программирования может показаться спорным, поскольку многие считают, что его можно использовать бок о бок с другой парадигмой. [ 4 ] но из-за акцента на размещении данных он также несовместим с большинством других парадигм. [ 1 ]
Мотивы
[ редактировать ]Эти методы стали особенно популярными в середине-конце 2000-х годов во время седьмого поколения игровых консолей , включая IBM PowerPC на базе консоли PlayStation 3 (PS3) и Xbox 360 . Исторически сложилось так, что игровые консоли часто имеют относительно слабые центральные процессоры (ЦП) по сравнению с лучшими аналогами настольных компьютеров. Это выбор конструкции, позволяющий выделить больше мощности и транзисторного ресурса графическим процессорам (GPU). Например, процессоры 7-го поколения не производились с современными процессорами исполнения вне порядка , а вместо этого использовали процессоры с выдержкой порядка с высокими тактовыми частотами и глубокими конвейерами . Кроме того, в большинстве типов вычислительных систем основная память расположена на расстоянии сотен тактов от процессорных элементов . Кроме того, поскольку процессоры стали быстрее наряду со значительным увеличением объема основной памяти, происходит массовое потребление данных, что увеличивает вероятность промахов кэша в общей шине , иначе называемой узким местом фон Неймана. . Следовательно, локальные эталонные для контроля производительности использовались методы, что требовало улучшения шаблонов доступа к памяти для устранения узких мест. Некоторые программные проблемы были аналогичны тем, которые наблюдались на Itanium , и требовали развертывания цикла для предварительного планирования.
Контраст с ориентацией объекта
[ редактировать ]![]() | Возможно, этот раздел содержит оригинальные исследования . ( сентябрь 2021 г. ) |
Утверждается, что традиционные объектно-ориентированного программирования (ООП) приводят к плохой локальности данных, принципы [ 5 ] [ 6 ] тем более, если полиморфизм времени выполнения ( динамическая диспетчеризация ) (что особенно проблематично на некоторых процессорах). используется [ 7 ] [ 1 ] Хотя ООП, кажется, «организует код вокруг данных», на самом деле оно организует исходный код вокруг типов данных , а не физически группирует отдельные поля и массивы в эффективном формате для доступа к ним определенных функций. Более того, он часто скрывает детали макета под слоями абстракции , а программист, ориентированный на данные, хочет учитывать это в первую очередь.
См. также
[ редактировать ]- Кэш процессора
- Программирование, управляемое данными
- Система компонентов сущности
- Схема доступа к памяти
- Разработка видеоигр
Ссылки
[ редактировать ]- ^ Jump up to: а б с Ллопис, Ноэль (4 декабря 2009 г.). «Информационно-ориентированный дизайн» . Data-Oriented Design (или почему вы можете выстрелить себе в ногу с помощью ООП) . Проверено 17 апреля 2020 г.
- ^ «CppCon 2014: Майк Эктон «Data-Oriented Design и C++» » . Ютуб .
- ^ «code::dive Conference 2014 — Скотт Мейерс: Кэш процессора и почему вас это волнует» . Ютуб .
- ^ Ричард Фабиан (8 октября 2018 г.). «Информационно-ориентированный дизайн» . www.dataorienteddesign.com . Проверено 20 декабря 2023 г.
- ^ «КОНФЕРЕНЦИЯ ДЛЯ РАЗРАБОТЧИКОВ INTEL ® HPC ПОЛУЧИТЕ ВАШЕ ПОНИМАНИЕ. ПОВЫШИТЕ ЭФФЕКТИВНОСТЬ ВЕКТОРИЗАЦИИ С ИСПОЛЬЗОВАНИЕМ ШАБЛОНА РАЗМЕЩЕНИЯ ДАННЫХ INTEL SIMD (INTEL SDLT)» (PDF) .
- ^ Хольгер Хоманн; Франсуа Лаэнен (2018). «SoAx: универсальная структура массивов C++ для обработки частиц в кодах HPC». Компьютерная физика. Коммуникации . 224 : 325–332. arXiv : 1710.03462 . Бибкод : 2018CoPhC.224..325H . дои : 10.1016/j.cpc.2017.11.015 . S2CID 2878169 .
- ^ «Что плохого в объектно-ориентированном проектировании? Какой в нем вред?» . описывает проблемы с вызовами виртуальных функций, например, промахи i-cache