Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В вычислительных , дизайн ориентированный на данные является оптимизация программ подход мотивируется эффективного использования в кэш - памяти процессора , используемого в видеоигровой развития. [1] Подход состоит в том, чтобы сосредоточиться на структуре данных, разделении и сортировке полей в зависимости от того, когда они необходимы, и подумать о преобразованиях данных. Инициаторы включают Майк Актон, [2] Скотт Мейерс , [3] и Jonathan Blow .

Мотивы [ править ]

Эти методы стали особенно популярны в середине конце 2000 - х во время седьмого поколения игровых консолей , которые включены в IBM PowerPC на базе PlayStation 3 (PS3) и Xbox 360 консолей. Исторически сложилось так, что игровые приставки часто имеют относительно слабые центральные процессоры (ЦП) по сравнению с аналогами настольных компьютеров высшего класса. Этот вариант дизайна позволяет выделить больше мощности и транзисторов для графических процессоров (ГП). Например, процессоры 7-го поколения не производились с современными процессорами исполнения вне очереди, а вместо этого использовалиисправные процессоры с высокими тактовыми частотами и глубокими конвейерами . Кроме того, большинство типов вычислительных систем имеют основную память, расположенную на расстоянии сотен тактов от обрабатывающих элементов . Кроме того, поскольку процессоры стали быстрее наряду со значительным увеличением объема основной памяти, наблюдается огромное потребление данных, которое увеличивает вероятность промахов кеша на общей шине , иначе известное как узкое место фон Неймана . Следовательно, для управления производительностью использовалась локальность ссылочных методов, что требовало улучшения шаблонов доступа к памяти.устранить узкие места. Некоторые проблемы с программным обеспечением также были аналогичны тем, которые встречались на Itanium , и требовали развертывания цикла для предварительного планирования.

Контраст с ориентацией объекта [ править ]

Утверждается, что традиционные принципы проектирования объектно-ориентированного программирования (ООП) приводят к плохой локальности данных, тем более, если используется полиморфизм времени выполнения ( динамическая отправка ) (что особенно проблематично для некоторых процессоров). [4] [5] Хотя кажется, что ООП «организует код вокруг данных», практика совершенно иная. ООП на самом деле представляет собой организацию исходного кода вокруг типов данных, а не физическую группировку отдельных полей и массивов в эффективном формате для доступа определенных функций. Более того, он часто скрывает детали макета под слоями абстракции , в то время как программист, ориентированный на данные, хочет учитывать это в первую очередь.

См. Также [ править ]

  • Кэш процессора
  • Программирование, управляемое данными
  • Система компонентов сущности
  • Шаблон доступа к памяти
  • Unity DOTS
  • Разработка видеоигр

Ссылки [ править ]

  1. ^ Llopis, Noel (4 декабря 2009). «Дизайн, ориентированный на данные» . Дизайн, ориентированный на данные (или почему вы можете стрелять себе в ногу с помощью ООП) . Проверено 17 апреля 2020 года .
  2. ^ «CppCon 2014: Майк Эктон« Data-Oriented Design and C ++ » » .
  3. ^ "code :: dive конференция 2014 - Скотт Мейерс: Кеши ЦП и почему вас это волнует" .
  4. ^ «Что не так с объектно-ориентированным дизайном? Где в этом вред?» .описывает проблемы с вызовами виртуальных функций, например, промахи i-cache
  5. ^ «Дизайн, ориентированный на данные - почему вы можете стрелять себе в ногу с помощью ООП» .