402
7 Optimierung
Die Ansätze von Verma setzen voraus, dass die Prozesse (bzw. Threads) zur Übersetzungszeit bekannt ist. Pyka et al. [463] beschreiben ein Verfahren, bei dem Prozesse dynamisch entstehen und beendet werden können sowie eine Laufzeit-SPMZuordnung, die durch einen im Betriebssystem integrierten SPM-Manager (SPMM)
durchgeführt wird. Damit gelingt es, Speicherplatz für vorcompilierte Bibliotheken
im SPM zuzuordnen. Leider benötigt Pykas Algorithmus eine zusätzliche Indirektionsebene. Trotz des Aufwands durch die indirekte Adressierung konnte der
Energieverbrauch um 25%-35% im Vergleich zu einem 4-fach mengenassoziativen
Cache reduziert werden.
Diese zusätzliche indirekte Adressierung kann vermieden werden, wenn eine
Speicherverwaltungseinheit (engl. Memory Management Unit (MMU)) verfügbar
ist. Egger et al. [149] entwickelten eine Technik, die MMUs ausnutzt: Zur Übersetzungszeit werden Codeabschnitte danach klassifiziert, ob sie von einer Zuordnung
in den SPM profitieren oder nicht. Der vom SPM profitierende Code wird in einem
bestimmten Bereich im virtuellen Adressraum gespeichert. Zu Anfang ist dieser Bereich nicht auf physikalischen Speicher abgebildet. Damit tritt ein Seitenfehler auf,
sobald der Code zum ersten Mal ausgeführt wird. Die Seitenfehlerbehandlung ruft
dann den SPMM auf und dieser allokiert (und deallokiert) Speicherplatz im SPM,
wobei jeweils die Umsetzungstabellen von virtuellen zu physikalischen Adressen bei
Bedarf aktualisiert werden. Dieses Verfahren ist für die Behandlung von Code entworfen worden und ist in der Lage, dynamisch variable Mengen von Anwendungen
zu unterstützen. Leider entspricht die Größe von aktuellen SPMs lediglich einigen
wenigen Einträgen in aktuellen Seitentabellen, sodass die SPM-Zuordnung relativ
grobgranular bleibt.
Unterstützung verschiedener Architekturen und Zielfunktionen
Bislang haben wir lediglich verschiedene Formen der Zuordnung von SPMSpeicherplatz betrachtet. Die verschiedenen Architekturen bilden eine weitere Dimension in der Speicherplatzallokation. Implizit haben wir bislang Systeme mit
einem einzelnen Rechenkern, einer einzigen Ebene der Speicherhierarchie und mit
einem einzigen SPM betrachtet. Dabei existieren auch andere Architekturen. Beispielsweise können hybride Systeme sowohl Cache- wie auch SPM-Speicher enthalten. Wir können versuchen, Cachefehlerraten zu reduzieren, indem wir im Fall
von Cachekonflikten selektiv SPM-Speicher zuordnen [281, 612, 92]. Wir können
auch verschiedene Speichertechnologien haben, wie Flash-Speicher oder anderen
nicht-flüchtigen Speicher [562]. Für Flash-Speicher ist es wichtig, eine übermäßige Abnutzung (engl. wear-out) einzelner Speicherbereiche durch ein gleichmäßiges
Verteilen der Schreibvorgänge (engl. load balancing) zu vermeiden.
SPMs können möglicherweise von mehreren Rechenkernen genutzt werden. Auch
kann es mehrere Ebenen der Speicherhierarchie geben, von denen eventuell einige
von mehreren Kernen gemeinsam genutzt werden. Liu et al. [350] haben einen
ILP-basierten Ansatz für eine Optimierung für eine solche Architektur beschrieben.
7 Optimierung
Die Ansätze von Verma setzen voraus, dass die Prozesse (bzw. Threads) zur Übersetzungszeit bekannt ist. Pyka et al. [463] beschreiben ein Verfahren, bei dem Prozesse dynamisch entstehen und beendet werden können sowie eine Laufzeit-SPMZuordnung, die durch einen im Betriebssystem integrierten SPM-Manager (SPMM)
durchgeführt wird. Damit gelingt es, Speicherplatz für vorcompilierte Bibliotheken
im SPM zuzuordnen. Leider benötigt Pykas Algorithmus eine zusätzliche Indirektionsebene. Trotz des Aufwands durch die indirekte Adressierung konnte der
Energieverbrauch um 25%-35% im Vergleich zu einem 4-fach mengenassoziativen
Cache reduziert werden.
Diese zusätzliche indirekte Adressierung kann vermieden werden, wenn eine
Speicherverwaltungseinheit (engl. Memory Management Unit (MMU)) verfügbar
ist. Egger et al. [149] entwickelten eine Technik, die MMUs ausnutzt: Zur Übersetzungszeit werden Codeabschnitte danach klassifiziert, ob sie von einer Zuordnung
in den SPM profitieren oder nicht. Der vom SPM profitierende Code wird in einem
bestimmten Bereich im virtuellen Adressraum gespeichert. Zu Anfang ist dieser Bereich nicht auf physikalischen Speicher abgebildet. Damit tritt ein Seitenfehler auf,
sobald der Code zum ersten Mal ausgeführt wird. Die Seitenfehlerbehandlung ruft
dann den SPMM auf und dieser allokiert (und deallokiert) Speicherplatz im SPM,
wobei jeweils die Umsetzungstabellen von virtuellen zu physikalischen Adressen bei
Bedarf aktualisiert werden. Dieses Verfahren ist für die Behandlung von Code entworfen worden und ist in der Lage, dynamisch variable Mengen von Anwendungen
zu unterstützen. Leider entspricht die Größe von aktuellen SPMs lediglich einigen
wenigen Einträgen in aktuellen Seitentabellen, sodass die SPM-Zuordnung relativ
grobgranular bleibt.
Unterstützung verschiedener Architekturen und Zielfunktionen
Bislang haben wir lediglich verschiedene Formen der Zuordnung von SPMSpeicherplatz betrachtet. Die verschiedenen Architekturen bilden eine weitere Dimension in der Speicherplatzallokation. Implizit haben wir bislang Systeme mit
einem einzelnen Rechenkern, einer einzigen Ebene der Speicherhierarchie und mit
einem einzigen SPM betrachtet. Dabei existieren auch andere Architekturen. Beispielsweise können hybride Systeme sowohl Cache- wie auch SPM-Speicher enthalten. Wir können versuchen, Cachefehlerraten zu reduzieren, indem wir im Fall
von Cachekonflikten selektiv SPM-Speicher zuordnen [281, 612, 92]. Wir können
auch verschiedene Speichertechnologien haben, wie Flash-Speicher oder anderen
nicht-flüchtigen Speicher [562]. Für Flash-Speicher ist es wichtig, eine übermäßige Abnutzung (engl. wear-out) einzelner Speicherbereiche durch ein gleichmäßiges
Verteilen der Schreibvorgänge (engl. load balancing) zu vermeiden.
SPMs können möglicherweise von mehreren Rechenkernen genutzt werden. Auch
kann es mehrere Ebenen der Speicherhierarchie geben, von denen eventuell einige
von mehreren Kernen gemeinsam genutzt werden. Liu et al. [350] haben einen
ILP-basierten Ansatz für eine Optimierung für eine solche Architektur beschrieben.
