Multicore-Software

Fraunhofer-Einrichtung für Systeme der Kommunikationstechnik ESK

© panthermedia

Die zunehmende Verbreitung von Multicore-Prozessoren führt zu einem Paradigmenwechsel in der Software-Entwicklung. Diese können die Rechenleistung deutlich erhöhen, wenn die Software an die parallele Verarbeitung in den Rechenkernen optimal angepasst wird. Während bislang die Software-Performanz durch die steigenden Taktraten der Hardware »automatisch« stieg, ist nun ein erheblicher Aufwand nötig, um die in Form mehrerer Rechenkerne zur Verfügung stehende Rechenleistung auszunützen. Dies betrifft sowohl die Neuentwicklung von Software als auch die Portierung bereits bestehender Software auf neue Multicore-Plattformen.

Entwicklung von Multicore-Software

Die Entwicklung von Software für parallele Systeme ist aufgrund der hohen Komplexität schwer und fehleranfällig. Da die Implikationen einer parallelen Ausführung verschiedener Programmteile vom Programmierer schwer zu erfassen sind und auch die geeigneten Werkzeuge fehlen, bleibt ein wesentlicher Teil des Potentials von Multicore-Prozessoren ungenutzt.

Werden eingebettete Systeme mit Echtzeit-Anforderungen betrachtet, verschärfen sich diese Probleme noch. Durch gemeinsam genutzte Ressourcen innerhalb eines Multicores, z. B. Caches und Speicher, lassen sich kaum Aussagen zum Laufzeitverhalten machen, wie sie im Bereich der sicherheitskritischen Systeme erforderlich sind. Es zeigt sich auch, dass besonders im Embedded-Bereich die bestehenden Entwicklungswerkzeuge nicht ausreichend an die Anforderungen der Multicore-Programmierung angepasst sind.

Der Fokus der Fraunhofer ESK liegt in der Modellierung, Performanzmessung und -analyse als auch in Entwicklungswerkzeugen für Multicore-Systeme. Die Entwicklungswerkzeuge sollen dabei die speziellen Anforderungen für Multicore berücksichtigen, vor allem für Performanzevaluierung, Test und Debugging.

Performanzoptimierung von Multicore-Software

Ziel der Performanzanalyse ist es, die Verursacher zu hoher Antwortzeiten oder zu geringer Durchsätze zu identifizieren, um diese Defizite im weiteren Verlauf zu beheben. Um die internen Abläufe der Software zu erfassen, werden oft Profiler mit instrumentationsbasierten Verfahren genutzt. Sie beeinflussen das Zeitverhalten, weshalb bei ihrer Implementierung besonders viel Wert auf eine geringe Laufzeit gelegt werden muss. Die Beschränkungen von Hardware- und Software-Tracing erschweren zudem die Performanzanalyse von Multicore-Software. So liegt deren Problem zum einen darin, dass Softwareperformanz oft schwer zu messen ist, ohne durch die Instrumentierung die Ergebnisse zu verfälschen.

Zum anderen ist es oft sehr schwer, die genauen Performanzengpässe zu analysieren und die genauen Ursachen im Softwaredesign zu finden. Dies ist Gegenstand einiger Forschungsarbeiten der Fraunhofer ESK mit Industriepartnern, aus denen mehrere Publikationen entstanden sind. Zu erwähnen ist hier das Projekt MucoS, in welchem mit Lantiq die Verbesserung der Toolkette für Multicore-Entwicklung auf eingebetteten Prozessoren untersucht und verbessert wird.