C++: Speichermodell

Grundlagen des Vertrags

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Auf oberster Ebene ist das C++-Speichermodell ein Vertrag zwischen dem System und dem Programmierer. Das System garantiert optimierte Programme, der Programmierer sorgt für die richtigen Rahmenbedingungen.
03:02

Transkript

In dieser Lektion möchte ich Ihnen die Grundlagen für den Vertrag zwischen Ihnen, dem Programmierer, und dem System geben. Der Vertrag. Der Vertrag hat zwei Komponenten. Einerseits Sie als Entwickler, und andererseits das System. Ihre Regeln, die Sie zu respektieren haben, sind Regeln zu: atomaren Operationen, zur parziellen Ordnung von Operationen, und zur Speichersichtbarkeit. Atomare Operationen heißt: Sie müssen respektieren, welche Operationen atomar, bzw. auch nicht atomar sind. Sie müssen weiter respektieren, welche partielle Ordnung von Operationen gilt. Das heißt: welche Annahmen Sie treffen können, in welcher Reihenfolge welche Instruktionen ausgeführt werden. Und da gibt es noch Regeln zur Speichersichtbarkeit. Da geht es darum, dass, wenn in einen Thread ein Datum "A" geschrieben wird, wann in einem anderen Thread dieses Datum "A" zur Verfügung steht. Das war die eine Komponente. Die andere Komponente ist das System. Das System besteht aus dem Compiler, dem Prozessor und den Speicherebenen. Und das Trickreiche an dem Ganzen ist, dass jede dieser drei Komponenten versucht, ein möglichst optimiertes Programm zu erzeugen. Was heißt das konkret? Das heißt konkret, dass der Compiler, zum Beispiel, "loop unrolling", "inlining" und "const propagation" anwendet. "Loop unrolling" heißt, der Compiler wird versuchen, wenn es Sinn ergibt, Schleifen in-place auszurollen. Oder er wird beim "inlining" Funktionsaufrufe durch den Funktionskörper ersetzen. Und dann gibt es noch "const propagation", zum Beispiel. Bei "const propagation" geht es darum, dass Konstanten mit ihren Werten ersetzt worden. Aber auch der Prozessor will optimieren. So kann der Prozessor durchaus Instruktionen eliminieren oder auch umsortieren. Damit kommen wir zur dritten Komponente, den Speicherebenen. Die Speicherebenen hängen natürlich schwer von der verwendeten Architektur ab, aber für gewöhnlich haben sie einen "write buffer" and drei verschiedene Caches: L1, L2, L3. Das heißt, jede cpu versucht erstmal lokal in die "write buffer" zu schreiben oder auch in die L1, L2, L3 Caches, bevor der Wert tatsächlich im Hauptspeicher landet, so dass eine andere cpu, auf deren andere Thread unter Umständen läuft, den aktuellen Wert sieht. Und da können Sie sich vorstellen, dass man da strenge Regeln benötigt, damit jeder andres Thread die aktuellen Werte sieht. In dieser Lektion habe ich Ihnen die Grundlagen für den Vertrag vorgestellt. Insbesondere geht es bei dem Vertrag darum, dass sie ein hochoptimiertes Programm bekommen, das auf ihrer Plattform zugeschnitten ist. Und der Vertrag besteht zwischen Ihnen, dem Entwickler, und dem System, bestehend aus den Compiler, dem Prozessor, und den Speicherebenen.

C++: Speichermodell

Verstehen und nutzen Sie die Konzepte und die zugrundeliegenden TEchnolgien des Speichermodells in C++.

1 Std. 29 min (29 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.11.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!