Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Datenorientiertes Design – Wikipedia
Datenorientiertes Design – Wikipedia
aus Wikipedia, der freien Enzyklopädie

Datenorientiertes Design (DOD) ist ein Ansatz zur Optimierung von Computerprogrammen, der die effiziente Nutzung des CPU-Caches anstrebt und beispielsweise bei der Entwicklung von Computerspielen[1][2] und Webbrowsern[3] Verwendung findet. Die Methode des datenorientierten Designs beinhaltet, das Speicherlayout aller Strukturen im Programm so zu planen, dass Daten, welche von einer Prozedur gebraucht werden, möglichst nahe beieinander im Speicher liegen (Speicherlokalität).

Verfechter dieses Paradigmas sind unter anderem Stoyan Nikolov[3], Mike Acton[4] und Scott Meyers[5].

Motivation

[Bearbeiten | Quelltext bearbeiten]

DOD wurde Mitte bis Ende der 2010er Jahre, während der 7. Generation von Spielkonsolen, Xbox 360, PlayStation 3 und Wii, populär. Historisch gesehen haben Spielkonsolen oft relativ schwache CPUs, wenn sie mit den zeitgenössischen Desktop-Computern verglichen werden, dafür jedoch stärkere Grafikprozessoren (GPUs). Um trotzdem möglichst viel aus den CPUs herauszuholen, muss der sogenannte Von-Neumann’sche Flaschenhals umgangen werden. Mit dem Von Neumann’sche Flaschenhals ist die Problematik gemeint, dass moderne CPUs wesentlich schneller Daten verarbeiten als die vergleichsweise langsamen Hauptspeicher laden können. Dieses Problem versucht man unter anderem mit Technologien wie schnellen Cache-Speichern, die direkt in die CPU integriert sind, zu lösen. Allerdings kommt es häufig vor, dass Daten, die die CPU anfordert, nicht im Cache geladen sind und somit eine Anfrage an den Hauptspeicher erfolgen muss. Dies wird als cache-miss bezeichnet. Um diese zu minimieren, sollten Daten, die von der CPU gleichzeitig oder zeitlich nahe beieinander verwendet werden, im Speicher nahe bei einander liegen (Speicherlokalität), um so Speicherzugriffsmuster zu verbessern und den Effekt des Flaschenhalses zu minimieren.

Gegensatz zur Objektorientierung

[Bearbeiten | Quelltext bearbeiten]

Die Prinzipien der objektorientierten Programmierung können in schlechter Datenlokalität münden, heterogene, verstreute Daten werden in Objekten zusammengefasst. Insbesondere kann die Nutzung von Polymorphie dazu beitragen, dass Objekte mit heterogenen, verstreute Daten in stark unterschiedlichen Kontexten verarbeitet werden. In der Programmiersprache C++ ist dieses Konzept bspw. mittels vTables implementiert, was dazu führt, dass zur Ausführung einer virtuellen Methode ein Pointer auf eine Speicheradresse aufgelöst werden muss[6]. Wenn virtuelle Methoden vieler einzelner Objekte aufgerufen werden müssen, werden viele Pointer mehrfach aufgelöst, was die Caches füllt und die Laufzeit negativ beeinträchtigt.

Bei Nutzung des Datenorientierten Designs (DOD) wird die Nutzung virtueller Methoden vermieden. Stattdessen werden Daten im Verbund organisiert und eine externe Funktion, Methode oder Subroutine wird genutzt, um die gewünschte Operation auf alle Objekte hintereinander weg anzuwenden, womit das mehrfache Auflösen von Pointern umgangen wird.[7] Kurzgefasst wird versucht, Daten, die häufig gemeinsamen gebraucht werden, so auf Verbunddatentypen und Arrays zu verteilen, dass sie im Speicher nahe beieinander liegen (Speicherlokalität), um effizientere Verarbeitung zu ermöglichen.

Siehe auch

[Bearbeiten | Quelltext bearbeiten]
  • CPU-Cache
  • Objektorientierte Programmierung

Literatur

[Bearbeiten | Quelltext bearbeiten]
  • Noel Llopis: High‐Performance Programming with Data‐Oriented Design in: Eric Lengyel: Game Engine Gems 2, CRC Press, 2011, S. 251 ff. [3]

Weblinks

[Bearbeiten | Quelltext bearbeiten]
  • Memory access pattern
  • Unity-DOTS

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. ↑ Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP). Noel Llopis, 4. Dezember 2009; abgerufen im 1. Januar 1 (englisch). 
  2. ↑ Robert Nystrom: Design Patterns für die Spieleprogrammierung, MITP-Verlag, 2015, S. 526 [1]
  3. ↑ a b CppCon 2018: Stoyan Nikolov “OOP Is Dead, Long Live Data-oriented Design”. In: YouTube. CppCon; abgerufen im 1. Januar 1 (englisch). 
  4. ↑ CppCon 2014: Mike Acton "Data-Oriented Design and C++". In: YouTube. CppCon; abgerufen im 1. Januar 1 (englisch). 
  5. ↑ code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care. In: YouTube. NOKIA Technology Center Wrocław; abgerufen im 1. Januar 1 (englisch). 
  6. ↑ Richard Fabian: What's wrong with OOP? In: dataorienteddesign.com. Data Orientated Design, 25. Juni 2013, abgerufen am 8. Juli 2020 (englisch). 
  7. ↑ Norman F. Schneidewind: Computer, Network, Software, and Hardware Engineering with Applications, John Wiley & Sons, 2012, S. 266 [2]
Abgerufen von „https://de.teknopedia.teknokrat.ac.id/w/index.php?title=Datenorientiertes_Design&oldid=258265244“
Kategorien:
  • Programmierung
  • Computerspiel-Entwicklung

  • indonesia
  • Polski
  • العربية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصرى
  • Nederlands
  • 日本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українська
  • Tiếng Việt
  • Winaray
  • 中文
  • Русский
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id