Performance Engineering

Details

Kurzdarstellung

Sowohl die zunehmende Komplexität heutiger Kommunikationssysteme und -geräte als auch die immer kürzer werdenden Innovationszyklen zwingen Systementwickler dazu, die Leistungsfähigkeit ihrer Produkte so früh wie möglich im Entwicklungszyklus zu berücksichtigen. Aus diesem Grund sind Leistungsanforderungen ein wichtiger Teil heutiger Entwicklungsprozesse.

Das "Performance-Engineering" ist ein ganzheitlicher Ansatz, der Leistungsanforderungen von Beginn an als integralen Bestandteil der Entwicklung eines neuen Produktes sieht. Die Entwickler fügen ihren funktionalen Systemmodellen nicht-funktionale Anforderungen hinzu, um sowohl die Leistungsfähigkeit als auch den Leistungsbedarf einzelner Systemkomponenten zu beschreiben. Die Werte dieser Beschreibung können sich dabei auf die Erfahrungen der Entwickler stützen oder durch Messungen an realen Systemen entstehen. Mit Hilfe der nicht-funktionalen Angaben kann das Systemmodel somit zusätzlich auch auf die Erfüllung der Leistungsanforderungen geprüft werden.

Performance Engineering kann aus zwei Perspektiven betrachtet werden. Auf der einen Seite ermöglicht das um Leistungsanforderungen erweiterte Systemmodell dem Entwickler, frühzeitig die Auswirkung von Entwurfsalternativen zu verstehen. Genauso können Flaschenhälse bereits am Modell entdeckt und somit behoben werden, bevor ein Prototyp entsteht. Auf der anderen Seite ist es auf Grund der Schnelllebigkeit der Produkte notwendig, die Leistungsfähigkeit von zukünftigen Plattformen bereits heute zu antizipieren, um Produkte entsprechend zu entwerfen. Dies gilt insbesondere für "embedded" Geräte, die meist über genau für ihren Einsatzzweck zugeschnittene Bausteine verfügen. Hierbei ist es wichtig, dass die Gerätehersteller vorab wissen, welche Eigenschaften eine zukünftige Plattform besitzen soll. In diesem Fall ist es sehr hilfreich, Verbesserungen zu testen, bevor diese in Produktion gehen.

Die "Unified Modelling Language" (UML) ist der heutige de-facto-Standard für Beschreibungssprachen. Zusammen mit dem UML-Profil für "Schedulability, Performance, and Time" (SPT-Profile) kann UML zur Modellierung eines System mit Leistungsanforderungen genutzt werden. Diese werden als sog. "Annotationen" an die funktionalen Elemente des Modells angefügt. Aus einem solchen Modell kann daraufhin ein "Performance Model" erzeugt und analysiert werden. Häufig eingesetzte Modelle sind Warteschlangenmodelle, Petrinetze oder ereignisbasierte Simulationen. Die Wahl des Modells hängt u.a. vom Detailgrad des Systemmodells und dem gewünschten Abstraktionsniveau ab. Zusätzlich können Prototypen verwendet werden, um mit Hilfe von Messungen realistischere Werte zu finden, die als Ergänzung zur Analyse weiterführende Informationen liefern können.

In Zukunft werden SysML, Model-Driven-Architecture und das UML-Profil für "Modeling and Analysis of Real-Time and Embedded systems" (MARTE)" den Einsatz von Performance-Engineering signifikant erleichtern und verbessern.

Der ARM-Mikroprozessor ist das Herzstück der OMAP-Plattform von Texas Instruments. Diese Plattform wird von vielen Herstellern als Grundlage für ihre Produkte eingesetzt. Dazu zählen u.a. Mobiltelefone, DVD-Player, Netzwerkrouter etc. Um neue Geräteentwürfe bereits frühzeitig, noch vor dem Vorhandensein von Prototypen während der Entwicklung zu bewerten, ist es notwendig, die Charakteristika von ARM-Prozessoren und der gesamten OMAP-Plattform zu verstehen. Dies muss auf unterschiedlichen Abstraktionsniveaus geschehen, um zum Stand des Systemmodells zu passen. Ein möglicher Ansatz ist, sog. Ausführungs-Traces von bereits existierenden Anwendungen auf realen Plattformen zu betrachten. Falls über das Verhalten der Anwendung genügend Wissen vorhanden ist (z.B. über die Zeit- und Ressourcenanforderungen etc.), genügt es, ein Prozessormodell einzusetzen, welches sich ausschließlich auf die Simulation der Verarbeitungszeit beschränkt und die tatsächliche Ausführung einzelner Prozessorinstruktionen vernachlässigt. Dieser Ansatz erleichtert die Modellierung, da der Anwendungscode nicht interpretiert werden muss. Durch eine Parametrisierung des Modell können die Entwickler auf einfach Weise überprüfen, welche Auswirkungen eine Modifikation der Plattform auf die eingesetzte Anwendung hat. So lässt sich auf einfach Weise feststellen, wie sich die Anwendung z.B. bei höherem Prozessortakt, größeren Caches oder längerer Prozessor-Pipeline verhält.