В вычислительной технике проектирование , ориентированное на данные, представляет собой подход к оптимизации программ, мотивированный эффективным использованием кэша ЦП , часто используемый при разработке видеоигр . [1] Подход заключается в том, чтобы сосредоточиться на структуре данных, разделяя и сортируя поля в соответствии с тем, когда они нужны, и думать о преобразованиях данных. Сторонники включают Майка Эктона, [2] Скотта Мейерса , [3] и Джонатана Блоу .
Параллельный массив (или структура массивов ) является основным примером дизайна, ориентированного на данные. Он противопоставляется массиву структур, типичному для объектно-ориентированного дизайна.
Определение проектирования, ориентированного на данные, как парадигмы программирования можно считать спорным, поскольку многие считают, что его можно использовать бок о бок с другой парадигмой [4] , но из-за акцента на компоновке данных оно также несовместимо с большинством других парадигм [1] .
Эти методы стали особенно популярны в середине-конце 2000-х годов во время седьмого поколения игровых консолей , включавших консоли PlayStation 3 (PS3) и Xbox 360 на базе IBM PowerPC . Исторически игровые консоли часто имеют относительно слабые центральные процессоры (ЦП) по сравнению с топовыми настольными компьютерами. Это выбор дизайна, чтобы выделить больше мощности и транзисторного бюджета графическим процессорам ( ГП). Например, ЦП 7-го поколения не производились с современными процессорами внеочередного выполнения , а вместо этого использовали процессоры по порядку с высокими тактовыми частотами и глубокими конвейерами . Кроме того, большинство типов вычислительных систем имеют основную память, расположенную в сотнях тактов от элементов обработки . Кроме того, поскольку ЦП стали быстрее наряду со значительным увеличением емкости основной памяти, наблюдается огромное потребление данных, что увеличивает вероятность промахов кэша в общей шине , иначе известное как узкое место фон Неймана . Следовательно, для управления производительностью использовались методы локальности ссылок , требующие улучшения шаблонов доступа к памяти для устранения узкого места. Некоторые из проблем с программным обеспечением были аналогичны тем, которые возникали на Itanium , и требовали развертывания цикла для предварительного планирования.
This section possibly contains original research. (September 2021) |
Утверждается, что традиционные принципы проектирования объектно-ориентированного программирования (ООП) приводят к плохой локальности данных, [5] [6] тем более, если используется полиморфизм времени выполнения ( динамическая диспетчеризация ) (что особенно проблематично на некоторых процессорах). [7] [1] Хотя ООП, по-видимому, «организует код вокруг данных», на самом деле он организует исходный код вокруг типов данных , а не физически группирует отдельные поля и массивы в эффективном формате для доступа определенными функциями. Более того, он часто скрывает детали макета под слоями абстракции , в то время как программист, ориентированный на данные, хочет учитывать это в первую очередь.