Hasso-Plattner-InstitutSDG am HPI
Hasso-Plattner-InstitutDSG am HPI
  
Login
 

Tobias Pape

Efficient Compound Values in Virtual Machines

Zusammengesetzte Werte werden in VM-basierten Programmiersystemen und-sprachen nicht durchgängig unterstützt. Die Bereitstellung von Datenstrukturen mit Wertemerkmalen kann jedoch von Vorteil sein. Einerseits können Programmiersysteme und Sprachen physikalische Größen mit zusammengesetzten Werten, wie beispielsweise bei der Darstellung großer Zahlen, adäquat darstellen und Inkonsistenzen vermeiden. Andererseits können sich Just-in-time-Compiler, die oft in VMS zu finden sind, darauf verlassen, dasszusammengesetzte Werte unveränderlich sind, was eine wichtige Eigenschaft bei der Programmoptimierung ist. In Anbetracht dessen haben zusammengesetzte Werte ein Optimierungspotenzial, das genutzt werden kann, indem sie in VMs so implementiert werden, dass sieeffizient in Speichernutzung und Ausführungszeit sind. Darüber hinaus stehen optimierte zusammengesetzte Werte in VMs vorbestimmten Herausforderungen: Um die Konsistenz zu erhalten, sollte das Programm nicht beobachten können, ob zusammengesetzte Werte durch eine VM in einer optimierten Weise dargestellt werden; eine Optimierung sollte berücksichtigen, dass die Verwendung von zusammengesetzten Werten bestimmte Muster zur Laufzeit aufweisen kann; und dass wertinkompatible Eigenschaften vermindertwerden sollten, die nur aufgrund von Implementierungsbeschränkungen notwendig sind.

Wir schlagen eine Verfahrensweise vor, um gängige Muster der Verwendung von zusammengesetzten Werten zur Laufzeit zu erkennenund zu komprimieren, um die Speichernutzung und Ausführungsgeschwindigkeit zu verbessern. Unser Ansatz identifiziert Muster häufiger zusammengesetzter Wertreferenzen und führt für sie abgekürzte Formen ein. Dies ermöglicht es, mehrere miteinanderverknüpfte zusammengesetzte Werte in einer eingebetteten Art und Weise im Speicher darzustellen, wodurch der Verwaltungsaufwand, der sich aus Metadaten und Objektreferenzen ergibt, reduziert wird. Wir erweitern unseren Ansatz um ein Konzept der eingeschränktenVeränderbarkeit, indem wir Zellen verwenden, die als Barrieren für unseren Ansatz dienen und einen Platz für einen gemeinsamen,schreibenden Zugriff mit der Möglichkeit der Typspezialisierung bieten. Wir entwickeln eine Erweiterung unseres Ansatzes, die es uns ermöglicht, mithilfe unserer ursprünglichen Technik das automatische Entpacken von primitiven geboxten Datentypen auszudrücken. Wirzeigen, dass unser Ansatz vielseitig genug ist, um auch eine andere Optimierungstechnik auszudrücken, die sich auf einzigartige Werte ineinem Programmiersystem, wie beispielsweise Booleans, stützt. Darüber hinaus zeigen wir, wie erlernte Nutzungsmuster und Optimierungen über Programmausführungen hinweg wiederverwendet werden können, wodurch die Auswirkungen der Mustererkennung auf die Leistung reduziert werden.

Wir zeigen in einem Best-Case-Prototyp, dass unser Ansatz umsetzbar ist und auch auf allgemeinere Programmiersysteme wie Racket und Squeak/Smalltalk angewendet werden kann. In mehreren Mikro--Benchmarks haben wir festgestellt, dass unser Ansatzden Speicherverbrauch effektiv reduzieren und die Ausführungsgeschwindigkeit verbessern kann.